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

[ATmega8][AVR gcc] - Definicja wyglądu znaków LCD w EEPROM

zweinstein 05 Lut 2013 11:42 2577 9
REKLAMA
  • #1 11890944
    zweinstein
    Poziom 17  
    Witam,
    Z powodu kończących się zasobów pamięci flash jestem zmuszony przenieść definicje wyglądu znaków wyświetlacza LCD od nokii 3310. Deklaracja tablicy oraz fragment tablicy wygląda tak:
    Kod: C / C++
    Zaloguj się, aby zobaczyć kod


    Odczytu dokonuję w pętli wyświetlającej poszczególne elementy tablicy w funkcji wyświetlającej znak:
    Kod: C / C++
    Zaloguj się, aby zobaczyć kod


    Zapis eeprom odblokowałem w pliku Makefile. Na wyświetlaczu krzaki. Prawdopodobnie odczyt ma złą składnie. Proszę o pomoc.
  • REKLAMA
  • Pomocny post
    #2 11891039
    tehaceole

    Poziom 28  
    Odczytywałeś programatorem zawartość EEPROM? Zacząłbym właśnie od sprawdzenia, czy dane rzeczywiście tam są.
  • REKLAMA
  • #3 11891194
    McMonster
    Poziom 32  
    I od wywołania avrdude, czy uwzględnia programowanie EEPROMu.
  • REKLAMA
  • #4 11891221
    zweinstein
    Poziom 17  
    Dzięki za podpowiedź. Już wszystko działa.

    Problem polegał na tym, że po zapisaniu danych do eepromu wyłączyłem programowanie eepromu w pliku makefile aby nie forsować tej pamięci. Programator kasował za każdym razem pamięć EEPROM i nic nie wpisywał bo zablokowałem zapis EEPROM.

    Jeszcze jedno pytanie na zakończenie: Czy rzeczywiście programator kasuje pamięć EEPROM przy programowaniu nawet jeśli nie dokonuje zapisu EEPROMu?
  • #5 11891242
    tadzik85
    Poziom 38  
    Odpowiedz znajdziesz w ustawieniach fusebitów.
  • REKLAMA
  • #6 11891246
    tehaceole

    Poziom 28  
    FuseBit EESAVE.
  • #7 11891409
    zweinstein
    Poziom 17  
    Więc jeżeli bit EESAVE nie jest ustawiony, to czy kasuje pamięć EEPROM, nawet jeśli nie programuję EEPROMu?

    A jeżeli ustawię bit EESAVE, to programator nadpisuje EEPROM bez jego kasowania czy w ogóle nie dokonuje zapisu do EEPROMU?

    Sorry za tyle pytań, ale chcę mieć pewność i wyczerpać zagadnienie do końca. :)
  • #8 11891602
    tadzik85
    Poziom 38  
    To ustawia brak kasowania podczas programowania (kasowania), zapis eeprom ustawia się przy programowaniu.
  • #9 11893208
    tmf
    VIP Zasłużony dla elektroda
    zweinstein napisał:
    Więc jeżeli bit EESAVE nie jest ustawiony, to czy kasuje pamięć EEPROM, nawet jeśli nie programuję EEPROMu?

    A jeżeli ustawię bit EESAVE, to programator nadpisuje EEPROM bez jego kasowania czy w ogóle nie dokonuje zapisu do EEPROMU?


    EESAVE powoduje, że polecenie chiperase nie kasuje pamięci EEPROM i nic więcej. Czyli po programowaniu to co było w niej wcześniej zostaje. Nie ma wpływu na zapis do EEPROM co prowadzi do pewnej niedogodności - jeśli w procku z ustawionym EESAVE spróbujesz wgrać plik do EEPROM z inną zawartością niż ta, która w tej pamięci już jest to wyskoczą błędy - wynika to z tego, że bit w EEPROM można tylko kasować, lecz nie można go ustawiać, w efekcie jeśli wyjściowo komórka ma wartość inną niż 0xff to najpewniej pojawi się problem.
  • #10 11894591
    mirekk36
    Poziom 42  
    zweinstein napisał:
    Więc jeżeli bit EESAVE nie jest ustawiony, to czy kasuje pamięć EEPROM, nawet jeśli nie programuję EEPROMu?

    A jeżeli ustawię bit EESAVE, to programator nadpisuje EEPROM bez jego kasowania czy w ogóle nie dokonuje zapisu do EEPROMU?

    Sorry za tyle pytań, ale chcę mieć pewność i wyczerpać zagadnienie do końca. :)


    Proponuję ci obejrzeć ten poradnik VIDEO

    http://mirekk36.blogspot.com/2012/11/avr-eeprom-struktury-poradnik-do-ksiazek.html

    który pokaże ci jak w ogóle warto podchodzić do pamięci EEPROM i czy aby na pewno opłaca się wgrywać coś do EEPROM z poziomu kompilacji programu. Tym bardziej, że czcionki warto bardziej trzymać we Flash bo i ich odczyt jest wtedy o wiele szybszy. Obejrzyj i rozważ różne za i przeciw. Bo działając zgodnie z tym poradnikiem - czochrać cię będzie EESAVE - zobaczysz dlaczego ;)
REKLAMA