Elektroda.pl
Elektroda.pl
X
Please add exception to AdBlock for elektroda.pl.
If you watch the ads, you support portal and users.

[C][ATmega8][AtmelStudio 7] - Zmienna w EEPROM.

sq9etc 09 Feb 2016 21:11 1158 10
  • #1
    sq9etc
    Level 12  
    Czy jeżeli w ten sposób zadeklaruję zmienną w pamięci EEPROM:
    Code: c
    Log in, to see the code

    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:
    Code: c
    Log in, to see the code
  • #2
    excray
    Level 40  
    A czy coś zapisałeś do tej zmiennej? A czy przy programowaniu zaznaczyłeś bit "nie kasuj eeprom"?
  • #3
    sq9etc
    Level 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.
  • #4
    kamyczek
    Level 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
    excray
    Level 40  
    sq9etc wrote:
    Nie zaznaczyłem bitu. Gdzie to się robi?

    W fusebitach bit EESAVE.
  • #6
    kamyczek
    Level 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
    sq9etc
    Level 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:
    Quote:
    -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
    excray
    Level 40  
    Możesz pobrać MKAVRCalculator. M8 można programować bez licencji.
  • #9
    sq9etc
    Level 12  
    Wiem, używałem, ale czy pozwoli mi to zaprogramować EEPROM domyślnymi wartościami zmiennych?
  • #10
    tmf
    Moderator of Microcontroller designs
    sq9etc wrote:
    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
    tronics
    Level 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.