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
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
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.
Ich würde das mit Input Capture machen, das ist ideal um die Zeit zwischen zwei Impulsen zu messen.
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
Max Maier schrieb: > und somit > funktionieren halt die Befehle millis(), delay(), usw. nicht. Solche Dinge sollte man auch garnicht erst verwenden. Von Anfang an schlau Programmieren, dann erübrigen sich solche Schlaufen übers ganze Programm. Delay's werden nie gerne gesehen.
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.