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

[ATMega168][C] Obsługa EEPROM

007pablo 29 Gru 2011 18:54 1129 5
  • #1 10320071
    007pablo
    Poziom 10  
    Witam serdecznie,

    Czy używanie składni:
    Kod: C / C++
    Zaloguj się, aby zobaczyć kod


    wiąże się z koniecznością eeprom_busy_wait() po każdym użyciu eeprom_write_byte()?
  • #3 10320340
    007pablo
    Poziom 10  
    Kiedy więc stosować eeprom_busy_wait()?
  • Pomocny post
    #4 10320404
    mirekk36
    Poziom 42  
    Widzę, że lubisz sobie komplikować życie na własne życzenie ;)

    W ogóle nie musisz tego stosować, jeśli będziesz korzystał z takich funkcji jak:

    eeprom_write_byte()
    eeprom_write_wird()
    eeprom_write_block()

    a w zasadzie żadne inne nie będą ci potrzebne ;)
  • #5 10320719
    007pablo
    Poziom 10  
    Dzięki. Jeszcze jedno pytanko. Czy taki zapis jest prawidłowy:

    Kod: C / C++
    Zaloguj się, aby zobaczyć kod


    actual to zmienna typu int
  • #6 10321288
    mirekk36
    Poziom 42  
    Najlepiej nigdy, przenigdy nie rób takich rzeczy ;) Argumentem tej funkcji powinien być wskaźnik ale ty stosujesz tu rzutowanie i na własną rękę numerujesz komórki pamięci w EEPROM. To doprowadzi cię kiedyś do zagłady ;)

    jak już to najpierw zdefiniuj sobie zmienną w pamięci EEPROM:

    unsigned char zmienna EEMEM;


    a potem np:

    mem_year = eeprom_read_byte( &zmienna );

    albo

    eeprom_write_byte( &zmienna, mem_year );


    Jednak i taki zapis danych w pamięci EEPROM może doprowadzić się na dłuższą metę do szaleństwa ;)

    Najlepiej to sobie zorganizować jakąś dużą strukturę, wewnątrz której będziesz miał zdefiniowane wszystkie zmienne jakie chcesz przechowywać w EEPROM, np:

    Kod: C / C++
    Zaloguj się, aby zobaczyć kod


    a potem korzystaj z funkcji typu: eeprom_read_block(), albo eeprom_write_block(). Takie rozwiązanie będzie bardzo bezpieczne. Bo masz pewność, że kompilator zawsze odpowiednio poukłada dane w EEPROM i nie będzie trzeba się w ogóle zajmować czy myśleć o adresach bezwzględnych.
REKLAMA