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

[C] Czy zmienna EEPROM w ATmega8 powinna być zapisana podczas programowania?

sq9etc 09 Lut 2016 21:11 1209 10
REKLAMA
  • #1 15420691
    sq9etc
    Poziom 12  
    Czy jeżeli w ten sposób zadeklaruję zmienną w pamięci EEPROM:
    Kod: C / C++
    Zaloguj się, aby zobaczyć kod

    to wartość, którą została zainicjalizowana nie powinna zostać zapisana do EEPROM podczas programowania mikrokontrolera?
    Po odczytaniu zmiennej z EEPROM dostaję 65535 zamiast 270.
    Czytam w ten sposób:
    Kod: C / C++
    Zaloguj się, aby zobaczyć kod
  • REKLAMA
  • #2 15420736
    excray
    Poziom 41  
    A czy coś zapisałeś do tej zmiennej? A czy przy programowaniu zaznaczyłeś bit "nie kasuj eeprom"?
  • REKLAMA
  • #3 15420819
    sq9etc
    Poziom 12  
    Nie zaznaczyłem bitu. Gdzie to się robi?
    Do programowania używam USBasp-a i AVRDude odpalanego z Atmel Studio.
    Z zapisem do EEPROM, nie mam problemu, chodzi mi o wartość inicjującą zmienną.
    Dopóki nie zapiszę czegoś w EEPROM to mam tam 65535 zamiast 270, a chciałbym, żeby 270 było tam od razu po zaprogramowaniu mikrokontrolera (o ile to możliwe).
    To ma być taka wartość domyślna.
  • REKLAMA
  • #4 15425905
    kamyczek
    Poziom 38  
    tak samo jak wgrywasz flash z programem możesz wgrać zawartość pamięci eeprom pomiń tylko komórkę z adresem 0h bo bywa że się przypadkiem zapisze przy starcie układu reszta do twojej dyspozycji ;)

    w zakładce programatora memories masz w górnej linijce ścieżkę do wyboru pamięci flash a w kolejnej ścieżce wpisujesz ścieżkę do pliku z zawartością eeprom . wgrywasz obie pamięci i masz co chcesz ;)
  • #5 15426195
    excray
    Poziom 41  
    sq9etc napisał:
    Nie zaznaczyłem bitu. Gdzie to się robi?

    W fusebitach bit EESAVE.
  • REKLAMA
  • #6 15426356
    kamyczek
    Poziom 38  
    eesave służy do tego żeby podczas kasowania mikrokontrolera pozostawić zawartość eeproma i ma się to do obecnej sytuacji jakoś nijak . Kolega zapisuje eeprom nastawami i chce wprowadzić do eeproma nastawy początkowe ,które by czytał podczas pierwszego uruchomienia mikrokontrolera po zaprogramowaniu . zapisanie eesave da jedynie tyle że przy zmianie programu we flash eeprom pozostanie niezmieniony bo się nie skasuje . W gotowym urządzeniu jest to raczej niepotrzebne chyba że chcemy pozostawić jakieś dane w eepromie.
  • #7 15426809
    sq9etc
    Poziom 12  
    W ogóle nie korzystam z rzeczy, o których piszecie zawartych w AtmelStudio. IDE nie wspiera USBasp-a, więc mam jako zewnętrzne narzędzie podpięty AVRdude z argumentami:
    Cytat:
    -e -P usb -c USBasp -p m8 -e -U flash:w:$(ProjectDir)Release\$(TargetName).hex:a


    Nie mam dostępu, ani do zakładki "Memories" programatora, ani do fusebitów w AtmelStudio. Będę musiał rozkminić, co znaczą te argumenty dla AVRdude. Pewnie w nich coś siedzi. Skorzystałem z gotowca jak programować USBasp-em pod AtmelStudio, bez wnikania w szczegóły.
  • #8 15426821
    excray
    Poziom 41  
    Możesz pobrać MKAVRCalculator. M8 można programować bez licencji.
  • #9 15426839
    sq9etc
    Poziom 12  
    Wiem, używałem, ale czy pozwoli mi to zaprogramować EEPROM domyślnymi wartościami zmiennych?
  • #10 15427154
    tmf
    VIP Zasłużony dla elektroda
    sq9etc napisał:
    Wiem, używałem, ale czy pozwoli mi to zaprogramować EEPROM domyślnymi wartościami zmiennych?


    Do powyższej linii dotyczącej USBasp wystarczy dodać polecenie programowania EEPROM. Albo programować procek plikiem elf - nowe AVRDude to potrafi.
  • #11 15427851
    tronics
    Poziom 38  
    AVRDUDESS i masz graficzne środowisko oparte o AVRDUDE gdzie możesz sobie z .hex zaprogramować flash, a z .eep zaprogramować eeprom (jeśli masz w ustawieniach projektu zaznaczone "Generate .eep" - AVR GNU/Common, output files. Łatwo i przyjemnie. Albo jak tmf rekomenduje elf który za jednym zamachem załatwi sprawę flash, eeprom jak i fusebits.
REKLAMA