Hallo, ich bastel ein Programm für den AVR m8 zusammen, dass u. a. eine Uhr enthält. Nun hätt ich gerne, dass die Variablen Std/Min/Sek ihre Werte behalten, wenn ich Reset betätige. (Eeprom ist anderweitig verplant und eine Backupbatterie gegen Stromausfall gibt es eh). Mein Fragen: a) Behält der RAM die Werte bei einmal Reset-Taster drücken? Behält er sie bei ISP-flashen? b) Wie schalte ich die Initialisierung seitens des avr-gcc aus? Habe schon hier nachgeguckt und nichts gefunden: http://www.nongnu.org/avr-libc/user-manual/FAQ.html#faq_varinit Ich hatte zwischendurch die Idee, die Zeit über einen Pointer auf _end + meine_Stelle zu speichern, aber im Manual steht drin, dass z. B. printf auf malloc zugreift. Also ist das keine gute Idee.
wie wäre es mit einem zusatzlichem eeprom
Gast
#3406367
Für 2..3 Byte kein Platz im EEPROM? Schade! Dumm gelaufen. Vergiss das Projekt... :-(
Dafür hat man im PC einen Schaltkreis mit Batterie, wäre das eine Lösung?
Karl-Heinz Meyer schrieb: > a) Behält der RAM die Werte bei einmal Reset-Taster drücken? Behält er > sie bei ISP-flashen? Ja. Nein. Karl-Heinz Meyer schrieb: > b) Wie schalte ich die Initialisierung seitens des avr-gcc aus? Variablen in die .noinit Section legen. http://www.nongnu.org/avr-libc/user-manual/mem_sections.html
Bernie schrieb: > Für 2..3 Byte kein Platz im EEPROM? 2..3 Byte schon, aber kein Platz für einen Ringspeicher... 1000000 ( 24 * 60 ) < 70 d.h. Eeprom bald kaputt. So richtig wichtig ist's nicht, ich dachte nur, vielleicht kenn jemand auf die Schelle eine Trick. Eine Idee hab ich noch, ich meine, malloc() initialisiert nicht, dass könnte dann gehen. Ich werds ausprobieren.
Stefan Ernst schrieb: > Variablen in die .noinit Section legen. Danke funktioniert!
Externer RTC-Chip wäre auch eine Lösung :)
Wo ist die .noinit Sektion , bzw wo lege ich diese in sinnvoller Weise hin? Bei mir sind die Variablen _sbss und _ebss nicht definiert, und deshalb 0.
Jetzt geht es auch bei mir :-) So einfach, manchmal hilft weniger.
Antwort schreiben
Bitte melde dich an, um einen Beitrag zu schreiben.