Början Microcontrollers del 11: Timers, räknare och mikrokontroller klockan



Timers och räknare är så integrerad att du kommer att se många exempel på dem i hela denna serie. Som namnet säger, används timers för tid och räkna. Inventering och timing kan du göra några mycket fina saker som kontrollerande LED brights, vinkel grader av servo axlar, tar emot sensordata som sänder i PWM, skapa en timer eller helt enkelt lägga till en tid variabel i projektet mikrokontroller.

Först är det viktigt att förstå att det finns en klocka i (eller utanför) AVR microcontrollers. Alla mikrokontroller har klockor i dem eller använda en extern klocka. Mikrokontroller kräver klockor så att programmen kan köras i takt med klockan. Som de program vi skriver, som varje clock tick passerar, behandlas anvisningar i tid med fästingar på klockan.

Timer och counter funktionerna i mikrokontroller räkna i synk med mikrokontroller klockan. Dock räknar räknaren endast upp till 256 (8 bitars räknare) eller 65535 (16 bitars räknare). Det är långt ifrån den 1.000.000 fästingen per sekund som standard AVR mikrokontroller ger. Mikrokontroller erbjuder en användbar funktion som kallas prescaling. Prescaling är ett förenklat sätt för räknaren ska hoppa över ett vissa antal Klockan tickar. AVR microcontrollers tillåta prescaling antal: 8, 64, 256 och 1024. Till exempel om att 64 på prescaler, räknaren räknas bara varje gång fästingar klockan 64 gånger. Detta innebär i en sekund (där mikrokontroller klickar 1.000.000 gånger) disk skulle räknas upp till 15,625. Om räknaren räknar till detta nummer, skulle då du kunna blinka en LED varje en sekund.

Främst, har timers ett register för kontroll, och ett register som innehåller räkna antalet. Kontrollera registret innehåller vissa växlar till aktivera och inaktivera funktioner. Och du gissat den... en av funktionerna är vilken prescaling du väljer. Kontrollera registret kallas TCCR0 eller TCCR1 (Timer/Counter kontroll Register). TCCR0 är 8-bitars kontroll registret och bara har en 8-bitars avstämningsregister, så det är bara 8 växlar att slå på och av. TCCR1 är 16-bitars, så den har 16 växlar att slå på och av, men den kommer i två 8-bitars register märkt A och B (TCCR1A och TCCR1B). Växlarna är följande: FOC (force utdata jämföra), WGM (vågform Generation läge), COM (jämför Match produktionen läge) och CS (klockan Välj).

Registret som håller räkningen kallas TCNT registret. Och det finns en 8-bitars version (TCNT0) och en 16-bitars version (TCNT1). TCNT1 register faktiskt får sitt nummer från två andra 8-bitars register att skapa en komplett 16-bitars nummer, men det är allt gjort bakom kulisserna (frånvarande) så inte behöver du oroa dig för hur TCNT1 får här möjlighet att ha 16-bitars, tycker bara det är magiska.

I videon, två program visades: en som bara visar en enda LED blinkar med ca 1 sekund och ett annat program som har en rad 7 lysdioder jagar varje sekund, och en annan rad 7 lysdioder jagar varje på 1 sekund. Det sistnämnda programmet visas här eftersom det har de flesta funktionerna som används med 16-bitars timer.

Utan att vara återkommande från tidigare inlägg, programmet initierar portarna för lysdioderna och ställer in timer/counter #1 (16-bitars timer). TCCR1B kontroll registret används för att ange den prescaling faktorn av 64 med CS10 och CS11 växlar.

Eftersom vi vill ha en av de 7 lysdioderna att jaga 1/7: e sekund varje, vi tar numret 15,625 (1000000/64 - kom ihåg 1000000 är micrcontroller 1 mhz klocka) och dela det med 7 att få ~ 2,232.143. Nu du säger, men du använder endast 2232 i programguider! Det beror på att TCNT1 accepterar endast heltal (inga decimaler). Nu du säger, kommer att tidpunkten vara avstängd till mängden decimaltecknet! Sant, men den AVR inre klockan är +/-10% felaktiga ändå. Om du använder en extern crystal du kan använda ett perfekt tal som representerar antalet lämpliga.

Du kommer att märka att TCNT1 också återställs till noll manuellt. Detta är behövs annars TCNT1 kommer hålla räkna tidigare 2232 förutsättning att sattes. Det finns andra kontrollfunktioner som har en automatisk Nollställning av detta antal, men vi kommer att få till det i en annan tutorial. Övriga delar av programmet med saker vi lärt oss i tidigare tutorials (LED slå på och av och matriser).

Se Steg
Relaterade Ämnen

Början Microcontrollers del 2: Att skapa ett SPI gränssnitt från programmeraren till mikrokontroller

Hej, hoppas vi du gillade del 1 av början Microcontrollers. Vi ska flytta i del 2 och börja prata om gränssnitt och hur du får din microcontroller att kommunicera med en dator.Så, vid denna punkt, du bör känna till begreppet mikrokontroller (MCU). Du...

Början Microcontrollers del 6: Skriva det första programmet till vända på en LED

Jag vet att du är redo att skriva det första programmet. Du har gått igenom en hel del hittills! Medan vi i frågan, låt oss sammanfatta händelserna. Du gick ut och köpte Atmel AVR mikrokontroller för att förstora. Jag valde theATMega32 för min använd...

Början Microcontrollers del 9: Knappen och programvara Debouncing metoder

I denna del av handledningen kommer att vi diskutera knappen och programvara debouncing.Vi vill studera knappen debouncing första och i detalj så vi har en god förståelse för vad det innebär. Knappen debouncing är viktigt och bör inte vara undervärde...

Början Microcontrollers del 13: Intro till LCD gränssnitt

Mikrokontroller är en underbar bit av ingenjörskonst och det kan göra många saker (med hjälp av några bra programmering), men det är fortfarande en ogenomskinlig svart låda. Om du vill att dela information, eller visa dig vad det försöker göra det, m...

Början Microcontrollers del 12: Intro till avbryter

I denna del av handledningen vi prata om avbrott arbeta till exempel med räknaren. Avbryter förbättra mikrokontroller i stort sätt. Avbryter göra din program reagerar på hårdvaran i microcontrollers, vilket kan vara en reaktion från circuit utanför m...

Början Microcontrollers del 8: Lägga till en knapp till mikrokontroller och göra det göra något

En mycket enkel och lätt sätt att tillhandahålla för mänsklig interaktion med mikrokontroller är att infoga en knapp i kretsen. Att kommunicera med datorer som använder två viktigaste inmatningsenheter: musen och tangentbordet. Ett tangentbord är ing...

Början Microcontrollers del 3: Överföra ett Program till mikrokontroller (drivrutiner)

Välkommen till del 3. Detta är en mindre handledning som kommer att behandla helt enkelt laddar drivrutiner se till din programmerare kan kommunicera med datorn ordentligt.Observera att ibland TinyISP och USBAVR enheter nu kommer förladdad med Window...

Början Microcontrollers del 5: Provning programmeraren och bygga den första kretsen

Så långt, bör du ha alla mjukvaran installerad och konstruerade det gränssnitt som kommer att ge en bekväm anslutning från programmeraren till mikrokontroller (MCU). För nästa steg måste en skärbräda (de med siffror är mycket bra), en LED och ett mot...

Början Microcontrollers del 4: Installera programmering miljö (WinAVR)

Välkommen till nästa steg i vår serie. Vi kommer att introducera några grundläggande programmeringselement nu. Denna handledning är helt enkelt om hur du installerar din programmeringsmiljö. Den programmeringsmiljö som vi kommer att använda kallas Wi...

Början Microcontrollers del 7: Omarbetning av det första programmet att göra LED blinkar

Du har skrivit det första programmet, som visade på en LED. Ja, det var spektakulärt! Tja, inte riktigt, men låt oss införa lite galenskap till LED. Vi ska ge det en "bipolära" personlighet genom att blinka. Då vi kliver upp ett snäpp och gör de...

Börjar Microcontrollers del 1

Detta är först i en lång rad av tutorials syftade till att ge Nybörjarguide och handledning kring Atmel AVR Atmega32 mikrokontroller. Jag kommer att visa dig, genom exempel och projekt, hur program och tillhandahålla funktioner för denna mikrokontrol...

Hur man öppnar en Honda CB/CX/GL stil varvräknare och hastighetsmätare

en dag medan ridning min 1981 Honda GL500 hade jag miss-lyckan av att ha skruvarna som håller ratten inför min varvräknare FN-tråd sig efter 29 år av vibrationer och orsaka ansiktet för att snurra runt fritt i fodralet. Tyvärr så är inte helt enkelt...

En början guide till designa ett teater rummet och Star tak

I have been wanting a dedicated home theatre room for about 15 years. Jag äntligen har en nu och det är en dröm. Det är inte bäst eller mest dyr men ser ut som det är en hög slut teater rum jämfört till rum omkring $50, 000 eller mer. Jag har en vän...

Protetiska helmask - del 1 skulptera, mögel och gjutning

Hej allaSyftet med detta instructable är att ge dig en inblick i hur man skulptera och kastade en grundläggande en bit latex helmask.Det finns många olika tekniker att göra masker och protetik med två halva kastar, injektion, papper mache och så vida...

Bygga en lövträ räknare och en Media står

Detta media stå funktioner en vacker lövträ topp, Svarvade avsmalnande ben, matchande trä rattar och en vit bas. Jag byggde denna TV-ställ att hysa mina högtalare (på sidorna, liksom på hyllan), och dölja saker bakom dörrarna. Det finns flera olika d...

Latex Mask del 1: Huvudet mögel och lera skulptera

detta är del 1 av en Instructable som visar dig hur man gör en latex mask. Så småningom kommer vi med en lera skulptur, gjutning i gips, och sedan hälla flytande latex av den och sedan dra ut den sista masken. Men innan vi kommer till den punkten, bö...

Lätt grundläggande jästdegsbotten för Pizza, öknar och middag Rolls

Denna deg är snabb, är det lätt och bäst av allt detta recept kan användas för mer än bara bröd eller pizza. Detta är en bra allt i ett recept och kan användas till att göra vad som helst från kanelbullar, middag rolls, bröd med mera. Från början til...

Ha kul med en miniräknare och en vän (mente för skolan, men fungerar överallt)

detta är min första instructable, så bli inte alltför förlåtande, det är bättre att lära sig från kritik än inte lära sig alls.Fortsätter, det senaste året jag befann mig i ett annat skrivbord från det jag var i året innan, och med en annan deskmate....

Skapa ditt första spel: Del 1: skapa karaktär och rörelse

i detta Instructable, vi kommer att titta på att skapa ett enkelt spel med Flash Professional 8. Detta är den första delen av många och varje gång, vi kommer att göra spelet mer och mer komplexa. Jag kommer att se till att du förstår varje del helt....