Forum: Mikrocontroller und Digitale Elektronik Unterscheidung flashen & reset bzw. wissen wann ob Stromversorgungunterbrochen


von Jeff (Gast)


Lesenswert?

Hallo,

ich möchte in meinem Programm den Unterschied zwischen Flashen und 
Reset(nach Unterbrechung der Stromversorgung) feststellen.

- Die Möglichkeit mit Schalter:
Beim Flashen Taster drücken, abfragen, wenn gedrückt wurde geflasht. 
Wenn nicht gedrückt -> Spannungsversorgung unterbrochen.

- Geht das auch ohne Taster?

Bei jedem Programmstart eine Variable im EEPROM hochzählen. Wenn die 
Variable > 1 ist = Spannungsversorgung war unterbrochen
Dann müsste ich nur beim Flashen die Variable irgendwie direkt wieder 
auf Null zurücksetzen können. Geht das? Wie?

habe das gelesen: 
http://www.mikrocontroller.net/articles/AVR-GCC-Tutorial#EEPROM

schreiben&lesen im Programm kann ich
aber direkt das EEPROM löschen bzw. Variable Null setzten habe ich nicht 
verstanden.

Ich würde beim Programstart
1. Variable aus eeprom auslesen
2. Variable++;
3. Variable schreiben
4. Prüfen if(Variable>1){};

Und beim Flashen
1. Variable in eeprom definieren
2. Variable = 0;

Wie kann ich die Schritte "beim Flashen" realisieren?
Danke

von Helge O. (_elko_)


Lesenswert?

Kannst du beim Flashen das EEPROM nicht einfach resetten? Die Variable 
wird von deinem Programm dann doch eh neu angelegt.

von spess53 (Gast)


Lesenswert?

Hi

Reicht da nicht u.U. die Auswertung des MCUSR. Nach dem Flashen oder 
nach Reset ist PORF nicht gesetzt.

MfG Spess

von Jeff (Gast)


Lesenswert?

Ja genau das funktioniert mit auswerten der MCUSR
EXTPF  Externes Interrupt Flag (z.B. beim Flashen)
PORF   Power On Reset Flag

folgende Seiten helfen:
http://www.avr-modelleisenbahn.de/atmega8/6-2-mcu-register-atmega8.htm
http://www.rn-wissen.de/index.php/Avr-gcc#Reset_ausl.C3.B6sen

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.