PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Interrupt bei C-control



RCO
24.08.2004, 14:12
Wie kann ich eine "Interrupt-Routine", glaube das heißt so, erzeugen.
Ich bräuchte sowas:

Wenn port[12] = 0 then gosub inter

#inter
.
.
.

Das ganze soll halt keine Dauerschleife sein, sondern ein INTERRUPT, damit mein Roboter nicht dauernd nur mit dem überprüfen der Ports beschäftigt ist.

MFG Moritz

RCO
24.08.2004, 23:28
Leute, dass muss doch einer wissen, von mir aus auch mit Assemblern.

Joshua
25.08.2004, 00:00
Die C-Control M-Unit verfügt über einen sog. Interrupt-Eingang (IRQ). Dieser spezielle Eingang ist mit 10k-pullup "high" gezogen. Wird beim Programmablauf ein "low" erkannt, verzweigt das Programm vor dem nächsten Befehl an die über "INTERRUPT <sprungziel>" in <sprungziel> definierte Stelle (analog GOSUB). Ein prima Beispiel findest du (wie diese Information auch) im Benutzerhandbuch zum C-Control M-Unit Programmieradapter auf den Seiten 37und 38 (download auf www.c-control.de)

RCO
25.08.2004, 10:04
Aber wie kann ich sagen, dass der Interrupt nur an port[12] überwacht werden soll?

thille
25.08.2004, 14:42
Der Interrupt wird nur am IRQ-Eingang entgegengenommen, egal was an irgendeinem anderen Port gerade passiert. Dadurch wird das normale Programm unterbrochen(daher auch der Name) und die Interruptroutine ausgeführt, bis zum return. Die Abfrage des Port[12] odes eines anderen Ports kann dann im angesprungenen Unterprogramm (Interruproutine) erfolgen.


Gruß

Torsten

RCO
25.08.2004, 14:55
Ja, na gut, das hab ich befürchtet.
Ich hoffe aber, dass der Interrupt nciht anspringt, wenn ich Ports setze, oder?

Danke für die Antwort.

MFg Moritz

25.08.2004, 19:16
Bei der C-Control gibt es aber irgendwo im Basic-Betriebsystem ein Fehler, so das bei vielen IRQ´s Stackfehler auftritt. Das muß man glaub irgendwie austricksen. Vielleicht kann das jemand erläutern.
Interrupts werden nur ausgelöst wenn irg auf Masse gelegt wird, die C-Control hat nur einen Interrupt