Interrupt-Problem

Gast #2775079
Hallo an alle,

ich arbeite gerade mit der Arduino IDE und verwende in einem Code einen 
einfachen Interrupt. Da delay() ja nicht funktioniert, spricht etwas 
dagegen, den Programmfluss durch einige rechenintensive Codeteile zu 
verlangsamen? Ich habe in der IDE keinen Befehl gefunden, mit dem sich 
eine Interrupt Routine verlangsamen lässt und delayMicroseconds() 
funktioniert auch nicht.
Danke im Voraus,

NormalerTyp
NormalerTyp schrieb:
> Hallo an alle,
>
> ich arbeite gerade mit der Arduino IDE und verwende in einem Code einen
> einfachen Interrupt. Da delay() ja nicht funktioniert

sagt wer?

> spricht etwas
> dagegen, den Programmfluss durch einige rechenintensive Codeteile zu
> verlangsamen?

Die Frage ist: warum willst du etwas verlangsamen?

Wenn es um Zeitstuerungen geht (die länger als ein paar µs sind), dann 
ist ein Warteschleifenansatz sowieso meistens der falsche Weg. 
Timer-Interrupt, eventuell mit Abzählen der Aufrufe, ist der saubere 
Weg.
NormalerTyp schrieb:
> Auf arduino.cc steht, delay() funktioniert in einer Interrupt-Routine
> nicht.


Ah.
OK. Das war mir nicht klar, dass du von delay in einer ISR sprichst, 
bzw. wie die Arduino Lib bei einem delay vorgeht.

Nichts desto trotz: Über welche Zeiten reden wir bei 'Verzögerung' und 
warum muss das in einer ISR passieren?
Gast
Ich habe ein Display an den Arduino angeschlossen, auf dem bei Auslösen 
eines externen Interrupts eine Zahl heruntergezählt werden soll (Und 
zwar in Sekunden). Dafür brauche ich ja eine Verzögerung.
Wenn schon ein Moderator sagt, dass ein Timer besser ist, wird der auch 
verwendet ;)
Ich habe mich gerade schlaugemacht und gesehen, dass es eine Library 
namens TimerOne gibt, mit der sich einfach ein Timer einbinden lässt.
Werde ich schnell ausprobieren.

NormalerTyp
NormalerTyp schrieb:
> Ich habe ein Display an den Arduino angeschlossen, auf dem bei Auslösen
> eines externen Interrupts eine Zahl heruntergezählt werden soll (Und
> zwar in Sekunden). Dafür brauche ich ja eine Verzögerung.
> Wenn schon ein Moderator sagt, dass ein Timer besser ist, wird der auch
> verwendet ;)
> Ich habe mich gerade schlaugemacht und gesehen, dass es eine Library
> namens TimerOne gibt, mit der sich einfach ein Timer einbinden lässt.
> Werde ich schnell ausprobieren.

Gut. Das ist der richtige Weg.

Ein delay ist meistens nicht die Lösung, sondern schafft in einem 
Programm erst recht die Probleme.

Antwort schreiben

Eine eigene Frage? Dieser Thread ist über 14 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.