PIC kafasına göre 1 adet 0x00 gönderiyor.

Başlatan Pyrodigy, 13 Ağustos 2014, 01:25:46

Pyrodigy

Merhaba arkadaşlar.
Böyle birşey başınıza geldimi bilmiyorum ancak 16F li devremde sisteme ilk enerji verildiğinde 1 adet 0x00 byte TX ile gönderiliyor. Asm kodlarımı defalarca kontrol ettim ayrıca Similasyonda da bir sıkıntı gözükmüyor ama bu durum iyice sinirlerimi bozmaya başladı. Acaba böyle bir problem ile karşılaşan oldumu ? Ne önerirsiniz ? TXREG nasıl kendi kendine 0x00 yollar anlamadım.
Bu arada setup kısmında RX kesmesi aktif fakat TX kesmesi aktif değil. 
Reşekkürler.
Persistance is the name of the game in this business....

Kabil ATICI

bir tx örneği  bakacak olursak
movlw 'A' ;load 'A'
movwf TXREG ;into TXREG
btfss PIR1,TXIF ;test if TXREG empty
goto $-1 ;wait until TXREG empty

buradan sadece bir verinin gönderilmesi için
movlw 'A' ;load 'A'
movwf TXREG ;into TXREG
yeterli.

programınızı bilemiyorum, sadece TX tetikleyecek bir şey olabilir. Kesme olup olmaması önemli değil.
ambar7

Tagli

Seri port donanımı ne durumda? Arada MAX232 var mı? Bana sanki PIC enerji alana kadar hat havada kalıyormuş gibi geldi. MAX232 yoksa ve iletişim TTL seviyesinde ise, hat üzerine pullup direnci koymak gerekebilir. MAX232'nin içinde zaten vardı pullup dirençleri diye aklımda kalmış.

Ayrıca tabi kodu da görmek lazım. Sorun yazılımdan kaynaklanıyor da olabilir.
Gökçe Tağlıoğlu

quarko

Sorun donanımsal olabilir. UART çıkışını RS485 e dönüştürüp kullanıyorsanız, A ve B uçlarında pull-up dirençleri varsa çıkarıp, yoksa takıp deneyin. Benim benzer sorunu yaşadığım sistemde, pull-up dirençleri vardı. Gönderdiğim her data paketinin başına 0x00 ekliyordu. Pull-up dirençlerini çıkardığımızda düzelmişti. TI ın, RS485 converter entegresini kullanıyordum bu arada.
"Aslanlar kendi hikayelerini yazmadıkça, avcıların kahramanlık hikayelerini dinlemek zorundayız."

Okan AKÇA

Ilk enerji aninda 0x00  rs 485  hattinda gönderiyor bende karsilasmistim benim icin sorun teskil etmemisti main fonksiyonu basinda  tx pinini low cekirek deneyiniz

skara1214

Alıntı yapılan: Tagli - 13 Ağustos 2014, 07:31:19
pullup direnci koymak gerekebilir.
tagli hoca doğru söylemiş ben de genellikle pull up kullanırım böyle birşey başıma gelmedi
Herkes ölür ama herkes gerçekten yaşamaz

OG

0 degerini USART gondermiyor.
Durum şu,
TX pini açılışta lowa düşüyor. LOW Süresi gönderim hızınıza göre yeterince uzun sa bu Byte 0 demektir. Gönderim hızına göre LOW dan daha erken kurtulursa bu 0 degeri değil de başka herhengi bir değer olarak görünecek.

1 direnç ile pullup yapın.

Yazılımında taa en başına TX pini için PORTx.y = 1 olarak yazın sonra TRISx.y = 0 olarak çıkış durumuna getirin.
Usart ilk deklarasyonununda usart kapalı RCSTA.7 = 0 olsun

Usart kapalıyken bu pini H veya L yapabilirsiniz, ama usartı açmadan önce H olsun. Daha doğrusu bu pini başka bir amaç için kullanmıyorsanız en başta yaptığınız H durumunu hiç oynamayın. Usart kapalıyken H olan pin usart açıldığında da H da kalacaktır ve herhangi bir data gönderimi yapmayacaktır.
FORUMU İLGİLENDİREN KONULARA ÖM İLE CEVAP VERİLMEZ.

Pyrodigy

#7
Arkadaşlar değerli zamanınızı ayırdığınız ve tüm yanıtlar için sizlere çok teşekkür ederim. TX/RX pinleri sizlerinde düşündüğü gibi RS485 entegresini kontrol ediyor. 57600 bps de ve 18.432 MHZ de yeni nesil midrange 16F1526 ile çalışıyorum.
Yazılımda ilk etapta uzun bir setup kısmına giriyorum. Önce register ayarları, bacakların giriş ve çıkışları ve daha sonra USART arayüzü ayarlarını yapıyorum. Setup ile ilgili kodlarım aşağıdadır.
Bu TX pin'i  USART'ın setup kısmını tamamlanıncaya kadar LOW olarak kalması benim hiç aklıma gelmemişti. Donanımsal olarak TX pinine Pullup direnci koymak beni biraz uğraştıracak onun yerine ilgili kodlarda OG hocamın bahsettiği formülü deneyeceğim ve sizlere bildireceğim.
Saygı ve sevgilerimle
; PLACE SETUP
;------------------------------------------------------------------------------
;------------------------------------------------------------------------------
SetupSerial:     
;------------------------------------------------------------------------------
;------------------------------------------------------------------------------
;1-  OSC SETUP
;------------------------------------------------------------------------------
;------------------------------------------------------------------------------
;;EXTERNAL OSC
Osilator_Setup:
		BANKSEL	OSCCON	
		clrf	OSCCON		
		nop
;------------------------------------------------------------------------------
;;------------------------------------------------------------------------------
;;2- REGİSTERLERİ VE PORTLARIN ILK AYARLARI
;;------------------------------------------------------------------------------
;;------------------------------------------------------------------------------
;--------------------------
;;;BANK0 TEMİZLE
;--------------------------
FsrB0_Sil:
		clrf	FSR0H
		movlw	0x20		; Başlangıç pointer 0x20 
		movwf	FSR0L
FsrB0_clear:	
		movlw	0x00			;Sıfır yükle
		movwi	FSR0++
		movlw	0x6E		
		xorwf	FSR0,W	
		btfss	STATUS,Z	
		bra		FsrB0_clear
		nop
;--------------------------
;;;BANK1 TEMİZLE
;--------------------------
FsrB1_Sil:
		clrf	FSR0H
		movlw	0xA0+.5			; Başlangıç pointer 0xAA (.170)
;		movlw	0xA0			; Başlangıç pointer 0xA0 (.160)
		movwf	FSR0L
FsrB1_clear:	
		movlw	0x00			;Sıfır yükle
		movwi	FSR0++
		movlw	0xEF		
		xorwf	FSR0,W	
		btfss	STATUS,Z	
		bra		FsrB1_clear
		nop
;--------------------------
;PORTA
;--------------------------
	   	BANKSEL ANSELA       
	   	CLRF  	ANSELA          
	   	BANKSEL TRISA       
	   	clrf 	TRISA       
	   	BANKSEL PORTA       
	   	CLRF  	PORTA          
	   	BANKSEL LATA 
		CLRF	LATA   
;--------------------------       
;PORTB
;--------------------------
	   	BANKSEL ANSELB       
	   	CLRF  	ANSELB          
	   	BANKSEL TRISB       
	   	clrf 	TRISB       
	   	BANKSEL PORTB       
	   	CLRF  	PORTB          
	   	BANKSEL LATB 
		CLRF	LATB          
		BANKSEL	WPUB		;PULLUPS DİSABLED
		clrf	WPUB
;--------------------------
;PORTC      
;--------------------------
	   	BANKSEL TRISC       
	   	clrf 	TRISC       
	   	BANKSEL PORTC       
	   	CLRF  	PORTC          
	   	BANKSEL LATC 
		CLRF	LATC
;--------------------------
;PORTD
;--------------------------
	   	BANKSEL ANSELD       
	   	CLRF  	ANSELD          
	   	BANKSEL TRISD       
	   	clrf 	TRISD       
	   	BANKSEL PORTD       
	   	CLRF  	PORTD          
	   	BANKSEL LATD 
		CLRF	LATD          
		BANKSEL	WPUD		;PULLUPS DİSABLED
		clrf	WPUD
;--------------------------
;PORTE
;--------------------------
	   	BANKSEL ANSELE     
	   	CLRF  	ANSELE          
	   	BANKSEL TRISE       
	   	clrf 	TRISE       
	   	BANKSEL PORTE       
	   	CLRF  	PORTE          
	   	BANKSEL LATE 
		CLRF	LATE          
		BANKSEL	WPUE		;PULLUPS DİSABLED
		clrf	WPUE      
;--------------------------    
;PORTF
;--------------------------
	   	BANKSEL ANSELF       
	   	CLRF  	ANSELF          
	   	BANKSEL TRISF       
	   	clrf 	TRISF       
	   	BANKSEL PORTF       
	   	CLRF  	PORTF          
	   	BANKSEL LATF 
		CLRF	LATF    
;--------------------------      
;PORTG
;--------------------------
	   	BANKSEL ANSELG       
	   	CLRF  	ANSELG          
	   	BANKSEL TRISG       
	   	clrf 	TRISG       
	   	BANKSEL PORTG       
	   	CLRF  	PORTG          
	   	BANKSEL LATG 
		CLRF	LATG          
		BANKSEL	WPUG		;PULLUPS DİSABLED
		clrf	WPUG
;;------------------------------------------------------------------------------
;;------------------------------------------------------------------------------
;;3-  I/O PORTLAR AYARLAR
;;------------------------------------------------------------------------------
;;------------------------------------------------------------------------------
;PORTA - ROLE VE BUZZER
   		BANKSEL	TRISA
		movlw	b'00000011'
		movwf	TRISA
;PORTB - KESMELER (6 ADET IN), MC IN, PASS IN
   		BANKSEL	TRISB
		movlw	b'11111111'
		movwf	TRISB
;PORTC - UART1, SPI DATAIN
   		BANKSEL	TRISC
		movlw	b'11000000'
		movwf	TRISC
;PORTD TT MAIN + TT ADRES DATA IN
   		BANKSEL	TRISD
		movlw	b'10010010'
		movwf	TRISD
;PORTE TT DATAIN
   		BANKSEL	TRISE
		movlw	b'00000010'
		movwf	TRISE
;PORTF - ROLE OUT, TT MAIN
   		BANKSEL	TRISF
		movlw	b'00010000'
		movwf	TRISF
;PORTG UART2
   		BANKSEL	TRISG
		movlw	b'00000110'
		movwf	TRISG
;------------------------------------------------------------------------------
;------------------------------------------------------------------------------
;RS485 RE/DE HATTINI KAPAT
;------------------------------------------------------------------------------
;------------------------------------------------------------------------------
		BANKSEL	LATA
		bcf		RE_DE1
		nop
		bcf		RE_DE1
		nop
		BANKSEL	LATG
		bcf		RE_DE2
		nop
		bcf		RE_DE2
;------------------------------------------------------------------------------
;------------------------------------------------------------------------------
; 4- TIMER1 İLK SETUP
;------------------------------------------------------------------------------
;------------------------------------------------------------------------------
Tmr1setup:
		BANKSEL	T1CON
		bcf		T1CON,TMR1CS1	;BİT7	System clock source is system clock
		bsf		T1CON,TMR1CS0	;BİT6	bsf olursa FOSC OLUR
;--------------------------------------------------------
;;		bcf		T1CON,TMR1CS0	;BİT6	bcf olursa FOSC/4 OLUR
;--------------------------------------------------------
		bcf		T1CON,T1CKPS1	;BİT5	Prescellar 1:1
		bcf		T1CON,T1CKPS0	;BİT4
;--------------------------------------------------------
;		bsf		T1CON,T1CKPS1	;BİT5	Prescellar 1:8
;		bsf		T1CON,T1CKPS0	;BİT4
;--------------------------------------------------------
;;;;	bcf		T1CON,T1OSCEN	;BİT3 Kullanma
		bsf		T1CON,NOT_T1SYNC;BİT2	ignored
								;BİT1 Unimplemented bit
		bsf		T1CON,TMR1ON	;BİT0	Enabled Timer-1

		BANKSEL	TMR1H
		clrf	TMR1H
		clrf	TMR1L
		
		BANKSEL	T1GCON
		clrf	T1GCON
;------------------------------------------------------------------------------
;------------------------------------------------------------------------------
; 5- TIMER3 İLK SETUP
;------------------------------------------------------------------------------
;------------------------------------------------------------------------------
Tmr3setup:
		BANKSEL	T3CON
		bcf		T3CON,TMR3CS1	;BİT7	System clock source is system clock
;--------------------------------------------------------
;;		bsf		T3CON,TMR3CS0	;BİT6	bsf olursa FOSC OLUR
;--------------------------------------------------------
		bcf		T3CON,TMR3CS0	;BİT6	bcf olursa FOSC/4 OLUR
;--------------------------------------------------------
;		bcf		T3CON,T3CKPS1	;BİT5	Prescellar 1:1
;		bcf		T3CON,T3CKPS0	;BİT4
;--------------------------------------------------------
		bsf		T3CON,T3CKPS1	;BİT5	Prescellar 1:8
		bsf		T3CON,T3CKPS0	;BİT4

;;;;	bcf		T3CON,T1OSCEN	;BİT3 Kullanma
		bsf		T3CON,NOT_T3SYNC;BİT2	ignored
								;BİT1 Unimplemented bit
		bsf		T3CON,TMR3ON	;BİT0	Enabled Timer-3

		BANKSEL	TMR3H
		clrf	TMR3H
		clrf	TMR3L
		
		BANKSEL	T3GCON
		clrf	T3GCON

;------------------------------------------------------------------------------
;------------------------------------------------------------------------------
; 6- ANALOG ADC İLK SETUP
;------------------------------------------------------------------------------
;------------------------------------------------------------------------------
		BANKSEL	OPTION_REG 
		clrf	OPTION_REG
;;		bsf		OPTION_REG,INTEDG		;Interrupt on rising edge of INT pin
		bsf		OPTION_REG,NOT_WPUEN 	;All weak pull-ups are disabled (except MCLR, if it is enabled)
;;		bcf		OPTION_REG,NOT_WPUEN	;Weak pull-ups are enabled by individual WPUA latch values
;FVR DİSABLED
		BANKSEL	FVRCON
		clrf	FVRCON
							;FVR ENABLED
							;		MOVLW 	b'10000011'	;
							;		movwf	FVRCON
							;		btfss	FVRCON,FVRRDY
							;		goto	$-1 	
;adc setup
		BANKSEL ADCON1 ;
		MOVLW 	b'01110000'	; 
		MOVWF 	ADCON1 		;Vdd and Vss Vref
		BANKSEL TRISA 		;
		BSF 	TRISA,0 	;Set RA0 to input
		BANKSEL ANSELA 		;
		BSF 	ANSELA,0 	;Set RA0 to analog
		BANKSEL ADCON0 		;
		MOVLW 	B'00000001' ;
;Select channel AN0
		MOVWF 	ADCON0 		;Turn ADC On
		
;This code block configures the ADC for polling, Vdd and Vss references, Frc
;clock and AN0 input.
;Conversion start & polling for completion are included.
;ADC POOLİNG
;NOT: ADC İÇİN RESULTHI VERİSİ KULLANILACAK
		movlb	.0
		clrf	StatusReg1
		clrf	StatusReg2
;------------------------------------------------------------------------------
;------------------------------------------------------------------------------
; 7- USART 1 VE 2 SETUP
;18.432 MHZ at 57.6k Boudrate
;TX enable and High Boudrate  
;Serial port enabled and Continous receive enabled  
;Only receive Interrupts enabled, not Transmit ints... 
;------------------------------------------------------------------------------
;------------------------------------------------------------------------------
;-------------------------- 
;USART 2
;--------------------------
	   	BANKSEL BAUD2CON       
	   	clrf 	BAUD2CON        
	   	BANKSEL TX2STA       
	   	clrf 	TX2STA       
	   	BANKSEL RC2STA       
	   	clrf 	RC2STA       
	   	BANKSEL INTCON       
	   	clrf 	INTCON       
	   	BANKSEL PIE4       
	   	clrf 	PIE4       
	   	BANKSEL PIR4       
	   	clrf 	PIR4    
;--------------------------
;USART 1           
;--------------------------
	   	BANKSEL BAUD1CON       
	   	clrf 	BAUD1CON        
	   	BANKSEL TX1STA       
	   	clrf 	TX1STA       
	   	BANKSEL RC1STA       
	   	clrf 	RC1STA       
	   	BANKSEL INTCON       
	   	clrf 	INTCON       
	   	BANKSEL PIE1       
	   	clrf 	PIE1       
	   	BANKSEL PIR1       
	   	clrf 	PIR1    
;kesme ile alakalı
		BANKSEL	INTCON
		clrf	INTCON
;------------------------------------------------------------------------------
;USART1 SETUP
;------------------------------------------------------------------------------	
	    BANKSEL SPBRG       
		movlw	SPBRG_VAL	;   
	   	movwf 	SPBRG          
	   	nop
		BANKSEL TX1STA       
		clrf	TX1STA
	   	bsf  	TX1STA,BRGH       
	   	bsf  	TX1STA,TXEN       
	    nop
		BANKSEL RC1STA      
		clrf	RC1STA
	   	bsf  	RC1STA,SPEN       
	   	bsf  	RC1STA,CREN       
	    BANKSEL BAUD1CON      
;;		bsf		BAUD2CON,SCKP      
    	bcf		BAUD1CON,BRG16      
;------------------------------------------------------------------------------
;USART2 SETUP
;------------------------------------------------------------------------------	
        BANKSEL SP2BRG       
		movlw	SPBRG_VAL	
	   	movwf 	SP2BRG           
		nop
	   	BANKSEL TX2STA      
		clrf	TX2STA 
	   	bsf  	TX2STA,BRGH       
	   	bsf  	TX2STA,TXEN      
 
        BANKSEL RC2STA       
		clrf	RC2STA
	   	bsf  	RC2STA,SPEN       
	   	bsf  	RC2STA,CREN       
	    BANKSEL BAUD2CON      
;;		bsf		BAUD2CON,SCKP      
    	bcf		BAUD2CON,BRG16      

;;------------------------------------------------------------------------------
;;------------------------------------------------------------------------------
;;8- PORT B SETUP (INTERRUPT ON CHANGE PORTB)
;;------------------------------------------------------------------------------
;;------------------------------------------------------------------------------
; RİSİNG EDGE TRİGGER
		BANKSEL	IOCBP
		clrf	IOCBP		; İLK 6 PİNİ SET YAPIYORUZ
		bsf		IOCBP,0		; KESME TT 1-16
		bsf		IOCBP,1		; KESME TT 17-32 
		bsf		IOCBP,2		; KESME TT 33-48
		bsf		IOCBP,3		; KESME TT ADRES
		bsf		IOCBP,4		; KESME TT MAIN
		bsf		IOCBP,5		; KESME TT MC
;Bu pin sadace MC IN pini olarak kullanılacak kesme için değil
		bcf		IOCBP,6		; MC IN
		bcf		IOCBP,7		; PASS IN
; FALLİNG EDGE TRİGGER
		BANKSEL	IOCBN
		clrf	IOCBN
;INTERRUPT FLAGLARINI TEMİZLE
		BANKSEL	IOCBF
		clrf	IOCBF
;NOT: KESMELERDEN INTCON REGİSTERİNİN IOCIE BİTİ AKTİF OLMALI.

;------------------------------------------------------------------------------
;------------------------------------------------------------------------------
; 9- TÜM KESMELER AKTİF
;------------------------------------------------------------------------------
;------------------------------------------------------------------------------
SetupEND:
;------------------------------------------------------------------------------
;usart1 KESME AKTİF
;------------------------------------------------------------------------------
		BANKSEL	PIE1			;select bank
		bsf		PIE1,RC1IE
		bcf		PIE1,TX1IE		;disable tx1 kesme
;------------------------------------------------------------------------------
;usart2 kesme aktİf 
;------------------------------------------------------------------------------
		BANKSEL	PIE4			;select bank
		bsf		PIE4,RC2IE
		bcf		PIE4,TX2IE		;disable tx2 kesme
;------------------------------------------------------------------------------
;TMR1 INTERRUPT
;------------------------------------------------------------------------------
		BANKSEL	PIE1
		bsf		PIE1,TMR1IE		;TİMER1 OVERFLOW INTERRUPT ENABLE BİT
		BANKSEL	PIR1
		bcf		PIR1,TMR1IF		;TIMER1 OVERFLOW INTERRUPT FLAG BİT
;;								;her kesmede silinmesi lazım
;------------------------------------------------------------------------------
;TMR3 INTERRUPT
;------------------------------------------------------------------------------
;		BANKSEL	PIE3
;		bsf		PIE3,TMR3IE		;TİMER3 OVERFLOW INTERRUPT ENABLE BİT
		BANKSEL	PIR3
		bcf		PIR3,TMR3IF		;TIMER3 OVERFLOW INTERRUPT FLAG BİT
;;								;her kesmede silinmesi lazım
;------------------------------------------------------------------------------
;------------------------------------------------------------------------------
;;GENEL KESMELER AKTİF;
;------------------------------------------------------------------------------
;------------------------------------------------------------------------------
;TIMER3 SIFIRLA
		BANKSEL	TMR3H
		clrf	TMR3H
		clrf	TMR3L
		movlb .0				;BANK0
;TIMER1 SIFIRLA
		clrf	TMR1H
		clrf	TMR1L
; PROGRAMIN BAŞLANGICINDA İLK MOD TT VE IDLE OLARAK BELİRLE
		bsf		MainFlags,IDLE
		bsf		MainFlags,TT
;KESMELER AKTİF
		bsf		INTCON,IOCIE	;INT ON CHANGE
		bsf		INTCON,PEIE		;USART KESMELERİ
		bsf		INTCON,GIE		;GENEL KESMEYİ AÇ
;-----SETUP BİTTİ

		return


İlaveten;
Alıntı yapılan: OG - 13 Ağustos 2014, 12:13:15
0 degerini USART gondermiyor.
Durum şu,
TX pini açılışta lowa düşüyor. LOW Süresi gönderim hızınıza göre yeterince uzun sa bu Byte 0 demektir. Gönderim hızına göre LOW dan daha erken kurtulursa bu 0 degeri değil de başka herhengi bir değer olarak görünecek.
Sayın hocam; Kısa bir debug yaptım Sistem açılıp USART ayarları tamamlanıncaya kadar geçen süre 1253 Komut saykılı buda 18.432 MHZ frekansa göre 0,27 ms ye takabül ediyor. 1 Byte 57600 bps hızında 0,18 ms olduğuna göre demekki ilk ayarlar bittiğinde sizin de deiğiniz gibi TXREG 'e TX pini LOW kaldığı için otomatik 0x00 yükleniyor. İlk işim setup kısmının ilk başlarında TX pini ni HIGH yapıp diğer setuplara öyle devam etmek olacak. 
Persistance is the name of the game in this business....

OG

#8
Alıntı YapTXREG 'e TX pini LOW kaldığı için otomatik 0x00 yükleniyor
Bu şekilde değil, yani TXREG'e sıfır yüklenmiyor. Pin, usart'ın kontrolu dışında, yeterince sürece LOW olduğu için, dış hat için 0x00 byte anlamını veriyor.

mesaj birleştirme:: 14 Ağustos 2014, 03:07:30

Koda bakayım dedim, görünce şaşırdım. Merakımdan soruyorum, neden asm? Usandırmıyor mu?
FORUMU İLGİLENDİREN KONULARA ÖM İLE CEVAP VERİLMEZ.

Pyrodigy

Alıntı yapılan: OG - 14 Ağustos 2014, 03:02:03
Bu şekilde değil, yani TXREG'e sıfır yüklenmiyor. Pin, usart'ın kontrolu dışında, yeterince sürece LOW olduğu için, dış hat için 0x00 byte anlamını veriyor.

mesaj birleştirme:: 14 Ağustos 2014, 03:07:30

Koda bakayım dedim, görünce şaşırdım. Merakımdan soruyorum, neden asm? Usandırmıyor mu?
Üstad merhaba
Öncelikle sorunuma detaylı yaklaşımınız için teşekkür ederim ve RS485 arayüzünü yutmuş olmanızı bu forum için bulunmaz bir nimet olarak düşünüyorum. Kodlarımda değişiklik yaptım sistem açılır açılmaz TX pinini H yaptım ancak devre üzerinde henüz denemedim bakalım ne olacak gün içinde bildiririm.
2. sorunuza gelecek olursak ben Elektronik ile hobi olarak uğraşıyorum, ne elektronik okudum nede herhangi bir eğitim aldım. Kitaplardan ve tabiki picproje forumlarından çok şey öğrendim. Yabancı diliminde yardımı ile yurtdışı forum ve kaynaklarda çok yardımcı oldu. İlk MCU'um PIC tir ve programlamaya ASM ile başladım. Genişletilmiş ASM ile devam ediyorum, daha doğrusu en iyi dil bildiğin dildir mantığı ile ve ASM ye kendimce hakim olduğuma inandığım için şu an için C programlama diline ihtiyacım yok. İnşallah kısmet olur zaman ayırabilirsem C dilinide en kısa sürede öğrenmek istiyorum. Ne yalan söyleyeyim BANK ve PAGE değiştirmekten artık usandım :)
Fakat şöyle birde gerçek var ASM gerçekten MCU ya tam anlamıyla hakim olunan bir dil, bu dilin MCU nun iç yapısını anlamamda çok yardımcı olduğunu söyleyebilirim. Belki gözüm keserse ASM32 ye geçiş yapar onunla devam ederim. Bakalım zaman ne gösterecek.
Saygı ve sevgilerimle
Persistance is the name of the game in this business....

Tagli

Gökçe Tağlıoğlu

Pyrodigy

Alıntı yapılan: Tagli - 14 Ağustos 2014, 14:15:49
Genişletilmiş ASM nedir?
Microchip'in Enhanced 16F (18F ile bilinen 16F arasında) mimarisi için geliştirmiş olduğu ASM dili. Enhanced 16F nedir dersen; 18F te olup 16F te olmayan birçok özellik bu yeni nesil 16F MCU lar için geliştirildi. Uygulamamda 2 adet USART a ihtiyacım olduğu için ve C bilmediğim için bu MCU lardan seçmiştim.
Bu ASM yapısında 35 komut 'a ilave olarak 16 komut daha var.Toplam 51 komut
Persistance is the name of the game in this business....

Pyrodigy

Sistemin hemen açılışında TX pinini High yapmak işe yaradı donanımsal olarak ilk açılışta kafasına göre 0x00 gönderemiyor.
Hazır konu açılmışken kafama takılan bir husus daha var. 2 PIC arasında RS485 üzerinden Loopback test yapmak istiyorum. Her byte aynen geri iletilmesi gerekiyor. Bu durumda RE/DE pin zamanlamasını nasıl ayarlamalıyım ? Yada sizler nasıl ayarlıyorsunuz ?
Uygulamamda; 57600bps de 1 byte (10 bit) 0,18 ms hızında geliyor.
Örnek; Kesme ile gelen datayı aynen geri gönderecek temsili bir kod yazdım zamanlama doğrumudur? Yada siz Hattın birbiri ile çakışmaması için mükemmel zamanlamayı nasıl bir kontrol testi ile sağlıyorsunuz ?
Geri_Gonder:
		bsf	RE_DE2     ; RE/DE High
		nop
		bsf	RE_DE2
		movf	DummyData, W     ; Gelen Datayı
		call	TX2Serial     ; USART-2 İLE YOLLA
;
		BANKSEL	PIR4		
		btfss	PIR4,TX2IF     ; TX Hattı meşgulmü ?
		bra	$-1     ; meşgul olup olmadığını kontrol et
		call 	delay1ms     ; değilse 0,20 ms lik Gecikme 
		bcf	RE_DE2
		nop
		bcf	RE_DE2     ;RE/DE LOW
		return


Persistance is the name of the game in this business....