logo elektroda
logo elektroda
X
logo elektroda
REKLAMA
REKLAMA
Adblock/uBlockOrigin/AdGuard mogą powodować znikanie niektórych postów z powodu nowej reguły.

AT89C2051 i EEPROM 24C04 - błędne adresy na płytce testowej AVT 2500

arturssp 22 Sie 2004 02:23 2147 9
REKLAMA
  • #1 807035
    arturssp
    Poziom 16  
    Posty: 292
    Pomógł: 7
    Ocena: 23
    Problem polega na tym, ze podczas wykonywania proby pobrania adresu pamieci eeprom tym programem:

    "
    Config Lcd = 16 * 2
    Config Sda = P3.5
    Config Scl = P3.7
    Dim Adres As Byte
    Locate 1 , 1
    Cls
    Lcd "Start"
    Cls
    For Adres = 100 To 200 Step 2 'wykonuje petle for
    'w zakresie 150-200 co 2
    I2cstart 'start i2c
    I2cwbyte Adres 'wyslij adres
    I2cstop
    Waitms 50
    Locate 1 , 1
    If Err = 0 Then
    Cls 'jesli nastapila odpowiedz
    Lcd "Układ pod:" ; Adres 'wyswietl adres
    Else
    Cls
    Lcd "Brak ukł." 'w przeciwnym wypadku ....
    End If

    Wait 1
    Next Adres
    Cls
    Lcd "Koniec"
    End

    wykrywa ja pod 160 i pod 162... chodzi mi o plytke testowa AVT 2500
    uklad PCF wyjalem z podstawki, wiec na plytce pozostaje tylko jedno urzadzenie podpiete pod I2C..... Czy to mozliwe zeby jeden uklad wystepowal pod dwoma adresami??? i na dodatek zeby nie dzialal pod zadnym z nich.... bo ani sterujac go z 160 ani z 162 nic sie nie da zapisac ani odczytac z pamieci..... Co moze byc przyczyna?? Uszkodzona pamiec?? bo ja juz nie wiem co robic... Prosze o odpowiedz jesli ktos by wiedzial co sie dzieje.. Dzieki z gory.
  • REKLAMA
  • #2 807383
    GienekS
    Poziom 32  
    Posty: 1971
    Pomógł: 139
    Ocena: 15
    Z tego co pamiętam to ta pamięć ma trochę pokręcone adresy. Najlepiej będzie sprawdzić to w nocie.
    Właśnie to sprawdziłem. Układ ten ma A0 i A1 i A2 do adresowania zewnętrznego czyli ma osiem różnych adresów, każda w trybie zapisu i
    odczytu.
    1010000x
    1010001x
    1010010x
    1010011x
    1010100x
    1010101x
    1010110x
    1010111x
    x=0 to zapis
    x=1 to odczyt
  • REKLAMA
  • #3 809029
    BoskiDialer
    Poziom 34  
    Posty: 1530
    Pomógł: 353
    Ocena: 42
    24c04 ma 4 kb (kilobity) pamięci więc 512 bajtów, więc jest podzielony na 2 strony po 256 bajtów (chyba).. każda strona jest symulowana jako osobny układ i dlatego są 2 adresy.. to że żaden niedziała może być spowodowane tym że pamięć jest pusta (0xFF) a pin WP (write protect) może być podłączony do Vcc i dlatego niedziała zapis.. jeśli układ odpowiada sygnałem Ack po podaniu adresu to musi być sprawny. chyba że pamięc eeprom przeżyła już swój żywot programowania..
  • #4 809631
    arturssp
    Poziom 16  
    Posty: 292
    Pomógł: 7
    Ocena: 23
    pin 7 czyli WP mam "wiszaca w powietrzu", natomiast A0, A1, A2 zwarte do masy. Jak wiec mam podlaczyc te koncowki zeby bylo ok?? pin WP podpiac pod mase?? skoro jesli jest pod Vcc to blokuje zapis... Pamiec jest nowa, nie uzywana jeszcze... :cry: Nie wiem co robic :(.... W kazdym razie dzieki Wam za odpowiedzi :)
  • REKLAMA
  • #5 810465
    elektryk
    Poziom 42  
    Posty: 11029
    Pomógł: 439
    Ocena: 241
    arturssp napisał:
    pin WP podpiac pod mase??
    Zobacz w specyfikacji określonego producenta, bo to od określonego producenta i np dodatkowego oznaczenia zależy do czego ta nożka służy, może blokować całość, połowe pamięci lub wogóle nic nie blokować.
  • REKLAMA
  • #6 810927
    BoskiDialer
    Poziom 34  
    Posty: 1530
    Pomógł: 353
    Ocena: 42
    Przeważnie jest tak że pin WP blokuje zapis jak jest podłączony do Vcc, a nieblokuje jak jest podłączony do Gnd, w moich konstrukcjach EEPROM 24C jest podłączony tak: piny 1,2,3,4 i 7 do Gnd, 8 do vcc, 5 sda, 6 scl i wszystko działa..
  • #7 814246
    Józek1
    Poziom 11  
    Posty: 47
    Mam pytanie co do programowania pamięci 24C64 przez procka Atmega8 i odczyt.

    Program do zapisywania jest nastepujący
    $crystal = 1000000
    $regfile = "M8def.dat"

    Config Sda = Portc.4
    Config Scl = Portc.5

    Declare Sub Write_eeprom(adres As Byte , Value As Byte)
    Dim Adres As Byte , Value As Byte
    Dim R As Byte
    Restore Dane1
    For R = 0 To 255
    Read Value
    Call Write_eeprom(r , Value)
    Next R
    End

    Sub Write_eeprom(adres As Byte , Value As Byte)
    I2cstart
    I2cwbyte 160
    I2cwbyte Adres
    I2cwbyte Value
    I2cstop
    End Sub


    Dane1:
    Data 84 , 6,
    Data &H00 , &H00 , &H00 , &H00 , &H00 , &H00 , &H00 , &H00 , &H00 , &HE0 , &H10 , &H10 , &H10 , &HE0 , &H00 , &H00,
    Data &H00 , &H10 , &HF0 , &H00 , &H00 , &H00 , &H00 , &H00 , &H00 , &H00 , &H00 , &H00 , &H00 , &H00 , &H00 , &H00,
    Data &H00 , &H00 , &H00 , &H00 , &H00 , &H00 , &H00 , &H00 , &H00 , &H00 , &H00 , &H00 , &H00 , &H00 , &H00 , &H00,
    Data &H00 , &H00 , &H00 , &H00 , &H00 , &H00 , &H00 , &H00 , &H00 , &H00 , &H00 , &H00 , &H00 , &H00 , &H00 , &H00,
    Data &H00 , &H00 , &H00 , &H00 , &H00 , &H00 , &H00 , &H00 , &H00 , &H00 , &H00 , &H00 , &H00 , &H00 , &H00 , &H00,
    Data &H00 , &H00 , &H00 , &H00 , &H00 , &H00 , &H00 , &H00 , &H00 , &H00 , &H00 , &H00 , &HC0 , &H43 , &H44 , &H44,
    Data &H44 , &H43 , &H40 , &H40 , &H44 , &H44 , &H47 , &H44 , &H44 , &H40 , &H40 , &H40 , &H40 , &H40 , &H40 , &H40,
    Data &H40 , &H40 , &H40 , &H40 , &H40 , &H40 , &H40 , &H40 , &H40 , &H40 , &H40 , &H40 , &H40 , &H40 , &H40 , &H40,
    Data &H40 , &H40 , &H40 , &H40 , &H40 , &H40 , &H40 , &H40 , &H40 , &H40 , &H40 , &H40 , &H40 , &H40 , &H40 , &H40,
    Data &H40 , &H40 , &H40 , &HC0 , &H00 , &H00 , &H00 , &H00 , &H00 , &H00 , &H00 , &H00 , &H00 , &H00 , &H00 , &H00,
    Data &H00 , &H00 , &H00 , &H00 , &H00 , &H00 , &H00 , &H00 , &H00 , &H00 , &H00 , &H00 , &H00 , &H00 , &H00 , &H00,
    Data &HFF , &H00 , &H00 , &H00 , &H00 , &H00 , &H00 , &H00 , &H00 , &H00 , &H00 , &H00 , &H00 , &H00 , &H00 , &H00,
    Data &H00 , &H00 , &H00 , &H00 , &H00 , &H00 , &H00 , &H00 , &H00 , &H00 , &H00 , &H00 , &H00 , &H00 , &H00 , &H00,
    Data &H00 , &H00 , &H00 , &H00 , &H00 , &H00 , &H00 , &H00 , &H00 , &H00 , &H00 , &H00 , &H00 , &H00 , &H00 , &H00,
    Data &H00 , &H00 , &H00 , &H00 , &H00 , &H00 , &H00 , &HFF , &H00 , &H00 , &H00 , &H00 , &H00 , &H00 , &H00 , &H00,
    Data &H00 , &H00 , &H00 , &H00 , &H00 , &H00 , &H00 , &H00 , &H00 , &H00 , &H00 , &H00 , &H00 , &H00 , &H00 , &H10,
    Data &H10 , &H10 , &H10 , &H10 , &HFF , &H10 , &H00 , &H00 , &H10 , &H00 , &H00 , &H10 , &H10 , &H10 , &H10 , &H10,
    Data &H10 , &H00 , &H00 , &H10 , &H00 , &H00 , &H10 , &H10 , &H10 , &H10 , &H10 , &H10 , &H10 , &H00 , &H00 , &H10,
    Data &H00 , &H00 , &H10 , &H10 , &H10 , &H10 , &H10 , &H10 , &H10 , &H00 , &H00 , &H10 , &H00 , &H00 , &H10 , &H10,
    Data &H10 , &H10 , &H10 , &H10 , &H10 , &H00 , &H00 , &H10 , &H00 , &H00 , &H10 , &HFF , &H10 , &H10 , &H10 , &H10,
    Data &H10 , &H00 , &H00 , &H00 , &H00 , &H00 , &H00 , &H00 , &H00 , &H00 , &H00 , &H00 , &H00 , &H00 , &H00 , &H00,
    Data &H00 , &H00 , &H00 , &H00 , &H00 , &H00 , &H00 , &H00 , &HFF , &H00 , &H00 , &H00 , &H00 , &H00 , &H00 , &H00,
    Data &H00 , &H00 , &H00 , &H00 , &H00 , &H00 , &H00 , &H00 , &H00 , &H00 , &H00 , &H00 , &H00 , &H00 , &H00 , &H00,
    Data &H00 , &H00 , &H00 , &H00 , &H00 , &H00 , &H00 , &H00 , &H00 , &H00 , &H00 , &H00 , &H00 , &H00 , &H00 , &H00,
    Data &H00 , &H00 , &H00 , &H00 , &H00 , &H00 , &H00 , &H00 , &H00 , &H00 , &H00 , &H00 , &H00 , &H00 , &H00 , &HFF,
    Data &H00 , &H00 , &H00 , &H00 , &H00 , &H00 , &H00 , &H00 , &H00 , &H00 , &H00 , &H00 , &H00 , &H00 , &H00 , &H00,
    Data &H00 , &H00 , &H00 , &H00 , &H00 , &H00 , &H00 , &H00 , &H00 , &H00 , &H00 , &H00 , &H07 , &H04 , &H04 , &H04,
    Data &H04 , &H04 , &H04 , &H04 , &H04 , &H04 , &H04 , &H04 , &H04 , &H04 , &H04 , &H04 , &H04 , &H04 , &H04 , &H04,
    Data &H04 , &H04 , &H04 , &H04 , &H04 , &H04 , &H04 , &H04 , &H04 , &H04 , &H04 , &H04 , &H04 , &H04 , &H04 , &H04,
    Data &H04 , &H04 , &H04 , &H04 , &H04 , &H04 , &H04 , &H04 , &H04 , &H04 , &H04 , &H04 , &H04 , &H04 , &H04 , &H04,
    Data &H04 , &H04 , &H04 , &H07 , &H00 , &H00 , &H00 , &H00 , &H00 , &H00 , &H00 , &H00 , &H00 , &H00 , &H00 , &H00,
    Data &H00 , &H00 , &H00 , &H00 , &H00 , &H00 , &H00 , &H00


    Wydaje mi się ze jak wpiszę to do procka to on wykona operację i poskasowaniu tego programu z procka w eepromie jest nadal wartość którą wpisał

    Teraz wgrywam program który ma czytać z eeprom i wyswietlać na LCD i tutaj się zaczyna problem.
    Wcześniej miałem następujący program który wyświetlał mi obrazek na wyswietlaczy LCD

    '******************** Driving graph. display NOKIA LPH7779 **********************
    '******************************* (Tiny LCD) *************************************

    $regfile = "m8def.dat"
    $crystal = 1000000
    Config Sda = Portc.4
    Config Scl = Portc.5
    Config Portc = Output
    Config Portb = Output 'communication port to LCD
    Config Spi = Soft , Din = Portb.0 , Dout = Portc.2 , Ss = None , Clock = Portc.3
    Dim A As Byte
    Dim Txloc As Byte , Tyloc As Byte , Tsub As Word , Tword As Word
    Dim Tstring As String * 84 , Tchr As String * 1
    Dim Twidth As Byte , Thigh As Byte , Yy As Byte , Xx As Byte , Tout As Byte


    '********************************************************************************
    '************************* Subprograms declarations *****************************
    Declare Sub Tcls
    Declare Sub Tlcdinit
    Declare Sub Tinverse
    Declare Sub Tgphloc(txglc As Byte , Tyglc As Byte)
    Declare Sub Tlocate(byval Txlc As Byte , Byval Tylc As Byte)
    Declare Sub Tprintf
    Declare Sub Tshowpic



    '****************************** MAIN loop **********************************START

    Call Tlcdinit

    Main_loop:

    Tlocate 0 , 0
    Restore Dane1
    Call Tshowpic
    Waitms 500
    Goto Main_loop
    End 'end program

    '********************************************************************************
    '********************************* subroutines **********************************

    '********************************** Tlcdinit *******************************START
    Sub Tlcdinit
    Spiinit
    Reset Portc.0 'LCD enable
    Reset Portb.2 'RESET LCD disp.
    Set Portb.2
    Reset Portc.1 'command mode
    Tout = &H21 'extended command mode
    Spiout Tout , 1
    Tout = &HC1 'Vop-contrast mode
    Spiout Tout , 1
    Tout = &H06 'temperature compensation
    Spiout Tout , 1
    Tout = &H13 'bias 1:48
    Spiout Tout , 1
    Tout = &H20 'normal command mode
    Spiout Tout , 1
    Tout = &H0C 'normal-horizontal LCD mode
    Spiout Tout , 1
    Call Tcls
    End Sub

    '************************************ Tcls *********************************START
    Sub Tcls
    Reset Portc.1 'command mode
    Tout = 12 'normal video mode
    Spiout Tout , 1
    Tout = 128 'RAM addr to '0000000'
    Spiout Tout , 1
    Set Portc.1 'data mode
    Tout = 0
    For Tword = 0 To 700 '84x6 sends 0 to clear LCD
    Spiout Tout , 1
    Next
    End Sub

    '*********************************** Tinverse ******************************START
    Sub Tinverse
    Reset Portc.1 'command mode
    Tout = 13 'normal video mode
    Spiout Tout , 1
    Set Portc.1 'data mode
    End Sub

    '***************************** Tgphloc(Txglc , Tyglc) ***********************START
    Sub Tgphloc(txglc As Byte , Tyglc As Byte)
    Reset Portc.1 'command mode
    Tout = Tyglc + &H40 'sets 0-5 Y-addr of RAM
    Spiout Tout , 1
    Tout = Txglc * &H06 'sets 0-13 X-addr of RAM
    Tout = Tout + &H80
    Spiout Tout , 1
    Set Portc.1 'data mode
    End Sub

    '***************************** Tlocate(Txloc, Tyloc) ***********************START
    Sub Tlocate(byval Txlc As Byte , Byval Tylc As Byte)
    Txloc = Txlc
    Tyloc = Tylc
    Tgphloc Txloc , Tyloc
    End Sub
    '************************************ Tshowpic *****************************START
    Sub Tshowpic
    Read Twidth
    Read Thigh
    For Yy = 1 To Thigh
    For Xx = 1 To Twidth
    Read Tout : Spiout Tout , 1
    Next
    Incr Tyloc
    Tgphloc Txloc , Tyloc
    Next
    End Sub


    '***********************************************(DAne)*****************

    Dane1:
    Data 84 , 6,
    Data &H00 , &H00 , &H00 , &H00 , &H00 , &H00 , &H00 , &H00 , &H00 , &HE0 , &H10 , &H10 , &H10 , &HE0 , &H00 , &H00,
    Data &H00 , &H10 , &HF0 , &H00 , &H00 , &H00 , &H00 , &H00 , &H00 , &H00 , &H00 , &H00 , &H00 , &H00 , &H00 , &H00,
    Data &H00 , &H00 , &H00 , &H00 , &H00 , &H00 , &H00 , &H00 , &H00 , &H00 , &H00 , &H00 , &H00 , &H00 , &H00 , &H00,
    Data &H00 , &H00 , &H00 , &H00 , &H00 , &H00 , &H00 , &H00 , &H00 , &H00 , &H00 , &H00 , &H00 , &H00 , &H00 , &H00,
    Data &H00 , &H00 , &H00 , &H00 , &H00 , &H00 , &H00 , &H00 , &H00 , &H00 , &H00 , &H00 , &H00 , &H00 , &H00 , &H00,
    Data &H00 , &H00 , &H00 , &H00 , &H00 , &H00 , &H00 , &H00 , &H00 , &H00 , &H00 , &H00 , &HC0 , &H43 , &H44 , &H44,
    Data &H44 , &H43 , &H40 , &H40 , &H44 , &H44 , &H47 , &H44 , &H44 , &H40 , &H40 , &H40 , &H40 , &H40 , &H40 , &H40,
    Data &H40 , &H40 , &H40 , &H40 , &H40 , &H40 , &H40 , &H40 , &H40 , &H40 , &H40 , &H40 , &H40 , &H40 , &H40 , &H40,
    Data &H40 , &H40 , &H40 , &H40 , &H40 , &H40 , &H40 , &H40 , &H40 , &H40 , &H40 , &H40 , &H40 , &H40 , &H40 , &H40,
    Data &H40 , &H40 , &H40 , &HC0 , &H00 , &H00 , &H00 , &H00 , &H00 , &H00 , &H00 , &H00 , &H00 , &H00 , &H00 , &H00,
    Data &H00 , &H00 , &H00 , &H00 , &H00 , &H00 , &H00 , &H00 , &H00 , &H00 , &H00 , &H00 , &H00 , &H00 , &H00 , &H00,
    Data &HFF , &H00 , &H00 , &H00 , &H00 , &H00 , &H00 , &H00 , &H00 , &H00 , &H00 , &H00 , &H00 , &H00 , &H00 , &H00,
    Data &H00 , &H00 , &H00 , &H00 , &H00 , &H00 , &H00 , &H00 , &H00 , &H00 , &H00 , &H00 , &H00 , &H00 , &H00 , &H00,
    Data &H00 , &H00 , &H00 , &H00 , &H00 , &H00 , &H00 , &H00 , &H00 , &H00 , &H00 , &H00 , &H00 , &H00 , &H00 , &H00,
    Data &H00 , &H00 , &H00 , &H00 , &H00 , &H00 , &H00 , &HFF , &H00 , &H00 , &H00 , &H00 , &H00 , &H00 , &H00 , &H00,
    Data &H00 , &H00 , &H00 , &H00 , &H00 , &H00 , &H00 , &H00 , &H00 , &H00 , &H00 , &H00 , &H00 , &H00 , &H00 , &H10,
    Data &H10 , &H10 , &H10 , &H10 , &HFF , &H10 , &H00 , &H00 , &H10 , &H00 , &H00 , &H10 , &H10 , &H10 , &H10 , &H10,
    Data &H10 , &H00 , &H00 , &H10 , &H00 , &H00 , &H10 , &H10 , &H10 , &H10 , &H10 , &H10 , &H10 , &H00 , &H00 , &H10,
    Data &H00 , &H00 , &H10 , &H10 , &H10 , &H10 , &H10 , &H10 , &H10 , &H00 , &H00 , &H10 , &H00 , &H00 , &H10 , &H10,
    Data &H10 , &H10 , &H10 , &H10 , &H10 , &H00 , &H00 , &H10 , &H00 , &H00 , &H10 , &HFF , &H10 , &H10 , &H10 , &H10,
    Data &H10 , &H00 , &H00 , &H00 , &H00 , &H00 , &H00 , &H00 , &H00 , &H00 , &H00 , &H00 , &H00 , &H00 , &H00 , &H00,
    Data &H00 , &H00 , &H00 , &H00 , &H00 , &H00 , &H00 , &H00 , &HFF , &H00 , &H00 , &H00 , &H00 , &H00 , &H00 , &H00,
    Data &H00 , &H00 , &H00 , &H00 , &H00 , &H00 , &H00 , &H00 , &H00 , &H00 , &H00 , &H00 , &H00 , &H00 , &H00 , &H00,
    Data &H00 , &H00 , &H00 , &H00 , &H00 , &H00 , &H00 , &H00 , &H00 , &H00 , &H00 , &H00 , &H00 , &H00 , &H00 , &H00,
    Data &H00 , &H00 , &H00 , &H00 , &H00 , &H00 , &H00 , &H00 , &H00 , &H00 , &H00 , &H00 , &H00 , &H00 , &H00 , &HFF,
    Data &H00 , &H00 , &H00 , &H00 , &H00 , &H00 , &H00 , &H00 , &H00 , &H00 , &H00 , &H00 , &H00 , &H00 , &H00 , &H00,
    Data &H00 , &H00 , &H00 , &H00 , &H00 , &H00 , &H00 , &H00 , &H00 , &H00 , &H00 , &H00 , &H07 , &H04 , &H04 , &H04,
    Data &H04 , &H04 , &H04 , &H04 , &H04 , &H04 , &H04 , &H04 , &H04 , &H04 , &H04 , &H04 , &H04 , &H04 , &H04 , &H04,
    Data &H04 , &H04 , &H04 , &H04 , &H04 , &H04 , &H04 , &H04 , &H04 , &H04 , &H04 , &H04 , &H04 , &H04 , &H04 , &H04,
    Data &H04 , &H04 , &H04 , &H04 , &H04 , &H04 , &H04 , &H04 , &H04 , &H04 , &H04 , &H04 , &H04 , &H04 , &H04 , &H04,
    Data &H04 , &H04 , &H04 , &H07 , &H00 , &H00 , &H00 , &H00 , &H00 , &H00 , &H00 , &H00 , &H00 , &H00 , &H00 , &H00,


    Ale teraz chcę tak przerobić program zeby on czytał ten obrazek z pamieci eeprom a z programu go chcę wykasować.
    NIe wiem jak mam to napisać?
    Proszę o pomoc
    Pamięć mam podłączoną tak jak było napisane w poscie powyżej
    Vcc do zasilania SCL do SCL mikroprocesora SDA do SDA uP a reszta do masy.
  • #8 814659
    BoskiDialer
    Poziom 34  
    Posty: 1530
    Pomógł: 353
    Ocena: 42
    Józek1 napisał:

    (drugi kod)
    (...)
    Main_loop:
    Tlocate 0 , 0
    Restore Dane1
    Call Tshowpic
    Waitms 500
    Goto Main_loop
    End 'end program
    (...)

    przecież dane zapisywałeś do eeproma poto aby później uniknąć ich umieszczania w programie, więc pogrubioną linijke powinieneś zastąpić przez odczyt z pamięci eeprom, ew, po resecie załadować eeprom do pamięci ram i wtedy odczyt robic z pamięci ram. (o ile niebraknie pamięci)
  • #9 815722
    Józek1
    Poziom 11  
    Posty: 47
    Własnie nie wiem jak tą linike zastąpić
    Pisałem coś takiego

    I2creceive 161, value, ?, ?

    tam gdzie są znaki ? to nie wiem do końca co wpuisać rozumiem że ilość byte odebranych ale po co ilość byte wysłanych przy odbiorze.

    Gdybyś mi napisał jak to trzeba zapisać to byłbym bardzo wdzięczny

    Też nie mam pewności czy coś jest w pamięci albo gdzie to się znajduje. Jak mam wywołać z pamięci ten konkretny obrazek który wysłałem ale nawet nie wiem czy tam jest.
    Poza tym nie wiem jak wykasować pamięć. Jak np kilka razy wpisuję do pamięci to samo to co się z tym dzieje. Czy jest w pamięci tylko pod innym adresem
    Proszę o pomoc i zgóry dziekuję.
  • #10 816051
    BoskiDialer
    Poziom 34  
    Posty: 1530
    Pomógł: 353
    Ocena: 42
    hm.. przy i2cwbyte niewidze delay'a 10ms na to aby eeprom mógł zapisac dane, z tego 'loadera' do eeproma wywnioskowałem że ten 'obrazek' (tablica bajtów) jest ładowany pod adresy od 0 do 255. kolejny błąd jaki widze to 'to' że tablica ta ma 504 bajty i w żaden sposób niezostanie cała zapisana do eeproma przez ten pierwszy kod. kolejny problem jest taki że nieznam sie na bascomie i tobie w tym problemie niepomoge. ale z tego co wnioskuje po kodzie "Restore Dane1" ustawia wskażnik odczytu na 'Dane1' a 'Read zmienna' odczytuje bajt kodu programu z tego adresu, i inkrementuje wskaźnik. w ten sposób można napisać 2 funkcje: inicjującą i wykonującą. inicjująca (zamiast restore) wpisała by adres (wartość 0) pierwszej komórki w pamięci ram do jakiejś zmiennej adresowej, a druga (zamiast read) by odczytywała bajt danych z eeproma do zmiennej i inkrementowała wskaźnik.

Podsumowanie tematu

✨ Problem dotyczy błędnego wykrywania adresów pamięci EEPROM 24C04 na płytce testowej AVT 2500 podczas próby odczytu adresów I2C za pomocą mikrokontrolera AT89C2051. Pamięć 24C04 ma 512 bajtów podzielonych na dwie strony po 256 bajtów, każda strona adresowana jest jako osobny układ z różnymi adresami bazowymi, wynikającymi z konfiguracji pinów A0, A1, A2. Piny te, jeśli są zwarte do masy, ustalają adres bazowy 1010000x, gdzie x oznacza bit odczytu/zapisu. Pin WP (Write Protect) blokuje zapis, gdy jest podłączony do Vcc, a odblokowuje przy podłączeniu do masy lub pozostawieniu niepodłączonym (wiszącym). W przypadku problemów z zapisem i odczytem należy zweryfikować stan pinów A0-A2 oraz WP zgodnie z dokumentacją producenta pamięci. W dyskusji pojawiły się także uwagi dotyczące programowania i odczytu danych z EEPROM 24C64 za pomocą mikrokontrolera Atmega8, gdzie ważne jest stosowanie odpowiednich opóźnień po zapisie oraz prawidłowe adresowanie i obsługa pamięci. Wskazano, że dane w EEPROM są podzielone na strony i że odczyt powinien uwzględniać właściwe adresy i protokół I2C, a także że wielokrotne zapisywanie tych samych danych nadpisuje istniejące, a nie tworzy nowe wpisy. Problemy z odczytem mogą wynikać z braku danych w pamięci lub nieprawidłowego adresowania. Zalecane jest dokładne zapoznanie się z notą katalogową pamięci oraz prawidłowe podłączenie pinów adresowych i WP.
Podsumowanie AI na podstawie dyskusji. Może zawierać błędy.
REKLAMA