Arduino - Zeiterfassung im Interrupt

#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.
#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

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren