Hallo Zusammen, ich habe eine grundsätzliche Frage zur Verwendung bzw. Initialisierung von Interrupts. Ich verwende einen AT90S4433 Controller und arbeite mit WinAVR in Verbindung mit GCC (Version 3.4.1). Ich möchte, dass ein Interrupt ausgelöst wird, wenn über die serielle Schnittstelle (UART) ein Datenbyte eingelesen wurde. So wie ich das Programm geschrieben habe funktioniert aber der RX-Interrupt leider nicht. Ich setze in der ISR den PIN2 von Port D auf 1 um das zu überprüfen. Jetzt ist die Frage, ob die Interrupt Funktion "SIGNAL (UART_RXC)" wie ich sie definiere richtig ist. Die Angabe UART_RXC habe ich aus dem Datenblatt des Controller. Stimmt diese so, oder wo kann ich den Handler eindeutig definieren und zuweisen. Vielen Dank Markus
SIGNAL(SIG_UART_RECV) wäre der korrekte Handler für UART-Receive interrupts. Du solltest übrigens vor dem schreiben in UDR das UDRE-Bit Prüfen! while(!(UCSRA & (1 << UDRE));
Hallo "OldBug", vielen Dank für Deinen Hinweis! Jetzt funktioniert es :-) Kannst Du mir bitte sagen, wo ich die genaue Zuordnung der ISR-Handler finde. In der Doku und in den Header Files habe ich leider nicht gefunden. Vielen Dank für Deine Hilfe. Gruß Markus
In meinem Fall: C:\Programme\WinAVR\avr\include\avr\io4433.h Also lieber nochmal suchen :-)
Hoppla, du hast recht. Bei mir stehts doch drin ;-) Danke nochmals
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.