mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik sub in einem interrupt


Autor: roboterheld (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Uhu Uhuhu (uhu)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: roboterheld (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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?

Autor: Uhu Uhuhu (uhu)
Datum:

Bewertung
0 lesenswert
nicht 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?

Autor: roboterheld (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.