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.
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.
Hallo, ist Dein Programm ziemlich groß und benutzt viel RAM? Falls ja, könnte es sich um einen Stacküberlauf handeln. MfG
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?
Das sei() und sleep_mode() im Interrupt Handler für TIMER2_OVF_vect baut Dir IMHO einen hübschen Stack überlauf.
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.