Arduino Timer onderbreekt (1 / 6 stap)

Stap 1: Prescalers en het Register van de Match vergelijken


De Uno heeft drie timers, genaamd timer0, timer1 en timer2.  Elk van de timers heeft een teller die op elke tik van de klok van de timer wordt verhoogd.  CTC timer interrupts worden geactiveerd wanneer de teller op een opgegeven waarde, opgeslagen in het register van de wedstrijd vergelijken.  Zodra een timer teller op deze waarde zal duidelijk (weer op nul gezet) op de volgende teek van de timer van de klok, dan zal het blijven rekenen tot het vergelijken overeenkomen met waarde weer.  Door het kiezen van de te vergelijken overeenkomen met de waarde en de snelheid waarmee de timer de teller verhoogt instellen, kunt u de frequentie van timer interrupts.

De eerste parameter die ik zal bespreken is de snelheid waarmee de timer de teller verhoogt.  De Arduino Klok draait op 16MHz, dit is de snelste snelheid dat de timers hun tellers kunnen verhogen.  Bij 16MHz vertegenwoordigt elke tik van de teller 1/16,000,000 van een seconde (~ 63ns), dus een teller 10/16,000,000 seconden duurt tot een waarde van 9 (tellers zijn 0 geïndexeerd), en 100/16,000,000 seconden tot een waarde van 99.

In de meeste gevallen vindt u dat de teller snelheid instellen tot 16MHz te snel is.  Timer0 en timer2 zijn 8 bits timers, wat betekent dat ze een maximale tegenwaarde van 255 kunnen opslaan.  Timer1 is een 16-bits timer, wat betekent dat het een maximale waarde van 65535 kunt opslaan.  Zodra een teller zijn maximum bereikt, zal het terug naar nul (dit heet overloop) Vink.  Dit betekent bij 16MHz, zelfs als we het vergelijken wedstrijd register ingesteld op de waarde van max teller, interrupts zal optreden om 256/16,000,000 seconden (~ 16us) voor de 8 bit items, en elke 65.536/16,000,000 (~ 4 ms) seconden voor de teller van de 16-bits.  Duidelijk, is dit niet erg handig als u alleen wilt onderbreken eenmaal een seconde.

In plaats daarvan kunt u de controle van de snelheid van de timer teller incrementele met behulp van iets genaamd een prescaler.  Een prescaler bepaalt de snelheid van uw timer volgens de de volgende vergelijking:

(timer snelheid (Hz)) = (Arduino kloksnelheid (16MHz)) / prescaler

Dus een 1 prescaler zal het verhogen van de teller bij 16MHz, een prescaler van 8 zal het verhogen van 2MHz, een 64 prescaler = 250kHz, enzovoort.  Zoals aangegeven in de tabellen hierboven, kan de prescaler gelijk zijn aan 1, 8, 64, 256 en 1024.  (Ik zal het uitleggen van de betekenis van CS12, CS11 en CS10 in de volgende stap.)

Nu kunt u de interrupt-frequentie met de volgende vergelijking berekenen:

frequentie (Hz) onderbreken = (Arduino kloksnelheid 16.000, 000Hz) / (prescaler * (vergelijk match register + 1))
de + 1 is er omdat de vergelijk overeenkomen met register nul geïndexeerd

het herschikken van de bovenstaande vergelijking, kunt u oplossen voor het Vergelijk register matchpercentage dat zal uw gewenste interrupt-frequentie:

Vergelijk wedstrijd register = [16.000, 000Hz / (prescaler * gewenst interrupt-frequentie)] - 1
Onthoud dat als u timers 0 en 2 dit nummer minder dan 256, en minder dan 65536 voor timer1 moet

Dus als je een interrupt elke seconde (frequentie van 1Hz wilde):
Vergelijk wedstrijd register = [16,000,000 / (prescaler * 1)] -1
met een prescaler van 1024 krijg je:
Vergelijk wedstrijd register = [16,000,000 / (1024 * 1)] -1
= 15,624
Sinds 256 15,624 < < 65.536, moet u timer1 voor deze interrupt.

Gerelateerde Artikelen

Maken van een Arduino-timer

Maken van een Arduino-timer

Hi, dus mij en mijn vriend instelt zodat we PCB´s kunnen maken. We zijn momenteel het maken van een UV blootstelling box (eventueel een ander instrucable) en voor dit vak, we nodig hadden een timer, dus dit is wat we tot nu toe hebben gedaan, en wat
Arduino Timer

Arduino Timer

Hallo iedereen, dit instructable is allen over hoe te bouwen van een stopwatch / Timer met behulp van Arduino.Kenmerken van deze Timer: (Check voor meer in de diepte details hoe u deze functies kunt in "Code/schets" sectie1. u kunt een doeltijd
Iontoforese gecontroleerd door arduino timer

Iontoforese gecontroleerd door arduino timer

DIY Iontoforese apparaat aangedreven door Arduino met timerfunctieDeze apparaat zal zijn voorzien van een schakelaar van polariteit op de ingestelde tijdsinterval (aan / uit).Stap 1: achtergrond GESCHIEDENIS:Hyperhidrosis is de aandoening gekenmerkt
Arduino Time-Lapse Panorama Controller

Arduino Time-Lapse Panorama Controller

Panorama Controller voor GoPro camera 'sDe controller zal uw GoPro draaien over een bepaalde hoek voor een reeks duur of je GoPro voor een volledige rotatie voor een reeks duur zal draaien.Dit project is gebaseerd op de oorspronkelijke instructable d
Arduino Time Lapse

Arduino Time Lapse

dat is wat we gaan doen:We moeten:-Arduino board.-Sd Breakout Board.-TTL seriële JPEG Camera.-RTC Breakout Board (optioneel).Stap 1: bedrading Dit is hoe de bedrading werkt:Camera:5V -> 5VGND -> GNDTX -> D2RX -> 10 K Ohm weerstand -> D3SD:5
DIY Arduino Time Lapse Panner voor GoPro

DIY Arduino Time Lapse Panner voor GoPro

Ik moest het maken van een panner dat zou 1 rotatie meer dan 5 minuten.Ik ontdekte twee andere projecten aan mijne baseren. Bouw is vrij veel het zelfde als de onderstaande bronprojecten.Ik herschreef deel van de code. Mijn TimeLapse Panner gevraagd
Arduino Audio Input

Arduino Audio Input

Geluid in je Arduino sturen. Dit Instructable zal u tonen hoe om audio te bereiden, zodat het kan worden bemonsterd en verwerkt door een Arduino sound responsieve projecten en audio-effecten te maken. (Dit artikel is een aanvulling op een ander Instr
Arduino Home basketbal hoepel Score Detection System alias teamscorer

Arduino Home basketbal hoepel Score Detection System alias teamscorer

Mijn zusje en ik vond deze indoor basketbal hoepel (hierboven afgebeeld) op een dumpster een paar weken geleden. We kwamen thuis van kerk net zoals twee mensen waren het lossen van hun vrachtwagen. We besloten om te grijpen, samen met de air hockey t
Stereo Audio met Arduino

Stereo Audio met Arduino

Onlangs heb ik zijn detachering een heleboel projecten die een 8 bit weerstand ladderdigitaal naar analoog converter (DAC) en een Arduino gebruiken om geluid te maken. (Zie het vocale effecten Arduino, de Arduino drum sampler en mijn audio-uitgang-tu
Nachtelijke emissies: Mijn Arduino Powered Internet ingeschakeld droom Generator

Nachtelijke emissies: Mijn Arduino Powered Internet ingeschakeld droom Generator

We moeten allemaal dromen meer dus ik deze Arduino Powered gemaakt heb "dream generator" om te helpen plant de zaden voor sommige grote denken-gekte.  Wanneer u nadert de generator een ultrasone sensor Maxbotix triggers lichten en muziek die tek
Arduino Schateiland

Arduino Schateiland

Ik heb altijd graag films zoals National Treasure en dergelijke. Degenen die beschikt over een team van mensen die worden uitgevoerd over de hele probeert op te lossen een raadsel of een tekenreeks van raadsels om, het goud, krijgen het meisje, behal
Infrarood Tachometer met behulp van Arduino

Infrarood Tachometer met behulp van Arduino

Hoi, is dit gewoon een toerenteller zoals u ook vele tutorials die er vindt. Er zijn verschillende benaderingen over het meten van rpm, wat ik hier gebruik is gebaseerd op analogRead methode zoals geschreven in de arduino playground leren pagina (htt
Arduino Schaken klok - multi spel vak

Arduino Schaken klok - multi spel vak

CHECK OUT mijn andere projecten >>Wekker met infrarood- en Bluetooth-luidsprekersArduino stappenteller horloge, met temperatuur, hoogte en kompas!Hey mensen! Na het maken van een Arduino smartwatch net vorige week, kreeg ik veel klachten of tips, ee
Google weer op grafisch display met Arduino

Google weer op grafisch display met Arduino

In dit project, ben ik met behulp van een Arduino board voorspelling van het weer uit Google weer service op een VGA scherm weergeven. Het display is duidelijk grafische, met iconen en sommige kleurrijke tekst. Het is een van die gadgets die ik wilde