Forum: Mikrocontroller und Digitale Elektronik PingPong (ATMega8A) - Resetproblem


von Alexander S. (ahasor)


Angehängte Dateien:

Lesenswert?

Hallo an alle,
vor allem an die, die Erfahrung mit dem Franzis-Pingpong von B. Kainka 
haben.

es geht um folgendes: Ich habe mir zum Ziel gesetzt, auf dem beim "Big 
C" erhältlichen Pingpongspiel zum selbst zusammenlöten eine Uhr zu 
programmieren. Sie kann die Zeit anzeigen und nach 30s kommt sie in den 
Power Save Mode, aus dem sie mit einem externen Interrupt wieder 
aufgeweckt wird.
Für die Zeitmessung ist ein externer Quarz verantwortlich.
Das Problem ist nun, dass sich die Uhr nach ca. 160s im Sleepmode 
"resettet" und von vorn zählt...
Dabei werden aber im MCUSCR-Register keine Bits gesetzt, es handelt sich 
also um keinen tatsächlichen Reset.

Das ist mein erstes Projekt, was Mikrocontroller überhaupt betrifft und 
ich bin für jede Hilfe dankbar!
AVR- und AVR-gcc Tutorial haben mir schon sehr geholfen.

von Alexander S. (ahasor)


Lesenswert?

Noch etwas: mit Auslösen des externen Interrupts (Knopf) läuft die Uhr 
wieder 160s länger.

Beitrag #5901228 wurde von einem Moderator gelöscht.
von Christian S. (roehrenvorheizer)


Lesenswert?

Hallo,

ist Dein Programm ziemlich groß und benutzt viel RAM?

Falls ja, könnte es sich um einen Stacküberlauf handeln.

MfG

von Alexander S. (ahasor)


Lesenswert?

Danke für den Tipp, aber an einem Stack overflow scheint es nicht zu 
liegen... Hab vor allem bei den defines noch ein wenig eingekürzt und 
math-und bool- headerfile nicht mehr included, aber es hat sich am 
Verhalten der Uhr nichts geändert.

Hat jemand noch eine Idee?

von Jim M. (turboj)


Lesenswert?

Das sei() und sleep_mode() im Interrupt Handler für TIMER2_OVF_vect baut 
Dir IMHO einen hübschen Stack überlauf.

von Alexander S. (ahasor)


Lesenswert?

Ja, das war es! Hab es jetzt in die main() ausgelagert und es 
funktioniert!
Vielen, vielen Dank! Den Fehler hätte ich sonst nie gefunden.

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.