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.
Auf arduino.cc steht, delay() funktioniert in einer Interrupt-Routine nicht. Siehe -> http://arduino.cc/en/Reference/AttachInterrupt Etwas runterscrollen, da steht es in kursiver Schrift. NormalerTyp
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?
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.
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.