12f675 -16f877 seri haberleşme

Başlatan tagan, 17 Haziran 2006, 01:16:53

tagan

merhaba arkadaşlar.
12f675 ile 16f877 yi seri olarak haberleştirmek istiyorum. hatta haberleştirmiştimde ufak birşey değiştirmişim herhalde artık haberleşmiyor.
16f877:
CIKIS=0
SEROUT2 PORTD.0,396,[CIKIS]
SERIN2 PORTD.1,396,[GIRIS]


12f675:
INCLUDE "MODEDEFS.BAS"
@ DEVICE WDT_OFF, MCLR_OFF, PWRT_ON 
define osc_4
DEFINE ADC_BITS 10 
DEFINE ADC_SAMPLEUS 50 
DEFINE CHAR_PACING 1000
DEG VAR byte
OLC VAR WORD
TEST VAR WORD 
OLC2 VAR WORD 
CMCON=7
ANSEL=%00110001 
TRISIO.0=1      'ANALOG GİRİŞ BACAĞI
TRISIO.1=1      'SERİ GİRİŞ BACAĞI
TRISIO.2=0      'SERİ ÇIKIŞ BACAĞI
BASLA:
PAUSE 5000
ADCIN 0,OLC
PAUSE 1000
TEST=OLC-800
DEVAM:
SERIN2 GPIO.1,396,[DEG]
GOSUB ANALOG
SEROUT2 GPIO.2,396,[DEG] 
GOTO DEVAM
ANALOG:
ADCIN 0,OLC2
IF OLC2<TEST THEN
deg.3=1       
ELSE
deg.3=0 
ENDIF
RETURN    
END
-------------------
16f877 nin kodu çok uzun olduğundan sadece ilgili yeri verdim ama onda sorun yok 2 tane 16f877 yi rahatça haberleştirebilitorum. 12f675 olunca alıcı tarafa gelen bilgi yani 16f877 ye eğer analog değer 800 düşmemişse çıkan bilgiyle aynı olmalı. mesela sıfır gönderiyorum ama tekrar alınca bilgi %11110000 oluyor. analog bacak üstüne düşen gerilim 800 den fazla düşünce gelen bilgi değişiyor ama yanlış değişiyor. 3. bit yerine 2. bit 1 oluyor.ilk 4 bit te 1 kalmaya devam ediyor. aslında bu çalışıyodu bişeyi değiştirmişim ama eyi bulamıyorum.
aklıma gelenleride söylersem daha iyi olur.
1-baud rate ten değil 396 sayısıda doğru,wait koymamda gerekmiyor. burda aslında 7 pic haberleşecek wait koyunca 2 den fazla olunca hata oluyor. gerçi şimdi 2 tane bile haberleşmiyo ama :(
2-port bacak vesayre tanımlamalardan değil.
3-ilk çalışmaya başladıktan sonra 12f675 e seri bilgi gelince hiç beklemeden tekrar gönderiyor. belki bekleme süresi koymak gerekir.
4- proteus simulasyonda çalışıyor.
---
YARDIMINIZ DOKUNURSA ÇOK İYİ OLUR. SALI GÜNÜ TESLİM VAR PROJENİN BU HATA NERDEN ÇIKTI HİÇ ANLAMADIM YA.

OG

Kodların içeriğine tam olarak bakmadım, 12F675 i int osc kullanıyorsanız
DEFINE OSCCAL_1K 1
bunu eklemeyi unutmayın.
FORUMU İLGİLENDİREN KONULARA ÖM İLE CEVAP VERİLMEZ.

tagan

hayır harici kristal kullanıyorum zaten programda define osc ibaresi var.

tagan

arkadaşlar sorun çözüldü. tahmin ettiğim gibi alıcı tarafın seri bilgiyi çabuk alıp vermesinden kaynaklanan bir sorun. haberleşmeyi biraz gecikttirince sorun çözüldü. teşekkürler.