Forum: Mikrocontroller und Digitale Elektronik STM32L451 UART overrun: Interrupt auch ohne Enable?


von Bauform B. (bauformb)


Lesenswert?

hallo :(

Ist das normal? Ein UART benutzt zum Empfang Interrupts, also sind der 
RXNE Interrupt und der RTO Interrupt eingeschaltet und sonst nichts. Das 
funktioniert auch -- solange es keinen overrun error gibt. Dann bleibt 
der/ein Interrupt aktiv, auch wenn keine weiteren Zeichen rein kommen.

Wenn man das ORE Flag explizit löscht, scheint es zu funktionieren, 
aber overrun errors sind nicht leicht zu provozieren und Endlosschleifen 
auf Interrupt-Ebene sind sowieso doof. Ich bin auch nur 95% sicher, dass 
die Endlosschleife so kurz ist. Es ist auch unlogisch, weil es extra ein 
error interrupt enable (EIE) gibt, das nicht gesetzt ist.

Im STM32L451xx device errata pdf steht nichts und im RM0394 ist alles so 
beschrieben, wie man es sich vorstellt. Meine pdfs sind allerdings alt 
(Oktober bzw. Dezember 2018). Hat evt. jemand bessere Connections zu ST 
und etwas neuere Ausgaben?

P.S. ein Breakpoint auf den ersten overrun error ergab auch nicht viel:
1
CR1  0400142d
2
CR2  00800000
3
CR3  00000000
4
RTOR 00000027
5
ISR  006110eb

von Uwe B. (Firma: TU Darmstadt) (uwebonnes)


Lesenswert?

RM0394, Seite 1206 schreibt: "An interrupt is generated if either the 
RXNEIE bit is set or EIE bit is set" . Du musst also in Deinem Interrupt 
den Overrun behandeln!

von Bauform B. (bauformb)


Lesenswert?

Uwe B. schrieb:
> RM0394, Seite 1206

Die Seite fehlt in meinem pdf. Nein, noch schlimmer: Der eine Satz 
fehlt. Den Abschnitt hab' ich mindestens zweimal gelesen, jeden 
einzelnen Satz, bis auf diesen. Jetzt steht er plötzlich drin.

Vielen, vielen Dank!

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.