Hallo!
Ich habe folgenden Code im Hauptprogramm:
$CYCFLAG[10] = ($TIMER[1] > 100)
INTERRUPT DECL 7 WHEN $CYCFLAG[10] DO tell_pos()
INTERRUPT ON 7
INTERRUPT ENABLE
Im tell_pos() programm wird nach getaner Arbeit der $TIMER[1] wieder auf null gesetzt, so dass das Unterprogramm etwa alle 100ms ausgeführt wird. Das klappt auch ganz super, allerdings nur so lange, wie der Roboter eine Bewegung ausführt.
Steht gerade keine Bewegung an, zählt nut der Timer 1 munter nach oben, der Cycflag reagiert dann erst wieder, wenn der Roboter anfährt.
Weiss irgendwer, woran das liegt?
Laut Doku ist das so:
Die Voraussetzungen für das Auslösen eines Interrupts sind:
- Der Interrupt muß deklariert sein (INTERRUPT DECL )
- Der Interrupt muß eingeschaltet sein (INTERRUPT ON)
- Der Interrupt darf nicht gesperrt sein
- Das zugehörige Ereignis muß eingetreten sein (flankengetriggert)
Schlimm ist das in meinem Fall nicht, aber es wäre angenehm das Verhalten zu verstehen...
Schon mal danke,
Kai