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
Gast
#6079209
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"?
Antwort schreiben
Bitte melde dich an, um einen Beitrag zu schreiben.
