2 Interrupts (Timer0 und Rx)

Gast #20418
Lesenswert?

Hi Leute!

Also ich programmiere grade einen ATMega 128 auf dem STK500 (mit 
STK501-Zusatzboard) und habe Probleme damit auf 2 Interrupts zu 
reagieren. Ich benötige den Timer0-Interrupt um ein Rechteckssignal zu 
erzeugen und den Receive-Interrupt vom USART1, um mit dem PC zu 
kommunizieren. Leider funktioniert letzterer überhaupt nicht mehr seit 
ich den Timer0-Interrupt enabled und die Routine geschrieben habe. Die 
logische Schlussfolgerung für mich war, dass durch die höhere Wertigkeit 
des Timers (und das ständige Kommen des Interrupts, alle 1ms) der 
Receive-Interrupt nicht mehr durchkommt. Könnt ihr mir meine Vermutung 
bestätigen und mir zu einem Lösungsweg verhelfen oder könnte dies an 
einem komplett anderen Problem liegen? Bin leider ein Anfänger bei 
AVR-Controllern aber trotzdem über jeden Tipp dankbar.

mfg
markus
Gast #20419
Lesenswert?

Hallo Markus

Wenn du nicht mit allzu hohen Baudraten arbeitest, kannst du den UART 
auch in deiner normalen Programmschleife pollen, also gar nicht über den 
Interrupt steuern.
Dazu musst du lediglich das RXC-Bit im USR-Register prüfen und, falls 
gesetzt, das UART-Datenregister UDR auslesen. Mit dem Auslesen des 
UDR-Registers wird das RXC-Bit automatisch wieder gelöscht.

Gruss
Christian

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