R8C13 UART1 Interrupt wird nur einmal aufgerufen

OP #2166334
Lesenswert?

Zur Zeit versuche ich mich etwas mit dem R8C/13 und einigen Interrupts 
anzufreunden, jedoch möchte das nicht so gut klappen.

Ich habe schon mehrere Tage hier und bei Google gesucht, aber mir ist 
keine mögliche Fehlerursache in meinem Code aufgefallen.


Zu meinem Projekt:

Es besteht lediglich aus einem Timer Interrupt der alle 0,5 Sekunden 
eine LED an und ausschaltet, und einem UART1 Receive Interrupt der ein 
'OK' sendet wenn etwas empfangen wurde.

Der Timer Interrupt mit dem LED blinken läuft einwandfrei.
Der UART1 Receive Interrupt wird jedoch nur ein einziges Mal, 
ausgeführt.

Beide Interrupts wurden korrekt in die Vector Tabelle eingetragen.

Der Code befindet sich im Anhang.


Hat jemand eine Idee?


Danke schoneinmal.
Angehängte Dateien:
Gast #2166493
Lesenswert?

> Der UART1 Receive Interrupt wird jedoch nur ein einziges Mal,
> ausgeführt.

Ich bin zu faul fuer dich das Datenblatt zu lesen, aber normalerweise 
deutet soetwas darauf hin das du irgend ein IRQ-Bit nicht zurueckgesetzt 
hast.

Olaf
Gast #2166648
Lesenswert?

Hallo Sven,

zusätzlich zu dem Kommentar von Olaf sind mir beim kurzen drüberschauen
über deinen Source Code foldende Dinge aufgefallen.

1. Eine while Schleife in einer ISR ist immer eine schlechte Idee.
Setze eine variable (volatile!) in serial_receive_int() und prüfe diese 
in Main um von dort send_serial_1('O') aufzurufen.

2. Laut deinen Kommentaren hast du auch einen UART1 Transmit Interrupt.
Eine passende ISR sollte auch in der Vektortabelle auftauchen...
Gast #2167648
Lesenswert?

Hallo,
schalt' mal das Empfangen in deiner Interrupt Routine wieder ein so in 
etwa:
re_u1c1 = 1;
Wenn das funktioniert, dann nimm Dir bitte Deine Initialisierungsroutine 
nochmal vor(Interrupt Priorität usw.)

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren