Zeitgeber-Interrupts können Sie eine Aufgabe in sehr speziell regelmäßigen Abständen unabhängig davon, was in Ihrem Code vor sich geht. In diesem instructable erkläre ich gewusst wie: einrichten und führen Sie einen Interrupt im Clear Timer on vergleichen Match oder CTC Modus. Springen Sie direkt zu Schritt 2, wenn Sie auf der Suche nach Beispielcode.
Normalerweise, wenn Sie ein Arduino-Sketch, dass die Arduino führt alle Befehle gekapselt in der loop() {} Funktion in der Reihenfolge, die sie geschrieben werden schreiben, jedoch ist es schwierig, Zeitereignisse in der loop(). Einige Befehle als andere auszuführenden länger dauern, einige hängen bedingter Anweisungen (If,...) und einige Arduino Bibliotheksfunktionen (wie DigitalWrite oder AnalogRead) bestehen aus vielen Befehlen. Arduino-Zeitgeber-Interrupts können Sie kurzzeitig unterbrechen die normale Abfolge der Ereignisse in loop() Funktion in genau getimten Intervallen, während Sie einen separaten Satz von Befehlen ausführen. Wenn diese Befehle erfolgt holt die Arduino wieder, wo es in der loop() war.
Interrupts sind nützlich für:
Messung eines ankommenden Signals in ebenso Abständen (konstante Abtastfrequenz)
Berechnung der Zeit zwischen zwei Ereignissen
Ein Signal einer bestimmten Frequenz
In regelmäßigen Abständen überprüfen eingehende serielle Daten
vieles mehr...
Gibt es ein paar Möglichkeiten, Interrupts zu tun, denn jetzt ich auf den Typ konzentrieren werde, finde ich nützlich/flexibelste, genannt Clear Timer auf Übereinstimmung vergleichen oder CTC Modus. Darüber hinaus werde in diesem instructable ich speziell über den Timer für den Arduino Uno (und jede andere Arduino mit ATMEL 328/168... schriftlich Lilypad, Duemilanove, Diecimila, Nano...). Die wichtigsten Ideen, die hier vorgestellten gelten für die Mega und älteren Boards sowie, aber die Einrichtung ist ein wenig anders und die folgende Tabelle ist spezifisch für ATMEL 328/168.