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 mikrokontroller.

I grundläggande termer är ett avbrott precis vad det står som. Det avbryter en normal rinnande programflöde för att göra en annan (andra kodblock som du programmera). Säg till exempel din program gör normala blinkande lysdioder och du vill att den ska reagera på en PIR-sensor (ansluten till en avbryta pin), och går till en speciell kodblock att göra ett pip från en Summer ansluten till en annan PIN-kod. Om du berätta microcontroller att göra detta, kommer att det sluta döda och gå till den kod som tillhör avbrottet (göra ett pip). Efter avbrottskod körs, återupptar stoppat programmet just där den slutade. Några exempel, skulle avbryter vara ett alternativ till vallokalerna, vilket skulle kräva program cykler. Säga din program vill bara ett pip när någon passerar PIR-sensorn. Ditt program kunde hålla provning att stiftet för att se om den har en hög läsning om och om igen i en aldrig sinande slinga (samtidigt (1)). Alternativt kan du ta bort alla polling programkoden för att testa PIN-koden för en hög läsning och tillåta avbrottet att automatiskt komma till Pipkoden när mikrokontroller känner av det höga värdet.

Vilka typer av avbrott finns det AVR mikrokontroller? Avbrott kan fastställas för händelser såsom en räknares nummer, en PIN-kod ändrar tillstånd (från låg till hög eller tvärtom) seriell kommunikation vid mottagning av information eller Analog till Digital efter att ha fastställt en konvertering. Här är en lista av avbrott vektorer som du kan använda. Andra tutorials kommer att använda för många av dessa vektorer.

Vi kommer att använda timer/counter som ett exempel. Vi berättar timer/counter ett nummer som TCNT1 (disk) måste du matcha. Numret för att matcha kommer att gå in i ett register som kallas OCR1A (Output jämföra Register). "1" representerar specifika disk vi använder som är 16-bitars version. Vi har två OCRs, A och B. Vi kommer att använda A för detta exempel. Men vet vi om räknaren återställs till noll när matchen görs? Vi vill absolut TCNT1 att gå tillbaka till noll så räkningen kommer att börja om och vi får en annan match på vår planerade nummer, men detta är inte gjort i kod som vi gjorde förra gången (kom ihåg TCNT1 = 0;). Den här gången, vi kommer vilja slå på en annan switch i TCCR1B kontroll register kallas WGM12 (vågform Generation läge för timer 1). #2 i denna switch representerar bara som det är, eftersom det finns några WGM. Vi kommer också att använda CS10 och CS11 igen ställa prescaling till 64 som i introt till timers video.

Timer/counter måste veta att vi avser att använda funktionen avbrott. Detta sker genom TIMSK (Timer/Counter avbryta Mask Register). Vi behöver bara slå på en switch i detta register: OCIE1A (Output jämföra A Match avbryta aktiverar) switch. När den antal satt in OCR1A motsvaras av räknaren, kommer att programmet avbrytas för att växla LED. För ett avbrott till hända, vi måste du aktivera de globala avbrott "sei()", då vi måste du aktivera avbrottet för timer/counter och slutligen avbrottstjänstens rutin (ISR) behöver skapas. Avbrottstjänstens rutin är precis som de funktioner som gjordes i knapp spel exempel. Avbrottstjänstens rutin är bara ett kodblock utanför den huvudsakliga rutinen och börjar med ISR med vektorn inom parentes "(vektor)", tillåts av kodblocket inom parentes "{kod}". För timer/counter (16-bitars version), och det faktum att vi använder en version av OCR1, vektor namnet är: TIMER1_COMPA_vect. Så rutin skulle vara: ISR(TIMER1_COMPA_vect) {kod att köra}. Vi använde flera i introt till timers video som representerade en sekund: 15625, så vi kommer att använda detta en för OCR1A. Men antalet bör överväga indexering från 0, så vi kommer att behöva använda nummer 15624 istället.

Se Steg
Relaterade Ämnen

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 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 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 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 gr...

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 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...

[Del 1] Intro till Java - komma igång

Hallå där! Idag ska jag ge dig en liten snabbkurs i en mycket intressant värld av Java kodning. Du bör följa denna tutorial innan du följer någon av mina senare tutorials!Steg 1: Så du koden?Så vill du kod va? Bra kodning är mer avancerad än det verk...

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...

[Del 2] Intro till Java - variabler

Innan du läser:Du borde ha läst min första handledning innan du läser den här! Vissa saker är inte meningsfullt om du inte!Nu när du har slutfört ett grundläggande program, varför vi får in en viktig byggsten i kodning; variabler! Variabler som nämns...

Fläkt RPM med inre hall effekt sensor och Arduino (Intro till hårdvara avbryta och LCD display)

För mitt andra projekt för arbete, jag var tvungen att mäta rotationshastigheten av rotoren i varv Per minut (RPM) av en modifierad dator fläkt. Den hade tre kablarna kommer ut och som kryssat mig som kanske har något sätt att kontrollera sin hastigh...

Intro till ARM del 1

I den här första videon kommer jag att ge ett intro till STM32F0Discovery utveckling styrelsen som vi kommer att använda för nästa några videor. Jag kommer att beskriva hårdvaran i styrelsen och vad alla dev kit har att erbjuda.Länk till ST: s hemsid...

Konfiguration av MKS Sbase v1.2 32-bitars Controller grunderna och intro till Smoothieware.

ProlougeJag är verkligen glad att se hur denna grundläggande intro till Smoothieware och MKS Sbase 1.2 controller har fått så mycket uppmärksamhet, och hoppas verkligen att det kommer att hjälpa människor att komma igång eller besluta att inte.Jag ha...

Intro till Robotics

Robotar går snabbt från tecken och koncepten som endast återfinns i science fiction till del av vår vardag. Även om de kan ibland verkar vara elektromekaniska mysterier, blir personliga robotics mer tillgängliga varje dag! Billigare, högre kvalitet,...

3D-utskrifter Intro till Makerbot

Här är och Intro till använder Makerbot Desktop skriva ut 3D-objekt på skrivbordet Makerbot Replicator 5! Mycket grundläggande instruktioner, Känn dig fri att röra runt med programvaran lite mer. (:Steg 1: Välj din fil. Antingen gör din egen 3D-model...

Intro till GPS med Microcontrollers

När faller av strikt militära operationer, GPS har blivit en regelbunden del av modern livsstil och på relativt kort tid! Vem skulle inte vilja veta när och var de är någonstans på planeten? Det är en science fiction-dröm i verkligheten, en nu så väv...

Intro till VB Script: en Nybörjarguide: del 2: arbeta med filer

väl i min senaste VBScript instructable, gick jag över hur man gör ett skript för att stänga av din internet att spela Xbox360. Idag har jag ett annat problem. Min dator har varit stängande ned vid slumpmässiga tidpunkter och jag vill logga in varje...