Nabend, ich versuche gerade eine Digitaluhr mit einem atmega zu realisieren. Ich will über den Timer0 alle Sekunde einen Interrupt auslösen, welcher dann die Zeit hochzählt und entsprechend ausgibt. Irgendwie funktioniert nichtmal dieser Interrupt. Wenn ich in der endlosschleife immer die Sekunden ausgeben lasse (PORTD geht an 7seg anzeigen) so verändern diese ihren Wert nie. also geh ich davon aus, dass der Interrupt nie ausgelöst wird, bzw aus irgend einem Grund meine ISR nicht aufgerufen wird. Ich benutze hier: "ISR(TIMER1_OVF_vect) {", diese sollte ja eigentlich nach jedem overflow von Timer1 aufgerufen werden. Es wär echt super wenn ihr mal drüberschauen könntet. Ich finde den Fehler beim besten Willen nicht.(Ich hocke da schon n kleines Weilchen dran und habe schon das ein oder andere ausprobiert) danke schonmal!!!! hier der Code: http://ubuntuusers.de/paste/218296/ es ist sehr viel auskommentiert, weil ich das ein oder andere ausprobiert habe.
Hab' ich's übersehen oder hast du vergessen OCR1B zu beschreiben? Ich kenne die Taktfrequenz nicht, aber davon abhängig muss ja der Teiler und das Register gesetzt werden. Achso: der Overflow-INT ist ja dafür auch nicht geeignet, da muss der Output-Compare-INT 'ran.
wieso ist der Overflow-INT ungeeignet? In diesem Turtorial: http://www.mikrocontroller.net/articles/DCF77-Funkwecker_mit_AVR wird dieser auch für eine Uhr benutzt. Derzeit bekomme ich irgendwie überhaupt keinen Interrupt, das verwirrt mich sehr. Also ich habe mal in die ISR ein "PORTD=9" geschrieben, aber dies wird irgendwie nie ausgeführt, also bekomme ich keinen Interrupt. Prescaler sollte ja mit: "TCCR1B |= (1<<CS12);" gesetzt sein.
Welchen Quarz benutzt du eigentlich? Sind die Fuses richtig gesetzt? => 'externer Quarz'
Versuch mal deine sekunden-Variable volatile zu deklarieren, kann gut sein das der Compiler in main die Zugriffe darauf alle wegoptimiert hat, weil der Wert aus seiner Sicht konstant ist.
ich benutze einen externen Quarzoszillator. Die fuses sollten richtig gesetzt sein.
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.