PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : sofortigen programmstop durch interrupt auslösen



MarkusH
25.05.2005, 10:01
Hallo an alle!
Folgendes (Verständnis)Problem:
Ich habe eine Hauptschleife die ca. 20 befehle ausführt bis irgendwann ein Interrupt auslöst. Wie mach ich das jetzt das die schleife sofort nach auslösung des Interrupts anhält und nicht bis zum ende weiterläuft um dann anzuhalten? Ich kann doch nicht in jeder zweiten zeile das interrupt-flag überprüfen lassen. Gibts da nicht was einfacheres?
Vielen Dank schonmal...
Gruß, Markus

PicNick
25.05.2005, 10:05
Mit BasCom stell ich mir das eher schwierig vor (auch in anderen Hochsprachen, weil das eigentlich ein "don't" ist )
Aber prinzipiell steht die Rücksprung-address (wo er grad war beim Interrupt) auf dem HW-Stack und könnte dort gelesen und auch verändert werden.

Frank
25.05.2005, 10:08
Der übliche Weg wäre schon das im Interrupt irgend ein Flag (eine Variable) gesetzt wird und das deine Schleife dieses Flag zumindest einmal pro Durchgang abfragt.

MarkusH
25.05.2005, 11:57
@frank
ja, aber ich will eben das die schleife sofort beendet wird und nichtbis zum ende weiterläuft.
@picnick
Hey, die idee mit der rücksprung-adresse ist gut. Allerdings weiß ich natürlich nicht wie man die verändern kann. Mit Bascom geht das wohl sicher nicht, aber wenn ich wüsste in welchem register die drin liegt könnt ich ja in bascom mit assembler code die Adresse ändern. Allerdings würde sich die rücksprung-adresse ja jedes mal ändern wenn ich in meinem programm eine zeile dazu schreib oder lösche oder nicht?

25.05.2005, 13:26
Au weia, der thread wird absolut gemein und für Frisch-operierte, Rekonvaleszente und Jugendliche absolut verboten.
Das, was auf dem Stack als Return liegt, paßt immer, da sind Programmänderungen wurst.
Anders ist es mit der "neuen" Zieladresse, die kann sich natürlich verschieben.
Wir brauchen also elegant die Exit-Adresse von der Schleife, die du massakrieren willst.
Laß mich ein bißchen nachdenken, ich rühr' mich.

PicNick
25.05.2005, 13:27
Hopperla, der Gast bin ich

MarkusH
25.05.2005, 13:38
Ich habs nicht so eilig, es geht mal wieder um meinen schrittmotor. Die schleife ist die ansteuerung und der interrupt ist der anschlag. Und wenn mal irgendwas schief geht und er gegen den anschlag fährt hätt ich eben gern das er damit sofort aufhört.
Gruß

PicNick
25.05.2005, 13:42
Da brauchst du doch nur EINMAL VOR dem STep-Takten den von Frank angesprochenen Flag abfragen.

MarkusH
25.05.2005, 14:17
naja, ich muss es ja vor jedem step machen, ich dachte es gäbe da was komfortableres.

PicNick
25.05.2005, 14:47
Nein, weder komfortable noch einfacher, außerdem eine stilistische Sauerei.
Da werden doch sicher noch mehr Bedingungen sein die du ja auch abfragen mußt.