Begin Microcontrollers deel 11: Timers, tellers, en de klok van de Microcontroller


Timers en tellers zijn zo integraal dat ziet u de talrijke voorbeelden hen te betrekken in deze serie. Zoals de naam al zegt, worden timers gebruikt voor de tijd en tellen. Counting en timing kunt u sommige zeer nette dingen zoals controlerende LED brights, graden van de hoek van de servo-assen, ontvangen van sensorgegevens die zenden in PWM, maken van een timer of simpelweg een variabele tijd toe te voegen aan uw microcontroller project.

Eerst is het belangrijk te begrijpen dat er een klok in (of buiten) de AVR-microcontrollers. Alle microcontrollers hebben klokken in hen of een externe klok gebruikt. Microcontrollers vereisen klokken, zodat de programma's kunnen worden uitgevoerd in het ritme met de klok. Net als de programma's die we schrijven, zoals elke kloktik passeert, worden instructies verwerkt in de tijd met het teken van de klok.

De timer en teller functies in de microcontroller telling in sync met de klok van de microcontroller. Echter, telt de teller slechts maximaal 256 (8 bit counter) of 65535 (16-bits counter). Dat is een veel huilen uit de 1.000.000 teken per seconde dat de standaard AVR microcontroller voorziet. De microcontroller biedt een heel handig feature, genaamd prescaling. Prescaling is een simplistische manier als de teller een aantal klok teken overslaan. De AVR-microcontrollers toestaan prescaling aantal: 8, 64, 256 en 1024. Bijvoorbeeld, als ingesteld op 64 op de prescaler, de teller alleen elke keer tellen zal teken de klok 64 keer. Dit betekent dat in één seconde (waar de microcontroller 1.000.000 keer klikken) de teller zou alleen tellen tot 15,625. Als de teller omhoog naar dat nummer telt, dan zou je kunnen laten knipperen van een LED elke één seconde.

Timers zijn vooral bedoeld, een register voor controle, en een register die in het bezit van de graaf-nummer. Het besturingselement register bevat sommige schakelopties voor het inschakelen en uitschakelen functies. En je raadt dat hetâ €¦ een van de kenmerken is die prescaling om te selecteren. Het besturingselement register heet TCCR0 of TCCR1 (Timer/teller besturingselement registreren). De TCCR0 is het register van de 8-bits besturingselement en heeft alleen een 8-bits besturingselement registreren, dus er is slechts 8 schakelaars op en uitschakelen. TCCR1 is een 16-bits, dus het heeft 16 schakelopties voor het inschakelen en uitschakelen, maar het komt in twee 8-bit registers label A en B (TCCR1A en TCCR1B). De schakelaars zijn als volgt: FOC (kracht Output vergelijken), WGM (Waveform generatie modus), COM (vergelijk Match Output Mode) en CS (klok selecteren).

Het register die in het bezit van de graaf heet het TCNT-register. En er is een 8-bits-versie (TCNT0) en een 16-bits versie (TCNT1). De TCNT1 register daadwerkelijk krijgt het nummer uit twee andere 8-bit registers maken een volledige 16-bits getal, maar dat is alles wat gedaan achter de schermen (geabstraheerd), zodat u niet hoeft te maken over hoe de TCNT1 deze mogelijkheid krijgt om 16-bits, denk het is magie.

In de video, twee programma's werden getoond: dat toont alleen maar een enkele LED knipperend op ongeveer 1 seconde, en een ander programma dat heeft één rij met 7 LEDs achter elke seconde, en een andere rij van 7 LEDs achter elk op 1 seconde. Het laatste programma wordt hier weergegeven, omdat het heeft de meeste functies gebruikt in combinatie met de 16-bits timer.

Zonder repetitieve van vorige posten, het programma initialiseert de poorten voor de LEDs en de timer/teller #1 (de 16-bits timer) ingesteld. Het TCCR1B control register wordt gebruikt voor het instellen van de prescaling factor van 64 met de CS10 en CS11-switches.

Omdat we willen dat één van de 7 LED's te jagen 1/7e van een seconde elke, we nemen het nummer 15,625 (1000000/64 - Vergeet niet de 1000000 is de klok 1 mhz van de micrcontroller) en het wordt gedeeld door 7 om ~ 2,232.143. Nu, je zegt, maar kunt u alleen 2232 in de pogram!! dat komt omdat TCNT1 accepteert alleen geheel getal (geen decimalen). Nu je zegt, zal de timing af met het bedrag van het decimaalteken worden!! Klopt, maar de interne klok van AVR is toch +/-10% onjuist. Als een externe kristal wordt gebruikt, gebruikt u kon een perfect getal waarmee het juiste aantal.

U zult opmerken dat de TCNT1 ook op nul wordt teruggesteld handmatig. Dit is nodig anders de TCNT1 zal houden tellen verleden de 2232 dat voorwaarde was ingesteld. Er zijn andere controle-functies die heeft een automatische zeroing van dit nummer, maar we krijgen die in een andere tutorial. De overige delen van het programma is het gebruik van dingen die we geleerd hebben in de vorige tutorials (LED draaien in- en uitschakelen en arrays).

Gerelateerde Artikelen

Begin Microcontrollers deel 2: Het scheppen van een SPI Interface van de programmeur de microcontroller

Begin Microcontrollers deel 2: Het scheppen van een SPI Interface van de programmeur de microcontroller

Hallo, we hopen dat u genoten deel 1 van begin Microcontrollers. We gaan beginnen te praten over interfaces en hoe u uw microcontroller om te communiceren met een computer te verplaatsen langs in deel 2.Dus, op dit punt, moet u vertrouwd met het conc
Begin Microcontrollers deel 6: Het schrijven van de eerste programma voor zwenking op een LED

Begin Microcontrollers deel 6: Het schrijven van de eerste programma voor zwenking op een LED

Ik weet dat u bent klaar om te schrijven van het eerste programma. Je hebt meegemaakt veel tot nu toe! Terwijl we op het onderwerp, recapituleer de gebeurtenissen. U ging naar buiten en gekocht van de Atmel AVR Microcontroller van uw keuze. TheATMega
Begin Microcontrollers deel 5: De programmeur te testen en het opbouwen van het eerste Circuit

Begin Microcontrollers deel 5: De programmeur te testen en het opbouwen van het eerste Circuit

Tot nu toe hebt u de software geïnstalleerd en de interface die voor een eenvoudige aansluiting van de programmeur de microcontroller (MCU zorgt) gebouwd. Voor de volgende stap, zal u een breadboard (degene met getallen zijn erg behulpzaam), een LED
Begin Microcontrollers deel 12: Inleiding tot de Interrupts

Begin Microcontrollers deel 12: Inleiding tot de Interrupts

In dit deel van de tutorial die we over interrupts praten zullen werken bijvoorbeeld met behulp van de teller. Interrupts verbeteren het gebruik van microcontrollers in een enorme manier. Interrupts maken uw programma's reageren op de hardware van de
Begin Microcontrollers deel 9: De knop en de Software Debouncing methoden

Begin Microcontrollers deel 9: De knop en de Software Debouncing methoden

In dit deel van de tutorial zullen we bespreken knop en software debouncing.Wij willen studeren knop debouncing eerste en in detail, dus we een goed begrip hebben van wat het inhoudt. Knop debouncing is belangrijk en moet niet worden ondergewaardeerd
Begin Microcontrollers deel 3: Overdracht van een programma in de Microcontroller (stuurprogramma's)

Begin Microcontrollers deel 3: Overdracht van een programma in de Microcontroller (stuurprogramma's)

Welkom bij deel 3. Dit is een kleinere tutorial die zich bezighouden zal met het eenvoudig laden van stuurprogramma's om ervoor te zorgen dat uw programmeur kan communiceren met uw computer correct.Houd er rekening mee dat soms TinyISP en USBAVR appa
Begin Microcontrollers deel 8: Het toevoegen van een knop aan de Microcontroller en daarmee doen iets

Begin Microcontrollers deel 8: Het toevoegen van een knop aan de Microcontroller en daarmee doen iets

Een zeer eenvoudige en gemakkelijke manier te voorzien van menselijke interactie met de microcontroller is een knop invoegen in het circuit. We communiceren met computers met behulp van de twee belangrijkste invoerapparaten: de muis en het toetsenbor
Begin Microcontrollers deel 13: Inleiding tot de LCD interfacing

Begin Microcontrollers deel 13: Inleiding tot de LCD interfacing

De microcontroller is een prachtig stukje techniek en het kan doen veel dingen (met de hulp van enkele grote programmering), maar het is nog steeds een dekkende zwarte doos. Als u het delen van informatie wilt, of u tonen wat het wil doen, moet u ver
Begin Microcontrollers deel 7: Herziening van het eerste programma om het knipperen van LED

Begin Microcontrollers deel 7: Herziening van het eerste programma om het knipperen van LED

Het eerste programma, dat een LED ingeschakeld die u hebt geschreven. Ja, dat spectaculair was! Nou, niet echt, maar laten we introduceren een beetje gekte op de LED. We geven het een "bi-polaire" persoonlijkheid doordat het knipperen. Toen we h
Begin Microcontrollers deel 4: Installatie van de programmeeromgeving (WinAVR)

Begin Microcontrollers deel 4: Installatie van de programmeeromgeving (WinAVR)

Welkom bij de volgende stap in onze serie. Wij zullen sommige fundamentele programmeerelementen nu introduceren. Deze tutorial is gewoon over het installeren van uw programmeeromgeving. De programmeeromgeving die we zullen gebruiken heet WinAVR.Om te
Microcontrollers deel 1 te beginnen

Microcontrollers deel 1 te beginnen

Dit is de eerste in een lange lijn van tutorials gericht een beginnershandleiding en tutorial gebaseerd rond de Atmel AVR Atmega32 microcontroller te geven. Ik zal tonen u, door middel van voorbeelden en projecten, hoe te programmeren en bieden funct
Elementaire Robotics deel 2 - het toevoegen van de Microcontroller en de Motor Driver

Elementaire Robotics deel 2 - het toevoegen van de Microcontroller en de Motor Driver

Deze week onze studenten op lange Ridge School (http://www.longridgeschool.org) aangesloten de elektronica op de robot chassis dat werd voltooid in deel 1:.We vonden dat we vervangen de afstandhouders op de robot moesten omdat ze te kort waren voor h
Deel 1: A Stencil Design met behulp van Photoshop CS4 maken

Deel 1: A Stencil Design met behulp van Photoshop CS4 maken

In deze tutorial, ik zal nemen u door middel van een gedetailleerde toch eenvoudige gids over hoe u een eenvoudige jpeg-afbeelding in een afdrukbare stencil met behulp van Photoshop en Illustrator die kan worden gebruikt omzetten kunt voor het afdruk
Deel B: Maken een paddestoel-logboek, overdracht van Mycelium op graan

Deel B: Maken een paddestoel-logboek, overdracht van Mycelium op graan

hier is de link voor deel A: Hier is de link voor deel C: Overdragende graan spawn te vers graanMateriële lijst: handschoen box, gesteriliseerd graan tassen, gezonde spawn tassen, gesteriliseerd Scalpel, waterstofperoxide, Gas lamp of lichtere, Mycel