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.
> 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
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...
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.)
Du solltes vor allem das Byte auch abholen, sonst bekommst Du einen Overrun error, wenn das nächste Byte kommt und dann geht garnix mehr.
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.