R8C13 UART1 Interrupt wird nur einmal aufgerufen

OP #2166334
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
> 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
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
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

Eine eigene Frage? Dieser Thread ist über 15 Jahre alt. Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.

Neuen Thread starten

Eine Lösung, Ergänzung oder Rückmeldung zu diesem Thread? Dann antworte hier.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.