PIC BASIC'de 12F629 ile harici 12C512 Eeprom'a veri yazmaya çalışıyorum olmuyor.

Başlatan hamityanik, 11 Şubat 2011, 15:49:06

hamityanik

Merhaba,

PIC BASIC ile 12f629 kullanarak 512K'lık 12C512 eeprom'a veri yazmaya çalışıyorum ama saatlerdir başarılı olamadım. Devreyi isis ile simüle ediyorum. Simülasyonu başlatıp bir süre sonra duraklatarak "Debug -> I2C Memory Internal Memory" penceresini açarak kontrol ediyorum ama bakıyorum ki eeprom'a yazmamış.

Devre tasarımım şu şekilde:


Tasarımı indirip deneyebilirisiniz:
http://hotfile.com/dl/103709495/1138e6a/eeprom.DSN.html

PIC Basic Kodum ise:
'-------------------------------------------------------------------------------
@ DEVICE  PIC12F629,INTRC_OSC_NOCLKOUT ' internal RC osc
@ DEVICE  PIC12F629,MCLR_OFF           ' Disable external MCLR
@ DEVICE  PIC12F629,WDT_ON            ' Enable 'Disable WatchDog timer
@ DEVICE  PIC12F629,PROTECT_OFF        ' Disable device protect
@ DEVICE  PIC12F629,CPD_OFF            ' Disable Code-Protect
'-------------------------------------------------------------------------------
DEFINE OSCCAL_1K 1 'bu kod mutlaka olmalı
DEFINE OSC 4

TRISIO = %00001000
GPIO = 0
CMCON = 7

i VAR BYTE

SYMBOL SDA=GPIO.5
SYMBOL SCL=GPIO.4

HIGH GPIO.2
PAUSE 600
LOW GPIO.2
PAUSE 600

FOR i = 0 TO 127
I2CWRITE SDA,SCL,%10100000,i,[65]
PAUSE 10 ' Wait 10ms for write to complete
NEXT i


SDA ve SCL bağlantılarını GP0 ve GP1'e bağlayarak da denedim ama sonuç yine başarısız.

Acaba nerede hata yapıyorum? Yardımcı olursanız çok memnun kalacağım.

Teşekkür ederim.

Düzenleme: Devreyi gerçekte uygulamadım. Belki uygulayınca çalışır ama henüz 12C512 eeprom satın alamadığım için öncelikle simülasyonunu yapmak istedim.

ibrsel

Dikkatimi çekti mesajın,oturup proteusta uğraştım..24C512 e yazma ve okumayı bende malesef başaramadım..ama 24C02 de herhangi bir sorun yok..Aynı program ile gayet başarılı bir şekilşde okutup yazdırabiliyorum..Vaktim olursa tekrar uğraşıp buraya mesaj atarım..Bu arada aşağıdaki linli de inceleyebilirsin..

https://www.picproje.org/index.php?topic=19921.0


Device = 16F628A   '' PIC TANIMLAMASI 
Config XT_OSC , WDT_OFF , PWRTE_OFF , BODEN_OFF , LVP_OFF , CP_ON , MCLRE_OFF   '' SİGORTA TANIMLAMALARI
Declare LCD_DTPIN PORTB.4  '''''''LCD BAĞLANTISI TANIMALARI'''''''''''
Declare LCD_ENPIN PORTB.1
Declare LCD_RSPIN PORTB.0
    
'*********************************************************************
ALL_DIGITAL=true '' TÜM PİNLER DİGİTAL GİRİŞ ÇIKIŞ    
Output PORTB '' trisb=0 ile aynı tüm uçlar çıkış demek
TRISA=%00000011  
''************************ BUTON TANIMLAMALARI *******************************
Symbol buton1=PORTA.0
Symbol buton2=PORTA.1
Symbol led1=PORTA.2
Symbol led2=PORTA.3
''****************************************************************************
Symbol Control = %10100000           
Symbol SCL=PORTB.2
Symbol SDA=PORTB.3
''****************************************************************************
Dim i As Byte
Dim a As Byte
Dim b As Byte
    a=0 : b=0

basla: 
  If buton1=1 Then
    For i=0 To 9
        Print At 2,1,"Write"
        b=10+i
        I2Cout SDA, SCL,$A1,i,[b] 
        Print At 1,1,#i,"=",DEC2 b : DelayMS 200
    Next i
  EndIf
  If buton2=1 Then
    For i=0 To 9
'        busin $c0,i,[a]
        I2Cin SDA, SCL,$A1,i,[a] 
        Print At 2,1,"Read "
        Print At 1,1,#i,"=",DEC2 a : DelayMS 200
    Next
  EndIf
    Cls
GoTo basla

Maxim

şöyle bir kod var bende ,denermisiniz 24c512 için ?
picbasic

CNTRL VAR BYTE ' added for control byte
CNTRL = %10100000 ' value of control byte

EWrite:
I2CWRITE SDA,SCL,CNTRL,Addr,[E_ByteOut] ' Write out the byte
Pause 10 ' Delay 10ms after each write
Return

ERead:
I2CREAD SDA,SCL,CNTRL,Addr,[E_ByteIn] ' Read in the byte
Return


hamityanik

Alıntı yapılan: ibrsel - 11 Şubat 2011, 18:21:05
Dikkatimi çekti mesajın,oturup proteusta uğraştım..24C512 e yazma ve okumayı bende malesef başaramadım..ama 24C02 de herhangi bir sorun yok..Aynı program ile gayet başarılı bir şekilşde okutup yazdırabiliyorum..Vaktim olursa tekrar uğraşıp buraya mesaj atarım..Bu arada aşağıdaki linli de inceleyebilirsin..

https://www.picproje.org/index.php?topic=19921.0

Cevap için teşekkürler. Aynı devre ve kod ile 24C02 kullandım, çalıştı. Problem isis'te sanırım.