Arduino Timer avbryter (1 / 6 steg)

Steg 1: Prescalers och jämför Match registret



The Uno har tre timers kallas timer0, timer1 och timer2. Alla timers har en räknare som ökas på varje fästing för den timer clock. CTC timer avbrott utlöses när räkneverket når ett visst värde, lagras i registret jämför match. När en timer räknare når värdet det kommer att klara (återställs till noll) på nästa fästing för den timer clock, då det kommer att fortsätta att räkna upp till matcha jämför värdet igen. Genom att välja jämför matchar värdet och ange hastigheten som timern Justerar räknaren, kan du styra frekvensen av timer avbrott.

Den första parametern ska jag diskutera är den hastighet som timern Justerar räknaren. Arduino klockan körs på 16MHz, detta är den snabbaste hastigheten att timers kan öka deras räknare. På 16MHz varje tickande av disken representerar 1/16,000,000 av en sekund (~ 63ns), så en räknare tar 10/16,000,000 sekunder att nå ett värde av 9 (räknare är 0 indexeras), och 100/16,000,000 sekunder att nå värdet 99.

I många situationer hittar du att ändra counter läshastighet till 16MHz är för snabb. Timer0 och timer2 är 8-bitars timers, vilket innebär att de kan lagra maximalt counter värdet 255. Timer1 är en 16-bitars timer, vilket innebär att det kan lagra ett högsta värde av 65535. När en räknare når sitt maximum, kommer att det kryssa till noll (detta kallas overflow). Detta innebär på 16MHz, även om vi jämför match registret max räknarvärdet, avbrott inträffar var 256/16,000,000 sekund (~ 16us) för 8-bitars räknare och varje 65.536/16,000,000 (~ 4 ms) sekunder för en 16-bitars räknare. Detta är naturligtvis inte mycket användbart om du bara vill avbryta en gång per sekund.

Istället kan du kontrollera hastigheten på timer counter incrementation med hjälp av något som kallas en prescaler. En prescaler dikterar hastigheten på din timer enligt den följande ekvation:

(timer hastighet (Hz)) = (Arduino klockfrekvens (16MHz)) / prescaler

Så en 1 prescaler ökar värdet för räknaren på 16MHz, en 8 prescaler ökar värdet för det på 2MHz, en 64 prescaler = 250kHz, och så vidare. Som framgår av tabellerna ovan, kan prescaler lika 1, 8, 64, 256 och 1024. (Jag ska förklara menande av CS12, CS11 och CS10 i nästa steg.)

Nu kan du beräkna avbrott frekvensen med följande ekvation:

avbryta frekvens (Hz) = (Arduino klockfrekvens 16.000, 000Hz) / (prescaler * (jämför match register + 1))
den + 1 är i det eftersom jämför matchar register är noll indexeras

ordna om ekvationen ovan, kan du lösa för värdet jämför match register som ger din önskat avbrott frekvens:

Jämför match register = [16.000, 000Hz / (prescaler * önskat avbrott frekvens)] - 1
kom ihåg att när du använder timers 0 och 2 detta nummer måste vara mindre än 256 och mindre än 65536 för timer1

så om du ville ha ett avbrott per sekund (1Hz frekvens):
Jämför match register = [16,000,000 / (prescaler * 1)] -1
med en prescaler 1024 får du:
Jämför match register = [16,000,000 / (1024 * 1)] -1
= 15,624
sedan 256 15,624 < < 65.536, måste du använda timer1 för detta avbrott.

Se Steg
Relaterade Ämnen

Arduino kitchen timer med en introduktion till timer avbryter

Välkommen till min första instructable,Jag beslöt att göra ett ganska enkla projekt för att ange instructable värld. Detta projekt handlar om att göra en enkel kitchen timer med en Arduino Uno. Således kommer jag ge en liten introduktion 2.2" tft dis...

Timer avbryter på DP32

Timers! Jag är glada att äntligen att täcka timers på min favorit ombord, DP32!Kom ihåg vägen tillbaka när jag skrev om externa avbrott? Om inte du är bekant med avbrott och hur de fungerar, rekommenderar jag att kontrollera denna tutorial ut först....

Arduino Time-Lapse Controller

detta projekt som ursprungligen började med några enkla delar kastas tillsammans för att skapa en mycket enkel time-lapse controller för en DSLR-kamera. När jag var nöjd med den första prototypen, ville jag göra en slutlig version som planeringen av...

Använd Timer avbryta på pcDuino

Timer avbrott kan du utföra en aktivitet på mycket specifikt tidsinställdaintervall oavsett vad som händer i din kod.Steg 1: Steg 1: använda timer avbrott på pcDuinoNär pcDuino kör Ubuntu, som är en version av Linux, Linuxger en timer mekanism, som ä...

Jontofores kontrolleras av arduino timer

DIY Jontofores enhet drivs av Arduino med timerfunktiondessa enheter kommer att ha en polaritet switch på det inställda tidsintervallet (ON och OFF).Steg 1: bakgrund HISTORIA:Hyperhidros är det tillstånd som kännetecknas av onormalt ökad svettning, [...

Göra en Arduino timer

Hi, så jag och min kompis sätter upp så att vi kan göra PCB´s. Vi för närvarande gör en UV exponering låda (eventuellt annan instrucable) och för detta rutan, vi behövde en timer, så detta är vad vi har gjort hittills och vad vi ska göra.Detta projek...

Arduino Timer

Hej alla, detta instructable handlar om hur man bygger ett stoppur / Timer med Arduino.Dragen av denna Timer: (kolla mer i djup Detaljer hur du använder dessa funktioner i "Kod/skiss" avsnitt1. du kan ange ett tidsmål för en händelse och också k...

STM32F103 Timer avbryta (med Keil och STMCubeMX)

I denna tutorial kommer jag Visa användning av avbrott med timers.Avbrottet är helt enkelt för att växla LED på vår STM32 styrelse.Denna handledning är uppdelad i tre steg:Steg 1: Skapa projekt i STM32CubeMXSteg 2: Programmering i KeilSteg 3: Visuali...

Arduino Time-Lapse Panorama Controller

Panorama Controller för GoPro kamerorStyrenheten kommer att rotera din GoPro över en set vinkel för en uppsättning varaktighet eller roterar du GoPro för full rotation för en uppsättning varaktighet.Detta projekt bygger på ursprungliga instructable m...

Arduino - Time BOMB Airsoft använder KYX 5461AS 4-siffriga 7 segment Display

Hej världen! Idag gjorde jag en enkel bomb med en 4 siffrig 7 segment Display (produkt nummer: KYX 5461AS). Det är mycket enkelt och igen kan användas för flera saker naturligtvis! Du utlösa det med en knapp, återställs automatiskt med watchog. AVR/W...

Arduino Vocal effekter Box

Detta Arduino-powered vocal effekter box pitch skiftar och snedvrider inkommande ljudsignalerna att producera ett brett utbud av vocal effekter. Detta projekt är min första experiment med realtid digital signalbehandling med Arduino. Det tar prov en...

3 kanal-Dimmer/fader för Arduino eller andra microcontroller

I ett tidigare instructable jag fram en enkel AC TRIAC-fader/dimmer som kan styras med en Arduino. I olika reaktioner jag fick, uttryckte ett antal personer sitt intresse för en 3 kanalfadern RGB. Men eftersom jag inte har sett några resultat av dess...

Arduino kontrollerade ljus dimmer

Varning: Vissa människor försöka bygga detta med en optocoupler med zerocrossing coz "som är bättre" rätt? Vissa får även höra i elektronik butiker är det bättre att använda sådan optocoupler. FEL. Detta fungerar endast med en random brand optoc...

Arduino hem basket Hoop poäng Detection System aka ScoreKeeper

Min lillasyster och jag hittade denna inomhus basket hoop (bilden ovan) på en container för några veckor sedan. Vi kom hem från kyrkan precis som två personer lossning det från sin lastbil. Vi beslutade att ta tag i det, tillsammans med tabellen air...

Arduino för växthusgaser, trädgården eller Growbox / uppdaterad April 2016

Jag har använt Attiny marker för bevattning uppgifter i min trädgård, men har planer på att bygga ett växthus, en Arduino tycktes vara vägen att gå eftersom det har fler portar. Jag vet, det finns många "Garduino" typ projekt redan, inklusive tw...

PIR rörelsedetektor med Arduino: Drivs på lägsta energiläge som konsumtion

Denna video visar snabbt och lätt strategi för att minska energiförbrukningen för ATMEGA 328P baserade Arduino styrelser med cirka 70-75% med PIR eller PID sensorer för rörelsedetektering.Detta projekt införs efter saker-1) gränssnitt Pyroelectric/Pa...

Från Arduino och perfboard att PCB med fristående MCU

Detta Instructable är en direkt efterföljare av denna. I slutet av detta bygga upp är min skivspelare projekt nästan klar (äntligen).Målet är att utveckla en snygg och arbetar PCB med SMD elektronisk med en arbetande ATtiny85 + programvara!Så är det...

Skicka och ta emot MIDI med Arduino

Detta instructable visar dig hur du använder en Arduino att skicka och ta emot en mängd olika MIDI-meddelanden så att du kan börja bygga din egen MIDI-controllers och instrument. Första jag ska prata lite om MIDI-protokollet, om du bara letar exempel...

Förbättrad Arduino Rotary Encoder behandlingen

Roterande pulsgivare är stor indataenheter för elektronik projekt - förhoppningsvis detta Instructable kommer att inspirera och hjälpa dig att använda en i ditt nästa projekt.Varför skriva rotationsencoder kod?Jag ville använda en låg kostnad rotatio...