Guten Morgen,
ich würde gerne wissen ob der Arduino die Möglichkeit bietet, einen Timer zu starten, dann irgendwas zu machen und mit einem Interrupt ihn wieder zu stoppen?
Wie viele Timer hat der Arduino?
Wenn das möglich ist, hab ihr einen Beispiel Code?
Oder gibt es leichte Befehle wie man das von dem tollen System bewohnt ist in der Form von:
start_timer1;
.
.
.
.
stop_timer1;
die Timer-Funktionen sind tatsächlich abhängig vom verwendeten Microcontroller. Ich hätte hier mal einen Beispielcode, läuft auf dem ATMega328 - also vielleicht ein Duemilanove, für einen Interrupt, der 1000 mal pro Sekunde aufgerufen wird. Dadurch wird auf einem Display die Uhrzeit angezeigt.
Die Dinge, die Du jetzt an dem Sketch nicht verstehst, sind einfach zu googeln. Gib z.B. bei Google ein "Arduino TIMSK1" und Du bekommst als ersten Treffer ein komplettes Timer-Tutorial. Das sind teilweise seitenlange Erklärungen, deshalb möchte ich die hier nicht wiederholen. Aber wenn Du dich so durch den Sketch oben arbeitest, denke ich, Du hast die Timer verstanden und bist für alle Timer-Anwendungen auf dem Arduino gerüstet.
Hallo und vielen Dank für die Antwort,
Aber habe ich das jetzt richtig verstanden, dass der Timer 1000 Interrups in der Sekunde erzeugt?
Wenn ja, ist das leider nicht das was ich möchte. Ich möchte das ich den Timer starte, er im Hintergrund hochzählt und ich ihn nach einer gewissen zeit welche variert stoppen kann.
Dann lese ich den Timer Status aus und verwende Ihn weiter.
Kann man die Timer Frequenz zb. auf 1Khz Stellen.
ihn starten und nach einer Sekunde stoppen und hat dann einen Timer wert von 1000?
Masterboy:
Aber was ist die maximale Zeit bis der Timer überläuft? Ich bräuchte schon ca. eine Sekunde
unsigned long geht bis 2^32 ms.
Das sind knapp 50 Tage....
edit: und selbst dann gehts nahtlos weiter, wenn alle beteiligten Variablen als unsigned long deklariert sind.
Dann wird der Überlauf einfach weitergegeben.