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
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
Von der Hardware ist der Mega128 problemlos in der Lage mehrere Interrupt-Routinen zu bearbeiten. Es dürfte wohl eher ein Logikfehler in deinem Programm vorliegen. So beliebte Fehler wie Prozessor-Statusregister nicht retten oder auch fehlerhafte PUSH / POP Sequenzen sind recht häufig.
Hallo ihr beiden, vielen Dank für eure Antworten. Ich habe es jetzt mal so versucht, dass ich im Timer-Interrupt den Befehl #asm("sei") einbaue, sodass dieser Interrupt unterbrochen wird, sobald der Rx-Interrupt kommt. Für die Zählung macht das im Prinzip keinen Unterschied. danke nochmal! markus
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.