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

ATTiny2313 - dlaczego zapis do EEPROM kasuje wcześniejsze dane?

mirekk36 15 Lis 2006 01:52 1307 4
REKLAMA
  • #1 3225990
    mirekk36
    Poziom 42  
    Posty: 9195
    Pomógł: 964
    Ocena: 2289
    Witam,

    mam prostą procedurkę do zapisu EEPROMa

    na wejściu w R16 podaje się daną do zapisu
    i w R17 adres EEPROM

    Write_EEPROM:
    WE_wait:
    sbic EECR, EEPE
    rjmp WE_wait

    out EEAR, R17
    out EEDR, R16

    cli
    sbi EECR, EEMPE
    sbi EECR, EEPE

    sei

    ret

    dokonuję zapisu np do dwóch komórek pamięci i wszystko jest ok - ale np kolejnym razem chcę zapisać coś do innych dwóch komórek pamięci i też się zapisuje tylko, że zawartość tych 2 pierwszych jest skasowana - dlaczego????

    gdzieś robię błąd??
  • REKLAMA
  • Pomocny post
    #2 3226312
    szymtro
    Poziom 30  
    Posty: 1421
    Pomógł: 101
    Ocena: 59
    Może za szybko zapiszujesz albo niepełny ten zapis?
    ;ldi r18,128 clr r16 cli
    ;eeprom_zapis:
    ;	out eear,r16 ;adres w eeprom
    ;	out eedr,r16 ;zmienna w eeprom
    ;	sbi eecr,2 ;ustawienie EEMWE
    ;	sbi eecr,1 ;impuls EEWE
    ;	test: sbic eecr,1 rjmp test
    ;	inc r16
    ;cpse r16,r18 rjmp eeprom_zapis sei ;sprawdz czy adres rowny

    Jak widać służyło do zapisania kolejno zmiennych do eeproma - działało bardzo dobrze.
    I jeszcze coś takiego mam:
    			lds r23,(rs_rx_adres) out eear,r23 ;adres w pamieci eepromwewnetrznej
    			lds r24,(rs_rx_dane) out eedr,r24 ;dane do pamieci wewnetrznej
    			sbi eecr,2 sbi eecr,1 ;ustawienie EEMWE i impuls EEWE
    			rs_rx_test: sbic eecr,1 rjmp rs_rx_test ;oczekiwanie na koniec zapisu
  • REKLAMA
  • #3 3226605
    mirekk36
    Poziom 42  
    Posty: 9195
    Pomógł: 964
    Ocena: 2289
    Witam,

    dzięki szymtro za zainteresowanie i procedurki - twoja pierwsza różniła się od mojej w zasadzie tylko ty, że oczekiwanie które ty zrobiłeś na końcu procedurki zapisu

    Cytat:
    rs_rx_test:
    sbic eecr,1
    rjmp rs_rx_test ;oczekiwanie na koniec zapisu


    to ja mam na początku przy wejściu

    Cytat:
    WE_wait:
    sbic EECR, EEPE
    rjmp WE_wait


    no ale dzięki temu, że sprawdziłem to przy innej procedurze niż swoja (a wiem że działa u ciebie bez problemu) a miałem taki sam efekt to zacząłem szukać u siebie jeszcze jakiegoś błędu i znalazłem ;) ...

    okazało się, że zapisywałem coś do komórek, potwm w programie zmieniałem adresy tych komórek - programowałem ponownie uC - następnie znowu robiłem wpis do kolejnych komórek i .... okazało się, że PonyProg pomimo, że robię przy programowaniu tylko opcję "Write program memory FLASH" to i tak w międzyczasie kasuje on zawartość EEPROMA!!! .... ;) i dlatego nie sprawdzałem po zaprogramowaniu Flasha pamięci EEPROM bo przyjąłem za pewnik, że korzystając z tej opcji zostawia ją w spokoju.... DZIĘKI
  • REKLAMA
  • #4 3226647
    szymtro
    Poziom 30  
    Posty: 1421
    Pomógł: 101
    Ocena: 59
    W takim razie włącz sobie fusebit ochrony eeprom. Bo tak naprawdę eeprom skasuje ci się w momencie chip erase.
REKLAMA