Arduino Timer unterbricht (1 / 6 schritt)

Schritt 1: Prescalers und das Compare Match Register


The Uno hat drei Timer timer0, timer1 und timer2 genannt.  Jeder der Timer hat einen Zähler, der auf jede Zecke die Zeitschaltuhr erhöht wird.  CTC-Zeitgeber-Interrupts werden ausgelöst, wenn der Zähler einen bestimmten Wert im Compare Match Register gespeichert erreicht.  Sobald ein Timer Zähler erreicht dieser Wert deutlich wird (auf Null zurückgesetzt) auf den nächsten Tick der Zeitschaltuhr, dann wird es auch weiterhin bis zu zählen die vergleichen match-Wert wieder.  Durch die Wahl der Compare match-Wert und Einstellung der Drehzahl, bei der der Timer den Zähler erhöht, können Sie die Frequenz der Zeitgeber-Interrupts steuern.

Der erste Parameter, die, den ich erläutern werde, ist die Geschwindigkeit, mit der der Timer den Zähler erhöht.  Die Arduino-Uhr läuft mit 16MHz, dies ist die schnellste Geschwindigkeit, dass der Timer können ihre Zähler inkrementieren.  Bei 16MHz stellt jeder Teilstrich des Zählers 1/16.000.000 einer Sekunde (~ 63ns), so dass ein Zähler 10/16.000.000 Sekunden dauert auf einen Wert von 9 zu erreichen (Zähler sind 0 indiziert), und 100/16.000.000 Sekunden auf einen Wert von 99 erreichen.

In vielen Situationen finden Sie, dass die Zähler-Geschwindigkeit auf 16MHz zu schnell ist.  Timer0 und timer2 sind 8-Bit Timer, was bedeutet, dass sie einen maximalen Gegenwert der 255 speichern können.  TIMER1 ist ein 16-Bit-Timer, was bedeutet, dass es einen maximalen Gegenwert von 65535 speichern kann.  Sobald ein Zähler sein Maximum erreicht, wird es wieder auf Null tick (Dies nennt man Überlauf).  Dies bedeutet bei 16MHz, auch wenn wir das Compare Match Register auf der max Zählerwert eingestellt Interrupts treten alle 256/16.000.000 Sekunden (~ 16us) für die 8-Bit-Zähler und jeder 65.536/16.000.000 (~ 4 ms) Sekunden für den 16-Bit-Zähler.  Das ist natürlich nicht sehr nützlich, wenn Sie nur einmal pro Sekunde unterbrechen wollen.

Stattdessen können Sie die Geschwindigkeit der Timer Zähler addressierte mithilfe von so genannten einen Vorteiler steuern.  Ein Vorteiler bestimmt die Geschwindigkeit von Ihren Timer entsprechend die folgende Gleichung:

(Timer Geschwindigkeit (Hz)) = (Arduino-Taktfrequenz (16MHz)) / prescaler

Also eine 1 Vorteiler den Zähler bei 16 MHz erhöht wird, eine 8 Vorteiler erhöhe ihn bei 2MHz, 64 Vorteiler = 250kHz, und so weiter.  Wie in den obigen Tabellen angegeben, kann der Vorteiler 1, 8, 64, 256 und 1024 gleich.  (Ich erkläre die Bedeutung von CS12 CS11 und CS10 im nächsten Schritt.)

Jetzt können Sie die Interrupt-Frequenz mit der folgenden Gleichung berechnen:

Frequenz (Hz) zu unterbrechen (Arduino Taktfrequenz 16.000, 000Hz) = / (Vorteiler * (Compare match Register + 1))
weil die Compare match Register gibt es Null indiziert ist + 1

Neuanordnen der obigen Gleichung, lösen Sie für Compare Match Registerwert, die Ihre gewünschten Interrupt-Frequenz geben wird:

Vergleichen Sie Match Register = [16.000, 000Hz / (Vorteiler * gewünscht Interrupt-Frequenz)] - 1
Denken Sie daran, dass bei Verwendung von Timer 0 und 2 diese Zahl kleiner als 256 und weniger als 65536 für timer1 sein muss

Also, wenn Sie einen Interrupt pro Sekunde (Frequenz von 1 Hz wollte):
Vergleichen Sie Match Register = [16.000.000 / (Vorteiler * 1)]-1
mit einem Vorteiler von 1024 erhalten Sie:
Vergleichen Sie Match Register = [16.000.000 / (1024 * 1)]-1
= 15.624
Seit 256 15.624 < < 65.536, Sie müssen timer1 für dieses Interrupt verwenden.

In Verbindung stehende Artikel

Arduino-Time-Lapse-Controller

Arduino-Time-Lapse-Controller

dieses Projekt ursprünglich begann mit ein paar einfachen Teile zusammen, um einen sehr einfachen Zeitraffer Controller für eine DSLR-Kamera geworfen. Nachdem ich zufrieden mit dem ersten Prototyp war, wollte ich machen eine endgültige Version, die d
Machen einen Arduino-Timer

Machen einen Arduino-Timer

Hi, also mir und meinem Kumpel einrichten, damit wir, Wartungsteilen sicherstellen können. Wir machen derzeit eine UV Belichtung Box (möglicherweise eine andere Instrucable) und für diese Box, wir brauchten einen Timer, so dies, ist was wir bisher ge
Arduino-Timer

Arduino-Timer

Hallo allerseits, diese instructable geht es darum wie man baut eine Stoppuhr / Timer mit Arduino.Merkmale dieser Timer: (Check für mehr Tiefe Details gewusst wie: verwenden Sie diese Funktionen im Abschnitt "Code/Skizze"1. Sie können eine Zielz
Iontophorese von Arduino Timer gesteuert

Iontophorese von Arduino Timer gesteuert

DIY Iontophorese Gerät powered by Arduino mit Timer-FunktionDiese Geräte haben einen Polarität-Schalter auf dem eingestellten Zeitintervall (ON und OFF).Schritt 1: Hintergrund GESCHICHTE:Hyperhidrose ist die Bedingung gekennzeichnet durch krankhaft v
Timer unterbricht auf die DP32

Timer unterbricht auf die DP32

Timer! Ich freue mich, endlich Timer auf meinem Lieblings-Board, DP32abdecken!Denken Sie daran, wie damals, als ich über externe Interrupts schrieb? Wenn Sie nicht mit Interrupts und deren Funktionsweise vertraut sind, empfehle ich das Tutorial zuers
DIY Arduino Time Lapse Panner für GoPro

DIY Arduino Time Lapse Panner für GoPro

Ich brauchte, um ein Panner, die 1 Umdrehung über 5 Minuten schaffen würde.Entdeckte ich zwei weitere Projekte auf mir basieren. Bau ist ziemlich identisch mit der Source-Projekte weiter unten.Ich schrieb Teil des Codes. Mein TimeLapse-Panner fordert
Arduino Time Lapse-Slider

Arduino Time Lapse-Slider

Also ich hatte in die Herstellung ein Timelapse video mit meiner Dslr gesucht und gesehen hatte, viele mit einem Slider-Mechanismus, eine weitere Dimension hinzuzufügen. Ich schaute auf zu kaufen, aber sie sind ein wenig teuer zu kaufen, nur um "die
Autopilot - basierend auf dem Arduino Boot

Autopilot - basierend auf dem Arduino Boot

Hier ist, wie man einen Autopiloten zu bauen, die eine RC lenken kann Boot zu Wegpunkten! Es ist leicht zu bauen, basierend auf der beliebten Plattform Arduino und ideal für Bastler wollen einige Löten Praxis! Mit dieser Autopilot kann eine RC Boot l
Eine solar-Tracking-automatische motorisierte Fenster blind Nachrüstung mit Arduino

Eine solar-Tracking-automatische motorisierte Fenster blind Nachrüstung mit Arduino

Gebäude-Konto für 20-40 % der Gesamtenergie verwenden in den entwickelten Ländern. Jalousien (oder Jalousien) können helfen, reduzieren Gebäude Energie verwenden und Sehkomfort (d. h. reduziert Blendung und Erhöhung der Tageslichtnutzung) verbessern.
Ein Arduino RSS-Feed anzeigen

Ein Arduino RSS-Feed anzeigen

das Arduino-Projekt zeigt RSS-feed-Schlagzeilen auf einem LCD über ein Arduino und ein USB-Kabel. Es funktioniert ganz gut, und lässt Sie mit den Weltnachrichten mithalten, während Sie an Ihrem Schreibtisch sitzen. Viele der Werte im Code können geän
Lesen u/min von Arduino-basierte IR Drehzahlmesser mit MATLAB GUI

Lesen u/min von Arduino-basierte IR Drehzahlmesser mit MATLAB GUI

Hallo wieder, ein paar Tage zurück ich gepostet ein instructable Infrarot-Drehzahlmesser mit Arduino, dann merkte ich, dass anstatt den u/min-Wert in der Arduino IDE serial Monitor lesen, mehr High-Tech-aussehen würde die u/min in einen entsprechende
Stereo-Audio mit Arduino

Stereo-Audio mit Arduino

Vor kurzem habe ich eine Menge Projekte Entsendung, die eine 8-Bit Widerstand Leiterdigital zu analog Konverter (DAC) und ein Arduino verwenden, um klingen zu lassen. (siehe Feld Stimmeffekten Arduino, Arduino-Drum-Sampler und meine Anleitung, audio-
WLAN-Arduino Oszilloskop

WLAN-Arduino Oszilloskop

In dieser Anleitung erkläre ich wie man eine Windows 8.1 Telefon, Arduino Uno Board und HC-05 Bluetooth-Modul verwenden, um eine drahtlose Oszilloskop zu bauen. Die Telefonanwendung hat die kritischen Funktionen eines Oszilloskops, obwohl die Bandbre
Einfache Mobile Data Logging mit PfodApp, Android und Arduino

Einfache Mobile Data Logging mit PfodApp, Android und Arduino

Moblie Data Logging leicht gemachtverwenden PfodApp, Andriod Handy und Arduino.KEIN Android Programmierung.Plotten Daten auf Ihrem Android-Gerät finden Sie in dieser späteren InstuctableEinfache Remote Daten Plotten mit Android / Arduino / PfodAppEin