Gast
#356940
Hallo,
ich nutze bei nen MEGA16 timer1 (100Hz/10ms) Compare Match A interrupt
und parallel die USART (nur RX) im Interruptbetrieb @ 19200bps. Nun
würde ich gerne in der Timer-ISR den USART RXCIE (bzw. USART komplett)
deaktivieren, da dieser offenbar mit dem Auslesen des ADC in der Timer
ISR nicht harmoniert.
Also schreibe ich in der Timer ISR:
void timer (void)
{
//...
UCSRB |= ((0<<RXCIE)|(0<<RXEN)|(0<<TXEN)); // stopp USART
//...
}
Zu meinem Erstaunen stoppt die USART aber nicht, sondern generiert
munter weiter Interrupts beim Empfang eines Zeichens.
Wo liegt mein Denkfehler?
(Umgekehrt kann ich mit "TCCR1B = 0x00; // stopp timer: no CTC1,
CK/1 -- Stopp timer1" in der USART ISR den Timer wunderbar
stoppen!)
Danke!
Gruß,
Dennis