Forum: Mikrocontroller und Digitale Elektronik STM32F030 - UART Interrupt obwohl keiner sein darf


von Holger K. (holgerkraehe)


Angehängte Dateien:

Lesenswert?

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

von Holger K. (holgerkraehe)


Lesenswert?

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

von Stefan F. (Gast)


Lesenswert?

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
Noch kein Account? Hier anmelden.