12f675 seri iletişim hatası

Başlatan exper, 16 Mart 2013, 10:57:24

exper

SELAMUN ALEYKUM  Arkadaşlar,
seri iletişim denemesi yaptım

verici ısmını 16f628 ile
alıcı kısmını 12f675 ile yaptım, simulasyonda düzgün çalışıyor
fakat gerçek devrede çalışmıyor
eğer alıcı kısmınıda  16f628 ile
yaparsam simulasyonda ve gerçek devrede çalışıyor. 12f675 problem nerde olabilir
PRG ASAGIDA  TEŞEKKÜRLER

-----------  verici -------------
Device = 16F628
Xtal = 4
@ CONFIG_REQ
@ __config CP_OFF & WDT_OFF & INTRC_OSC_NOCLKOUT & MCLRE_OFF & LVP_OFF & BODEN_OFF & PWRTE_ON 
Declare    LCD_DTPin = PORTA.0   
Declare              LCD_RSPin = PORTA.6 
Declare      LCD_ENPin = PORTA.7
Declare      LCD_Interface = 4   ' 4-bit Interface
Declare      LCD_Lines = 2
Declare  PortB_Pullups = On  ' 
  All_Digital = TRUE     
TRISA = %00000000   
TRISB = %00000010
Dim DATA As Byte 

  '  ---------VERİCİ KISMI-----------
While 1=1 
      IF PORTB.1=0 THEN                 
          INC DATA
          SerOut PORTB.7 ,19697 ,[DATA ]
         DELAYMS 1000
     ENDIF
Wend
       
End     





'----------ALICI KISMI
Device = 12F675
Xtal = 4
'-----------------------------------------------------------------
@ CONFIG_REQ
@ __config MCLRE_OFF & CP_ON & WDT_ON & INTRC_OSC_NOCLKOUT & CPD_ON & BODEN_ON & PWRTE_ON

ANSEL = 0  'Set pins to digital mode
  Dim DATA As Byte 
Symbol DATAIN = GPIO.3

TRISIO = %00001000
GPIO   = %00000000
'basla:
'************** prg *************************-***************
While 1=1 
                    SerIn DATAIN , 19697  ,[DATA  ]
                     IF DATA=10 THEN
                             GPIO.0=1 
                            DELAYMS 1000
                    ELSE
                         GPIO.0=0
                    ENDIF
 
Wend
       
End           

OG

12F675 in osc tune değeri var
03FF adresinde saklı durur.
Bu imalat anında atanmış bir değerdir. Dahili osilatorun en doğru degerde çalışması için gereklidir. Cihaza programı yuklerken bu degerin silinmemesi gerekir. Yeni boş bir 12F675 i okuduğunuzda bu degeri gorursunuz.

Proton da

Device = 12F675
Config CPD_OFF,CP_ON, BODEN_OFF, MCLRE_OFF, PWRTE_ON, WDT_ON, INTRC_OSC_NOCLKOUT
Set_OSCCAL
Declare Xtal 4
All_Digital = TRUE

gibi ek yapmalısın. Programlayıcı cihaz da bu komutu anlamalı ve silmemeli. Silerse data haberleşmesinde sıkıntı çıkar. Silindi ise PicKit2 ile tekrar bu degere elde edilebilinir.
FORUMU İLGİLENDİREN KONULARA ÖM İLE CEVAP VERİLMEZ.

ibrsel

@OG hocam bazı açıklamaları yapmış..Bende zamanında yaşadığım sıkıntılardan sonra almış olduğum tedbirlerden bahsedeyim,belki faydası olur;
1. Öncelikle Seri iletişim devrelerinde XT kristal kullanmanı tavsiye ederim..İletişimde ortam etkenlerinden dahili OSC değerlerin tam tutmayabilir..Buda seri iletişimde baud hızını tam yakalamana mani olabilir.
2. Seri iletişimde göndereceğin asıl bilgiden önce alıcıyı uyandırma bilgisi göndermeni tavsiye ederim.
Örneğin ;

  SerOut PORTB.7 ,19697 ,[$FF ]
  SerOut PORTB.7 ,19697 ,[$AA]   daha sonra göndereceğin bilgi satırları gelmeli
  SerOut PORTB.7 ,19697 ,[data1]
  SerOut PORTB.7 ,19697 ,[data2] gibi...