Hi,
Danke mal wieder für die vielen Tipp und Hilfen im Forum.
Leider finde ich auf meine aktuelle Frage keine Antwort.
Ich möchte während ich in Interrupt_1 bin einen weiteren Interrupt_2 aktiverien und dann direkt oder nach Interrupt_1 in Interrupt_2 springen.
Bsp.:
Reset/Abort Interrupt 6 in Cell() soll mich dort immer wieder hinbringen, wenn i_bCmdAbort==True. Aber wenn im Unterprogramm Main() erst ein i_bCmdSuspend==true kommt, dann stehe ich in einem Interrupt. Kann ich dann Interrupt 6 aktivieren und in Cell() zurückkehren?
DEF CELL ( )
INTERRUPT DECL 6 WHEN i_bCmdAbort DO l_irAbort( )
Main()
END
DEF l_irAbort ()
brake
INTERRUPT OFF 6
RESUME
END
DEF Main ( )
INTERRUPT with brake DECL 9 WHEN i_bCmdSuspend DO l_ir( )
INTERRUPT ON 6
INTERRUPT ON 9
...
...
...
...
End
DEF l_ir ()
BRAKE
Interrupt off 9
;Fehlernummer ausgeben
;Job angehalten
og_iError_NR=10
WAIT SEC 1
;Warten bis es weiter gehen kann oder reset kommt
WAIT FOR i_bCmdSuspend==FALSE OR i_bCmdAbort==TRUE
if i_bCmdAbort==False then
Interrupt on 9
endif
END
In der Doku findet man erst bei Interrupts
"Wenn mehrere Interrupts gleichzeitig auftreten, wird zuerst der Interrupt mit der höchsten Priorität bearbeitet, dann die Interrupts niedrigerer Priorität. 1 = höchste Priorität"
Kingt als würden alle anstehenden Interrupts abgearbeitet, aber später kann man bei "INTERRUPTS DISABLE/ENABLE Abweichendes Verhalten" etwas über den Merker lesen, bei dem steht, das wenn ein Interrupt abgearbeitet wurde dieser zurückgesetzt wird und Interrupts nur abgearbeitet werden, wenn dieser True ist.
Ist der Merker nur für INTERRUPTS DISABLE/ENABLE wichtig?
Gruß Thomas