Gast
#3725539
Hi zusammen, ich bräuchte mal eure Hilfe. Ich habe eine UART-ISR auf einem PIC32. Diese wird nur zum Empfang von Zeichen benutzt und wird etwa 500 - 1000 mal pro Sekunde aufgerufen. Funktioniert auch prima, auch über längere Zeit hinweg. Wenn ich jetzt parallel Traffic auf dem CAN erzeuge, dann "versumpft" die UART-ISR. Sie wird nicht mehr aufgerufen. Womöglich weil ein Overrun stattfindet oder sonst eine Fehlersituation auftritt. Ich habe einen Timer, der etwa alle Sekunde prüft, ob und wie oft die ISR aufgerufen wurde. Damit kann ich recht gut und schnell erkennen, ob das Problem aufgetreten ist. Nun dachte ich mir, ich könnte zumindest den UART und die ISR neu aufsetzen, aber auch nach Abschalten des UART, Disablen des Interrupts, neu initialisieren des Interrupts und Freigabe der Interrupts kommen keine Zeichen kann (es werden hier übrigens die gleiche Funktionen für UART und ISR benutzt, wie beim ersten Aufsetzen und Starten). Händisches Aufrufen der UART-ISR habe ich schon probiert, ebenso eine Abfrage der (RX, TX, ERR) - Interruptflags mit Zurücksetzen. Wenn ich stattdessen einen SoftReset auslöse, dann geht es, aber der Prozessor (das Programm) läuft dann natürlich auch wieder von vorne los. Es schau aus, als würde sich der UART oder der Interrupt Controller irgendwie verhaken... War jemand mal in einer ähnlichen Situation? Oder jemand eine Idee wie ich das lösen könnte? Grüße, Peter