Gast
#1127982
Hallo zusammen,
habe folgendes Problem mit Interrupts!
Ich habe ein Programm geschrieben, welches einen externen Timer benutzt,
dieser Timer hat einen Timer overflow interrupt, der auch einwandfrei
funktioniert. Zusätzlich, habe ich auch eine Interruptroutine, die
ausgelöst wird, wenn ein Bit über die USART0 geschickt wird. Jetzt würde
ich gerne alle Interrupts ausschlaten, also auch den timer anhalten,
aber mit der Routine aus dem ARV-gcc-tutorial läuft der Timer immer
noch! Jedoch ist die USART0 Interrupt routine ausgeschlatet, wie kann
das sein?
Programmiert habe ich es wie im Beispiel!
cli()
aufruf funktion
Funktions Kopf
uint8_t tmp_sreg=0;
tmp_sreg=SREG
cli();
nicht unterbrechbarer code
MCUCSR |= (1<<JTD);
MCUCSR |= (1<<JTD);
SREG = tmp_sreg;
wieder im hauptprogramm
dann habe ich noch eine Frage, wenn ich keine funktion verwende reicht
es dann wenn ich so etwas programmiere?
void main()
{ programm code
cli();
tmp_sreg=SREG;
nicht unterbrechbarer programm code
MCUCSR |= (1<<JTD);
MCUCSR |= (1<<JTD);
SREG = tmp_sreg;
sei();
}
oder geht das so nicht?
wäre für jede hilfe dankbar!