WDT Interrupt trotzdem nach cli? Mega1284P

OP #2259333
Lesenswert?

Moin,

ich verwende einen Atmega1284P, der hat eine WDT Interrupt. Dazu hätte 
ich ein paar Fragen.

In einem Programm verwende ich dieses WDT Interrupt, aber teilweise 
benutzte ich die cli() Funktion, weil ich in manchen Funktionen nicht 
von interrupts unbrochen werden darf. Aber ich diesen Funktionen kann es 
auch passieren, das sich der MC aufhängt. Wird das Interrupt dann 
trotzdem ausgeführt, oder muss ich nach jedem Cli das Bit für das WDT 
Interrupt wieder setzten?

Wenn das Inetruppt ausgelöst wird, sende ich noch ein paar Daten zum PC, 
kommt beim Verlassen ein automatischer Reset, oder muss ich den per hand 
auslösen?

MfG
Philipp
Persönliche Seite #2259343
Lesenswert?

Hallo,

nach einem CLI werden bis zum nächsten SEI keinen Interrupts ausgeführt. 
Allerdings gehen die Interrupts, die nach einem CLI auftreten, nicht 
verloren, sondern werden nach dem SEI ausgeführt. Tritt ein Interrupt 
nach dem CLI 2 Mal auf, wird er nach dem SEI trotzdem nur 1 Mal 
ausgeführt. Ob ein Reset nach dem WDT-Interrupt kommt, kannst du in den 
WDT-Steuernbits / in den Fusebits einstellen (glaube ich, habe ich noch 
nicht gemacht).


Gruß
Jonathan
OP #2259359
Lesenswert?

Ok, danke.

Wie sieht das eig. beim UART_RX Interrupt aus. Wenn wärend alle 
Interrupts aus waren, und wärenddessen 2 oder mehr Zeichen im Hardware 
Buffer ankommen, wird das UART_RX Interrupt nach dem sei() dann auch nur 
einmal ausgeführt? Oder solange, bis der Hardware Buffer leer ist?

MfG
Philipp
Gast #2259361
Lesenswert?

Schade nur, wenn das Programm hängt ud sei() nicht mehr ausgeführt 
werden kann. In dem Fall solltest du dann nicht mit cli() arbeiten, 
sondern alle aktivierten Interrupts außer dem Watchdog einzeln per Hand 
abschalten.

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren