Arduino Timer onderbreekt (2 / 6 stap)

Stap 2: Structurering van Timer Interrupts



Code van de verzoekinstellingen timer wordt gedaan binnen de functie {} Setup in een schets van de Arduino.

De code voor het opzetten van timer interrupts betrokken is een beetje ontmoedigend om te kijken, maar het is eigenlijk niet zo moeilijk.  Ik vrijwel alleen het dezelfde belangrijkste stuk van code kopiëren en wijzigen van de prescaler en vergelijk wedstrijd registreren als u wilt instellen van de juiste interrupt-frequentie.

De hoofdstructuur van de interrupt setup ziet er zo uit:

 

Ziet u hoe de waarde van OCR #A (de vergelijk matchpercentage) gewijzigd voor elk van deze timer-opstellingen.  Zoals uiteengezet in de laatste stap, was dit berekend volgens de volgende vergelijking:

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

Merk ook op hoe de opstellingen tussen de drie timers verschillen enigszins in de lijn die de CTC modus ingeschakeld:
TCCR0A | = (1 << WGM01); //for-timer0
TCCR1B | = (1 << WGM12); //for timer1
TCCR2A | = (1 << WGM21); //for-timer2
Dit volgt rechtstreeks uit het gegevensblad van de ATMEL 328/168.

Ten slotte, merk op hoe de instelling voor de prescalers volgt de tabellen in de laatste stap (de tabel voor timer 0 wordt herhaald boven),
TCCR2B | = (1 << CS22);  Set CS #2 bits voor 64 prescaler voor timer 2
TCCR1B | = (1 << CS11);  Set CS #1 bit voor 8 prescaler voor timer 1
TCCR0B | = (1 << CS02) | (1 << CS00);  CS #2 en CS #0 bits ingesteld voor 1024 prescaler voor timer 0

Merken in de laatste stap zijn er verschillende opties voor de verschillende timers prescaling.  Timer2 heeft bijvoorbeeld niet de optie van 1024 prescaler.

De opdrachten die u wilt uitvoeren tijdens deze timer interrupts bevinden zich in de Arduino schets ingekapseld in het volgende:
ISR(TIMER0_COMPA_vect) {//change de 0-1 voor timer1 en 2 voor timer2
Interrupt opdrachten hier
}
Dit codefragment moet buiten de Setup en loop functies zich bevinden.  Ook, probeer te houden van de interrupt routine zo kort mogelijk te houden, vooral als u op een hoge frequentie zijn onderbreken.  Het kan zelfs waard het aanpakken van de poorten/pinnen van de ATMEL chip rechtstreeks in plaats van het gebruiken van de functies digitalWrite() en digitalRead() zijn.  Hier vindt u meer info over dat hier.

Voorbeeld-de volgende schets stelt en voert 3 timer interrupts:

 //timer interrupts //by Amanda Ghassaei //June 2012 

De afbeeldingen hierboven tonen de output van deze timer interrupts.  Fig 1 toont een blokgolf schommelen tussen 0 en 5 v bij 1kHz (timer0 interrupt), Fig. 2 toont de LED aangesloten op pin 13 inschakelen voor één seconde dan uitschakelen gedurende één seconde (timer1-interrupt), fig 3 toont een pols golf schommelen tussen 0 en 5 v met een frequentie van 4khz (timer2 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