Arduino Timer avbryter
Timer avbrott kan du utföra en aktivitet på mycket specifikt tidsintervall oavsett vad som händer i din kod. I detta instructable jag ska förklara hur man ställer in och kör ett avbrott i tydlig Timer på Jämför Match eller CTC läge. Hoppa direkt till steg 2 om du letar efter exempelkod.
Normalt när du skriver en Arduino skiss Arduino utför alla kommandon inkapslade i funktionen loop() {} i den ordning som de är skrivna, är dock det svårt att tid händelser i loop(). Vissa kommandon tar längre tid än andra att köra, några beror på villkorssatser (if, medan...) och vissa Arduino bibliotekets funktioner (som digitalWrite eller analogRead) består av många kommandon. Arduino timer avbrott kan du tillfälligt pausa den normala sekvensen av händelser som äger rum i loop() funktion vid just olika tidsintervaller, medan du kör en separat uppsättning kommandon. När dessa kommandon är klar plockar Arduino upp igen där det var i loop().
Avbryter är användbara för:
Mäta en inkommande signal med jämnt fördelade intervall (konstant samplingsfrekvens)
Beräkna tiden mellan två händelser
En signal av en specifik frekvens
Regelbundet söka efter inkommande seriella data
mycket mer...
Det finns några sätt att göra avbrott, för nu ska jag fokusera på den typ som jag tycker är mest användbara/flexibla, som kallas klart timern på Jämför Match eller CTC läge. Dessutom i detta instructable jag kommer att skriva specifikt om timers till Arduino Uno (och alla andra Arduino med ATMEL 328/168... Lilypad Duemilanove, Diecimila, Nano...). De viktigaste idéerna som presenteras här gälla Mega och äldre brädor också, men inställningarna är lite annorlunda och tabellen nedan är specifik till ATMEL 328/168.