Arduino-Nano-Timer
Ich will mehr wissen über Arduino Nano Timer.
- Welche Timer gibt es?
- Produzieren Sie unterbricht?
- Was code beifügen einem interrupt-handler?
- Wie ist
delay()
unddelayMicroseconds()
umgesetzt...- Verwenden Sie die timer-interrupts? (Wenn ja, wie kann ich anderen code auszuführen, während das?)
- Oder tun Sie immer wieder, poll, bis ein timer einen bestimmten Wert erreicht?
- Oder tun, erhöhen Sie den Wert X Anzahl der Zeiten?
- Oder machen Sie es einen anderen Weg?
InformationsquelleAutor CL22 | 2013-04-17
Du musst angemeldet sein, um einen Kommentar abzugeben.
Die beste Möglichkeit, um sich über die Arduino-Nano-Timer ist zu denken, der Timer in den zugrunde liegenden chip: die ATmega328. Es verfügt über drei Timer:
Alle diese Timer kann erzeugen zwei Arten von interrupts:
Leider gibt es keine Arduino-Funktion zum Anhängen interrupts Timer. Verwenden der timer-interrupts werden Sie brauchen, um zu schreiben, etwas mehr low-level-code. Im Grunde, Sie müssen erklären, interrupt-routine so etwas wie dieses:
Dieser wird erklären, eine Funktion zu service-timer1-overflow-interrupt. Dann müssen Sie aktivieren das timer-overflow-interrupt mit der
TIMSK1
registrieren. Im obigen Beispiel könnte dies wie folgt Aussehen:oder
Dieser legt die
TOIE1
(generieren timer1-overflow-interrupt, bitte) Flagge im TIMSK1-register. Unter der Annahme, dass deine interrupts sind aktiviert, wird IhreISR(TIMER1_OVF_vect)
bekommen wird jedesmal aufgerufen, wenn timer1 überläuft.Den Arduino
delay()
Funktion sieht dann wie folgt im Quellcode (wiring.c
):Also es intern verwendet, die
micros()
- Funktion, die in der Tat beruht auf den timer0 zu zählen. Das Arduino-framework verwendet den timer0 zu zählen Millisekunden, in der Tat, timer0 zu zählen ist, womillis()
Funktion erhält Ihren Wert.Den
delayMicroseconds()
Funktion, auf der anderen Seite, verwendet, bestimmte, zeitlich gut abgestimmte Mikroprozessor-Operationen zu erstellen, die Verzögerung, welche Funktion verwendet wird, hängt vom Prozessor und der Taktfrequenz; die häufigste istnop()
(keine operation), die genau einen Takt. Arduino Nano verwendet eine 16 MHz-Takt, und hier ist, was der source-code sieht folgendermaßen aus:Was lernen wir daraus:
InformationsquelleAutor angelatlarge