Forum: Mikrocontroller und Digitale Elektronik Overrun Error, M16C


von hermann1812 (Gast)


Lesenswert?

Hallo.

Ich arbeite mit Segger embOS V3.20g für M16C62P mit der Tasking IDE 
3.1r1 Patch5. (Leider wird diese Kombination von den Herstellern nicht 
mehr unterstützt.)

Die Applikation benutzt alle 3 UART-Schnittstellen des M16C mit einer 
Geschwindigkeit von 115,2KBaud. UART1 und 2 arbeiten dabei als Slave, 
UART0 als Master. Es werden ca. alle 200ms Pakete (max. 32Byte) auf den 
Schnittstellen mit der "Aussenwelt" ausgetauscht.
Senden und Empfangen läuft Interrupt-getrieben. UART0 hat dabei als 
einzige Quelle im System eine Interruptprio von 7.
Alle Interrupts sind "Nestable". (__I-Flag wird am Anfang der ISR wieder 
gesetzt.)
Die Last im Gesamtsystem beträgt ca. 15%.

Trotz (oder vielleicht wegen) all der obigen Randbedingungen tritt ab 
und zu ein Overrun Error bei UART0 auf. Die Behandlung des Fehlers hilft 
meistens. Die Kommunikation läuft dann stundenlang problemlos. Plötzlich 
bricht sie aber total zusammen und lässt sich auch softwaremäßig nicht 
mehr in Gang bringen, nur noch ein SW-Reset hilft.
Interessanterweise passiert das ganz aber nicht wenn nur über UART0 
kommuniziert wird.

Anmerkung:
Ich habe die Baudrate schon auf 57,6KBaud reduziert, die UARTs 
getauscht.
Leider ohne Ergebnis.


Kennt/hat jemand ein ähnliches Problem?
Könnte das Ganze am OS liegen oder hat evtl. sogar der M16C hier ein 
Hardwareproblem.


Nebenbei gefragt:
Wie setzt man am Besten einen Overrun Error zurück?
Alle Beispiele setzen einen Summenfehler in der RX-ISR zurück.
Leider wird aber gerade bei einem Overrun Error die ISR nicht 
getriggert.


Hermann

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.