Arduino - Zeiterfassung im Interrupt

OP #3716351
Lesenswert?
• ▲
▼
Hallo an alle,

aktuell bin ich mit einem kleinen Projekt beschäftigt und habe gerade 
ein Problem, welches ich einfach nicht in den Griff bekomme. 
Grundsätzlich möchte ich mehrere verschiedene Messdaten erfassen.
Der "Impuls" zur Messung der einzelnen Sensoren MUSS (leider) mittels 
Timern erfolgen.
Einer der Messwerte ist die Zeit, die zwischen zwei Impulsen eines 
Tasters vergeht. Da die Routine zur Messung im Timer sthet, funktioniert 
leider der Befehl millis() o.Ä. nicht. Auch musste ich leider 
feststellen, dass die anderen Timer in der Zwischenzeit ruhen, sodass 
ein Auslesen der Timerregister nichts bringt.
Hat jemand von Euch eine Idee, wie ich eventuell an die gewünschte Zeit 
kommen kann?

Besten Dank für Eure Mühe und beste Grüße
Max
#3716448
Lesenswert?
• ▲
▼
Der Timer steht nicht im Interrupt, es sei den man sagt es ihm. Bring 
also erst mal den Timer zum laufen und speicher den Wert weg. Dann 
kommen dir weitere Ideen zur Umsetzung... Timer-Overflow-Inkremente, 
High-Low-Erkennung, div.Merker...

Für einige sachen ist Arduino halt nicht gedacht. Musst halt jetzt 
selber dir nen Kopp machen.

Greez Ert
Gast #3716534
Lesenswert?
• ▲
▼
Unsinn!

Du bestimmst einen Pin als Interruptquelle, liest beim Start (1. 
Impuls), die Zeit und beim Nächsten (2. Impuls) erneut. Die Differenz 
ist der Abstand.

Alternativ haben die Teile auch mehr als einen Zeiter. Meist zwei oder 
drei.
OP #3717312
Lesenswert?
• ▲
▼
Hi an alle,

in der Zwischenzeit habe ich mein Problem lösen können. Der Hinweis mit 
den Pins als Interrupt-Eingang war Gold wert.
Noch einmal kurz die Lösung, falls jemand ein gleiches Problem hat.
Alle Timer werden während eines Interrupts unterbrochen und somit 
funktionieren halt die Befehle millis(), delay(), usw. nicht.
Daher habe ich jetzt jeden der Impulssignale auf einen Interrupt-Eingang 
gelegt. Sobald das Signal steigt, wird die aktuelle Zeit in einer 
Variablen zwischengespeichert. Beim nächsten Impuls wird die Zeit in 
einer anderen Variable abgelegt und die Zeit zwischen den Impulsen kann 
berechnet werden. Die Berechnung erfolgt dann mittels Timer und ich 
erhalte immer die aktuellen Werte.

Besten Dank an alle und liebe Grüße
Max

Antwort schreiben

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.

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.