Hallo zusammen Ich aktiviere den Interrupt in der Software mittels des Setzen des RXNEIE Bits im CR1 Register. Wenn ich Daten empfange, dann wird der Interrupt auch angesprungen und im ISR Register ist das RXNE Bit gesetzt. Wenn nun jedoch keine Daten kommen, dann springt mir die FW immer wieder trozdem in die USART1-ISR Wenn ich dann gleich zu Beginn der Routine (vor dem Auslesen irgendwelcher Daten oder Register) mit dem Debugger die SFR CR1 und ISR betrachte, dann sehe ich: CR1:RXNEIE: 1 ISR:RXNE: 0 Obschon kein ISR gesetzt wurde, springt die FW in den Interrupt. Sobald ich RXNEIE auf 0 setze und somit den Interrupt deaktiviere, geschieht dies nicht mehr. Andere Interrupts sind nicht aktiviert. Hat jemand eine Idee, woran dies liegen könnte, oder wie ich dies weiter eingrenzen könnte? Danke
Ok habs gefunden. ORE Flag war gesetzt. Bei aktiviertem RXNEIE wird auch das ORE Flag als Interruptquelle aktiviert. ORE Flag löschen und gut ist
Holger K. schrieb: > ORE Flag löschen und gut ist Sicher? So ein Overrun-Interrupt signalisiert, dass dein Programm die empfangenen Daten zu langsam abholt, also dass etwas verloren geht. Ist das "gut"?
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.