Speicherverlust bei Interrupt

Gast #1418779
Hallo,

ich habe einen Interrupt-gesteuerten Timer gebastelt, der mir sec, min, 
hour über usart ausgeben soll. funktioniert auch soweit.

jetzt habe ich zusätzlich einen Externen Interrupt eingebaut, der es mir 
erlaubt die Zeit nur auf Tastendruck über die serielle schnittstelle 
auszugeben. Dabei rufe ich meine "usart_tx"-funktion in der ISR() des 
externen Inetrrupts auf.

Das Problem ist:
nach jedem Externen Interrupt, beginnt der Timer wieder von vorne. 
sprich die werte (sec, min, h) werden zurückgesetzt.

woran liegt das, muss ich die Timer-Variablen irgendwo sichern/kopieren, 
bevor ich sie an die Uart-Ausgabe übergebe? habe sie als "volatile 
unsigned int" deklariert.

Danke im Voraus
Gast
Hallo Thom,

beim Eintritt in die Interruptroutine solltes du die Register, die du 
veränderst mit PUSH auf dem Stack sichern. Und am Ende mit POP in 
umgekehrter Reihenfolge wieder herstellen (FILO).

Gruß
Stefan
Gast
"Wenn ich bei meinem Auto zuviel Gas gebe, klapperts vorne links. Was 
ist da nicht in Ordnung?"

Das kann ungefähr 328 verschiedene Gründe haben. Ohne Source darfst Du 
mehr als irgendwelche Ins-Blaue-Vermutungen nicht erwarten.
Gast
den hab ich noch wegen der auskommentierten pwm-ausgabe aktiviert. das 
problem bleibt aber bestehen, auch wenn ich den timer1 compare-match 
interrupt nicht aktiviere.
du meinst doch das setzen des OCIE1A-Bits, oder? (TIMSK =(1<<OCIE1A)
Du hast auch noch den Transmit Complete Interrupt enabled ohne einen 
Handler dafür zu haben.

Wenn dein µC resettet, dann hat das meistens 2 Ursachen
* ein Hardwareproblem, welches die Versorgungsspannnug versaut
* irgendein Interrupt, für den es keinen Handler gibt ist eingeschaltet.
  Sowas findet man, indem man alle Konfigurationen durchgeht und
  nachsieht welche Bits in die Konfig-Register geschrieben werden.
  Und zwar ausnahmslos alle!

Antwort schreiben

Eine eigene Frage? Dieser Thread ist über 17 Jahre alt. Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.

Neuen Thread starten

Eine Lösung, Ergänzung oder Rückmeldung zu diesem Thread? Dann antworte hier.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.