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 microcontrollers, die mogelijk een reactie van het circuit buiten de microcontroller.

In gewone woorden is een interrupt precies wat het als wordt beweerd. Het onderbreekt een normale lopende programmeerstroom om een andere taak (andere codeblok dat u program). Zeg bijvoorbeeld uw programma doet normale flikkerende LEDs en u wilt reageren op een PIR-sensor (aangesloten op een interrupt-pin), en gaat naar een speciale codeblok om een pieptoon uit een zoemer aangesloten op een andere pin. Als u de microcontroller om dit te doen vertellen, stopt het programma dood en ga naar de code die bij de interrupt (Maak een pieptoon hoort). Na interruptcode wordt uitgevoerd, wordt het gestopt programma hervat precies waar deze was gebleven. Interrupts zou enkele voorbeelden, een alternatief voor polling, waarbij programma cycli. Zeggen dat uw programma is te willen alleen pieptoon wanneer iemand de PIR-sensor passeert. Uw programma kan blijven testen die pin om te zien of het een hoge lezing over en binnen de nooit eindigende lus (terwijl (1)). Ook het verwijderen van de polling-programma-code om te testen de pin voor een hoge lezing en de interrupt automatisch overgaan tot de geluidscode wanneer de microcontroller de hoge lezing zintuigen toestaan.

Welke soorten interrupts zijn beschikbaar voor de AVR microcontroller? Interrupts kunnen worden vastgesteld voor de manifestaties van een teller-nummer, een pin staat (van laag naar hoog of vice versa) seriële communicatie ontvangst van informatie, of de analoog naar digitaal vaststellende een conversie wijzigen. Hier is een lijst van interrupt vectoren die u kunt gebruiken. Andere tutorials zal maken gebruik van veel van deze vectoren.

We gaan de timer/teller gebruiken als voorbeeld. Zullen we de timer/teller een getal dat de TCNT1 (de teller) moet overeenkomen. Het nummer aan zal gaan in een register genaamd OCR1A (Output vergelijken registreren). De "1" staat voor de specifieke prestatiemeter we gebruiken de 16-bits versie. We hebben twee OCRs, de A en de B. Voor dit voorbeeld zullen we A gebruiken. Maar weten we als de teller wordt teruggezet op nul wanneer de wedstrijd is gemaakt? Wij willen zeker de TCNT1 terug te gaan naar nul dus de telling zal beginnen en krijgen we een andere wedstrijd op onze beoogde nummer, maar dit niet gedaan in code zoals we vorige keer deden (Vergeet niet de TCNT1 = 0;). Ditmaal willen we een ander zet in het TCCR1B control register genaamd WGM12 (golfvorm generatie modus voor timer 1). De #2 in die switch vertegenwoordigt enkel welke WGM is, aangezien er een paar. We zullen ook gebruiken de CS10 en CS11 opnieuw instellen van de prescaling tot 64 zoals in het intro van timers video.

Dan zal de timer/teller moet weten dat we van plan om de interrupt-functie te gebruiken. Dit wordt gedaan door de TIMSK (Timer/teller onderbreken masker registreren). We moeten alleen een zet in dit register: de OCIE1A (Output vergelijken A Match Interrupt Enable) schakelaar. Zodra de nummer zetten in de OCR1A wordt geëvenaard door de teller, zal het programma worden onderbroken om te schakelen van de LED. Voor een interrupt gebeuren, zullen we om de wereldwijde interrupts "sei()", dan zullen we om de interrupt voor de timer/teller en tot slot de interrupt service routine (ISR) zal moeten worden gemaakt. De interrupt service routine is net als de functies die zijn aangebracht in de knop spel voorbeeld. De interrupt service routine is gewoon een codeblok buiten de belangrijkste routine en begint met ISR met de vector binnen de haakjes "(vector)", toegestaan door het codeblok haakjes "{Code}". Voor de timer/teller (16-bits versie), en het feit dat we met behulp van de A-versie van de OCR1, de naam van de vector is: TIMER1_COMPA_vect. Dus de routine zou: ISR(TIMER1_COMPA_vect) {code uit te voeren}. We gebruikten een nummer in de intro van timers video die vertegenwoordigd een seconde: 15625, dus we gebruik van deze een voor de OCR1A maken zullen. Maar het nummer moet overwegen indexeren van 0, dus zullen we het aantal 15624 in plaats daarvan gebruiken.

Gerelateerde Artikelen

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 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 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 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 11: Timers, tellers, en de klok van de Microcontroller

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 b
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
[Deel 1] Inleiding tot Java - aan de slag

[Deel 1] Inleiding tot Java - aan de slag

Hallo daar! Vandaag ga ik om u een beetje spoedcursus in de zeer interessante wereld van de codage van Java. U moet deze tutorial te volgen voordat u om het even welk van mijn latere tutorials!Stap 1: Dus u wilt Code?Dus wilt u code hè? Goed codering
[Deel 2] Inleiding tot Java - variabelen

[Deel 2] Inleiding tot Java - variabelen

Voordat u lezen:U moet hebben gelezen mijn eerste tutorial voor het lezen van dit één! Sommige dingen zullen niet zinvol als u dat niet doet!Nu dat u hebt voltooid een basistoepassing, waarom niet we gaan een belangrijke bouwsteen van codering; varia
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 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
Inleiding tot Leatherworking

Inleiding tot Leatherworking

Leder is een geweldig product dat is gebruikt door de mens sinds echt, het begin van de mens. Het is in kleding, schoenen, tassen, riemen en holsters en echt, vrij veel alles wat die je van bedenken kunt kan worden gemaakt van leer.Werken met leer is
Configureren MKS Sbase v1.2 32-bits domeincontroller basics en inleiding tot de Smoothieware.

Configureren MKS Sbase v1.2 32-bits domeincontroller basics en inleiding tot de Smoothieware.

ProlougeIk ben echt blij om te zien hoe deze fundamentele intro in Smoothieware en de MKS Sbase 1.2 controller zoveel aandacht hebben gekregen, en hoop echt dat het gaat om het helpen van mensen aan de slag of besluiten niet te.Ik heb aanvaard in rob