sub in einem interrupt

Gast #681770
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
> 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.
Gast
wenn die sub test() länger dauert, hat das dann folgen für den zeitlauf 
der interrupt-routine? muss die sub auch kurz gefasst werden, damit 
"enable int0" rechtzeitig wieder kommt?
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
...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

Eine eigene Frage? Dieser Thread ist über 19 Jahre alt. Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.

Neuen Thread starten

Eine Lösung, Ergänzung oder Rückmeldung zu diesem Thread? Dann antworte hier.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.