-
-
Hallo gleichfalls,
diese Versuche habe ich auch gerade hinter mir ...
Das RC5READ in der ISR kann so nicht funktionieren, da während des Ablaufes der Routine alle Interrupts disabled sind !! Und RC5READ benötigt nun einmal den Timer-Interrupt.
Der ist aber - wie gesagt - disabled.
Ergo müsste man in der ISR zunächst ein ENABLE INTERRUPT setzen.
Ausserdem sollte die ISR möglichst kurz sein (sonst wird der Anfang der Sendung verpasst).
Ich habe gar keine ISR definiert !
Der INT hebt nur den IDLE-Zustand auf, in dem der Prozessor auf ein Signal wartet.
CONFIG INTO = FALLING
ENABLE INTO
ENABLE INTERRUPTS
.......
IDLE ' Hier wartet das Programm auf den INT
RC5READ(Address, Command)
Trotzdem waren die Probleme aber noch nicht ganz gelöst.
Zwar kann ich damit die Signal einer Fernbedienung empfangen, einen anderen Microcontroller aber nicht
(die Ursache habe ich noch nicht weiter untersucht - ich vermute, dass die Fernbedienung mehrfach sendet, der Controller ab nur 1mal - und RC5READ hat die erste Flanke des Sendung bereits verpasst, da diese zur Auslösung des INT diente).
Als Lösung des Problems schicke ich vor dem RC5-Code sozusagen einen "Vorblitz", einen kurzen Impuls, der den INT auslöst und RC5READ anstartet. Das funktioniert reibungslos.
Berechtigungen
- Neue Themen erstellen: Nein
- Themen beantworten: Nein
- Anhänge hochladen: Nein
- Beiträge bearbeiten: Nein
-
Foren-Regeln
Lesezeichen