seri adc yerine pic uygulama yardım!

Başlatan e-durgut, 04 Nisan 2009, 14:15:34

e-durgut

Ustalar lütfen yardım,

seri bit adc (tlc 549) yerine pic ile pc ye data göndermek istiyorum.
pbp'de seri bilgiyi, pic16f877a ile pc den gelen clk sinyali ile senkron bir şekilde nasıl gönderebilirim. Serout2 komutu ile denedim fakat senkron olmuyor, pc den gelen clk değişkenlik gösterdiğinde sorun oluyor.

bigbey

PC den clock sinyali ne zamanlar geliyor devamlımı yoksa aralıklımı.
gerçi çok önemli değil. clock sinyalini 877 den giriş yapıp serout komutu yerine clock darbelerini algılatıp her bir darbede datanın bitlerini tek tek istediğin bir pinden çıkaracaksın. yani bu işlemi serout komutu ile değil kendi subrutinin ile yapmalısın.
TA6R

e-durgut

bigbey, teşekkür ederim deneyeceğim,

bigbey

Eğer kullanmak istersen araya bir ASM kodu yazayım.
TA6R

e-durgut

yeni başladım sayılır, pbp da yazabiliyorum, asm beni aşar herhalde, pbp de yazarsan memnun olurum, clk değişkenlik gösteriyormu diye sormuştun evet değişkenlik gösteriyor, pc den yaptığımız seçeneğe göre değişkenlik gösteriyor,  teşekkürler üstad.

bigbey

#ASM

SEROUT_
		MOVLW		H'08'
		MOVWF		_DATA		; data 8 bitlik olduğu için her 
						  bitin işlemini döngülemek için kullanıldı
TEXT
		BTFSS		PORTB,6		;Clock sezinleme ucu
      		GOTO	       	$ - 1
		NOP
		NOP
		BCF		PORTB,7		;SERİ OUT PİNİ
		BTFSC		ADRESL,7	;Analog bilginin bitleri test ediliyor
		BSF		PORTB,7		;Eğer datanın biti 1 ise çıkışa 1 gönderiliyor
		BTFSC		PORTB,6		;clock sıfıra düştümü diye sorulup bekleniyor
       		GOTO		$ - 1
		BCF		STATUS,0
		RLF		ADRESL,F	;data verisi bir bit kaydırılıp sonraki bit gönderimi için hazırlanıyor
		DECFSZ		_DATA,F		;data gönderimi bit sayısı 8'e ulaştımı diye sorgulanıyor
		GOTO		TEXT		;data gönderimi bitene kadar döngye devam
                ;Bu satırda gidilmesi gereken adres yazılabilir veya CALL komutu ile gelinmiş ise return denir

#ENDASM

bu kodu PBP içine yerleştirebilirsin. PBP pek bilmiyorum. PBP konusunda başka üstadlar var onların yardımı daha doğru olur.
TA6R

e-durgut

üstad,
bu bir kanal için , dört kanal için yapmamız gerektiğinde nasıl düzenlememiz gerekir desem , çok şeymi istemiş olurum acaba? yani dört ayrı seri çıkış ucundan 8 bitlik dört ayrı bilgi göndereceğiz , clk ortak tek pin,

bigbey

#ASM

SEROUT_



		MOVLW		H'08'
		MOVWF		_DATA		; data 8 bitlik olduğu için her 
						  bitin işlemini döngülemek için kullanıldı
TEXT
		BTFSS		PORTB,3		;Clock sezinleme ucu
      		GOTO	       	$ - 1
		NOP
		NOP

		BCF		PORTB,7		;SERİ OUT PİNİ
		BTFSC		ANALOG1,7	;Analog1 bilginin bitleri test ediliyor
		BSF		PORTB,7		;Eğer datanın biti 1 ise çıkışa 1 gönderiliyor

		BCF		PORTB,6		;SERİ OUT PİNİ
		BTFSC		ANALOG2,7	;Analog2 bilginin bitleri test ediliyor
		BSF		PORTB,6		;Eğer datanın biti 1 ise çıkışa 1 gönderiliyor

		BCF		PORTB,5		;SERİ OUT PİNİ
		BTFSC		ANALOG3,7	;Analog3 bilginin bitleri test ediliyor
		BSF		PORTB,5		;Eğer datanın biti 1 ise çıkışa 1 gönderiliyor

		BCF		PORTB,4		;SERİ OUT PİNİ
		BTFSC		ANALOG4,7	;Analog4 bilginin bitleri test ediliyor
		BSF		PORTB,4		;Eğer datanın biti 1 ise çıkışa 1 gönderiliyor



		BTFSC		PORTB,3		;clock sıfıra düştümü diye sorulup bekleniyor
       		GOTO		$ - 1
		BCF		STATUS,0
		RLF		ANALOG1,F	;data1 verisi bir bit kaydırılıp sonraki bit gönderimi için hazırlanıyor
		RLF		ANALOG2,F	;data2 verisi bir bit kaydırılıp sonraki bit gönderimi için hazırlanıyor
		RLF		ANALOG3,F	;data3 verisi bir bit kaydırılıp sonraki bit gönderimi için hazırlanıyor
		RLF		ANALOG4,F	;data4 verisi bir bit kaydırılıp sonraki bit gönderimi için hazırlanıyor
		DECFSZ		_DATA,F		;data gönderimi bit sayısı 8'e ulaştımı diye sorgulanıyor
		GOTO		TEXT		;data gönderimi bitene kadar döngye devam
                ;Bu satırda gidilmesi gereken adres yazılabilir veya CALL komutu ile gelinmiş ise return denir

#ENDASM

Burada aldığın analog değerleri ANALOG1,ANALOG2,ANALOG3,ANALOG4 olarak kayıt edip kullanabilirsin
TA6R

e-durgut

üstad,

proteusta uyguladım, çalıştıramadım bir hata mı yapıyorum, bi kontrol etme şansın varmı?

bigbey

TA6R

e-durgut

Üstad,
senin projede sorun yok, problemim şu an, pbp da araya verdiğin asm kodlarını yazdığımda hex, dosyasını elde edemiyorum.  Assembler Errors, hatası veriyor. Compile ve program ikisinde de aynı şekilde, assemler errors diyor.

bigbey

hata aldığın mesaj sayfasını resim olarak buraya gönderirmisiniz.
ayrıca mahsuru yoksa pbp yazılımınızıda buraya koyun bende microcode studio yu yükleyip bi inceleyeyim.

Ayrıca bu kodları aynı mantıkla basicte de yazılabilir bu satırlar.
pbp ustalarına duyurulur.
TA6R

e-durgut

bigbey üstad,
değerli yardımların neticesinde problemi çözdük, çok teşekkür ederim.