sub in einem interrupt

Gast #681770
Lesenswert?
• ▲
▼
hallo, ich habe dieses beispiel mit fastavrbasic:

Declare Interrupt Int0()
Declare Sub test()

Enable Interrupts
Enable Int0
in0 rising

Do
WaitMs 255
Loop

Interrupt Int0()
   Disable Int0
   test()
   Enable Int0
End Interrupt

Sub test()
 PORTB.0=1
End Sub

------------------

kann ein programmablauf durch einem sub-aufruf in einer 
interrupt-routine ins schleudern kommen?
oder wird so etwas nicht gemacht?

mfg
#681776
Lesenswert?
• ▲
▼
> kann ein programmablauf durch einem sub-aufruf in einer
> interrupt-routine ins schleudern kommen?

Nein.

Allerdings kann das mit dem 'Enable Int0' in der ISR evtl. Probleme 
machen, wenn der nächste Interrupt hereinkommt, bevor das reti der ISR 
ausgeführt ist.

Das 'Disable Int0' ist überflüssig, denn Interrupts werden bei der 
Interruptbearbeitung üblicherweise automatisch gesperrt.

> oder wird so etwas nicht gemacht?

In einer ISR andere Funktionen aufzurufen ist durchaus üblich. Du 
solltest aber unbedingt darauf achten, daß die ISR so wenig Zeit wie 
möglich den Prozessor blockiert.
#681789
Lesenswert?
• ▲
▼
Während die ISR läuft, hält man die Interrupts gesperrt und vor Ende der 
ISR geht nichts anderes auf dem µC.

So und nun überleg mal scharf:
Was passiert, wenn du alle 100 ms einen Timerinterrupt bekommst, die ISR 
aber 300 ms braucht, um alle ihre Aufgaben zu erledigen?
Gast #681825
Lesenswert?
• ▲
▼
...Während die ISR läuft, hält man die Interrupts gesperrt und vor Ende 
der
ISR geht nichts anderes auf dem µC.....


uiii.., kann evtl die pwm die gerade läuft für den motorantrieb (oc1a 
und oc1b )auch ins schleudern geraten??? habe den mega32.

mfg

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren