External avbryter på MPIDE del 1: attachInterrupt() (7 / 11 steg)

Steg 7: Interruipt rutin



Som jag nämnde i föregående steg, satt vi vår avbryta tjänsten rutinmässiga eller ISR till vår LEDchange() funktion. Denna funktion kan vara vad du vill, men avbryter är mycket petiga saker, så finns det några riktlinjer som du vill följa.

Först och främst måste ISRs köra snabbt. Låt oss gå tillbaka till vårt klassrum exempel. När professorn uppmanade du för din fråga, vad händer om du började med ett långt samtal med professorn? Det skulle helt störa klassen och professorn inte skulle kunna komma tillbaka till sitt föredrag att avsluta det innan klass slutade. Istället, du försöker göra din fråga mycket kort och din lärare försöker ge er ett koncist svar. Samma sak gäller för avbrott. De avbryta flödet av den normala programmet, så du vill komma tillbaka till det så snart som möjligt.

ANVÄND INTE NÅGONSIN DELAY() I EN ISR. Funktionen delay() anses i allmänhet vara slarvig programmering. I grund och botten fryser det din mikrokontroller för en viss tid. Under denna tid ingen annan kod kan köra (med undantag för andra avbrott), och som funktionellt har slösat bort tid. Om du använder delay() i en ISR, tar det ISR forever, som bryter mot vår första regeln. Det förtjänster men det är egen varning, eftersom det är en av de grundläggande verktygen som nya programmerare introduceras till under deras första blink program, och kan lätt resa dig upp när får in mer avancerade ämnen som avbryter.

Denna sista regeln är mer av en personlig preferens än något annat. Jag har hört att andra människor ibland har problem när du försöker manipulera utgångar i deras ISR, vrida lysdioder på och av. Generellt tror jag på dessa som långsamma processer, så om möjligt jag försöker undvika manipulera utgångar inuti min ISRs. Det är därför vi använder variabeln LEDstate att ställa in våra led, i stället för att ställa in den direkt. Avbryter används dock ofta vid kommunikation med andra styrelser och sådant, så det inte är alltid praktiskt eller ens möjligt att hålla från att manipulera utgångar, så detta är inte en fasta regel. Använd din bästa omdöme!

Se Steg
Relaterade Ämnen

External avbryter på MPIDE del 2: setIntVector()

I min tidigare I'ble lärt jag dig ett mycket enkelt sätt att få externa avbryter körs på den DP32, uC32 och WF32 *. Avbryter, dock är verkligen komplicerat saker och även om det är trevligt att ha en enkel funktion som tar hand om allt för dig, som a...

Skapa extern avbryta i arduino

Adruino har flera typer av avbrott. Avbrottsförfrågan är en process genom vilken arduino slutar sitt ordinarie uppdrag eller stoppa dess looping och gå för att avbryta funktion för att slutföra uppdraget givet avbryta funktion. Yttre mellanjobb skapa...

Debouncing avbrott med MPIDE del 1: Brute Force

Det är på tiden är inte det?Välkommen tillbaka! Om du har följt min I'bles fram till denna punkt, har jag visat dig två olika sätt att ställa in avbrott i MPIDE med hjälp av attachInterrupt() och setIntVector(). I först av dessa tutorials, jag förkla...

Debouncing avbrott med MPIDE del 2: RC filter

Hej stötarna! Är du redo för den andra delen av min debouncing serien?"Men Jay!" Jag kan höra dig frågar, "Jag visste att det fanns en första!" Eller kanske du sa "vänta, debouncing? Vad är det?" Jag är inte helt säker. Inter...

Timer avbryter på DP32

Timers! Jag är glada att äntligen att täcka timers på min favorit ombord, DP32!Kom ihåg vägen tillbaka när jag skrev om externa avbrott? Om inte du är bekant med avbrott och hur de fungerar, rekommenderar jag att kontrollera denna tutorial ut först....

Avbryta rutin i assembler med 8-bitars PIC

Hej läsare. Detta är en av de mest grundläggande och viktiga anvisning någonsin gjorts för Microcontrollers låg nivå programmering. Talar om den externa avbryter rutinen i assembler för PIC. Idag jag presentera en plan för utveckling av en experiment...

DIY Apple klockan

OK finns så det inget sådant som Apple klockan.Dock kan du göra din egen retrostil bubbla Visa klocka i en Apple hörsnäckorna fall.Jag ska visa dig hur man gör det bara sit tight.Steg 1: delar Du kommer att behöva vissa delar för detta projekt.1 x PC...

Arduino kontrollerade ljus dimmer

Varning: Vissa människor försöka bygga detta med en optocoupler med zerocrossing coz "som är bättre" rätt? Vissa får även höra i elektronik butiker är det bättre att använda sådan optocoupler. FEL. Detta fungerar endast med en random brand optoc...

Balansera Instructable Robot

I detta Instructable ville jag visa dig hur man gör en självbalanserande robot. Vad gör den unik är att dess yttre likna Instructables roboten. Internt det fungerar på principen om PID, det är ett mycket populärt system för att upprätthålla en variab...

Ännu en annan Daft Punk soffbord (5 x 5 ledde matrisen)

Ja, jag vet att detta har gjorts tidigare, men jag ville bygga min egen, med så få delar som möjligt. Jag byggde detta som en bordsskiva eller wall mount modell, men det kan skalas för att göra ett soffbord. Jag byggde den som en studie för ett mer a...

Matrisskrivare penna skriva skärm

Vi undrade precis som i den nuvarande marknaden där kapacitiva pekskärmar, Resistiv touch skärmar, TFT skärmar översvämmade, DIY entusiaster har sällan använt matrisskrivare skärmar. Här använder vi 5mm 8 * 8 matrisskrivare skärmen och fototransistor...

ChronosMEGA; ett armbandsur

Jag har alltid älskat klockor; inte bara är de estetiska och vackra, men de är funktionella, exakta och användbara. En elegant fusion mellan teknik och konst; två motståndare normalt perspektiv, nu sällskap i harmonisk samklang. Men blivit all teknik...

Hydrokultur växthusgaser övervaknings- och kontrollsystem

I detta instructable, jag kommer att visa dig hur att bygga en hydroponiska växthusgaser övervakning och styrning. Jag kommer att visa dig komponenterna valde, ett kopplingsschema av hur kretsen konstruerades, och Arduino skiss används till att progr...

DIY virtuell verklighet Skateboard erfarenhet med Arduino och Google kartong

Detta är ett riktigt roligt och enkelt projekt som kan göras ungefär en timme. På botten av skateboard är en accelerometer/gyro med en Arduino ombord som överför kantiga rörelse i styrelsen via bluetooth till en liten virtuell verklighet spel jag gjo...

Blå LED gryningssimulatorn för Soleil Sun Alarm

detta tillägg till en Soleil Sun alarm låter klockan styra ljusstyrkan av en bank av lysdioder. En mikrokontroller justerar kraften i lamporna så att de visas till dim i samma takt som alla glödljus kan du ha kopplat till larmet.Steg 1: bakgrund Kör...

AVR Chronograph från koncept till PCB

en kronograf är en anordning som används för att mäta hastigheten på en passerande objekt. I enklaste form, detta innebär att två sensorer av något slag som "se" objektet, en enhet som kan mäta tid, och några utdata till leverera data till använ...

Arduino - matrisskrivare LED TV skriva

1. målUppnå en penna som skriver om matris-skärm.2. krets analysMatrisskrivare skärmen handskrift består av tre huvuddelar: raden scanning krets, kolumn scanning krets visas, ljuspenna identifiering krets, blockdiagram nedan. Ljuspenna används häri i...

GSM baserade automatiserade bevattningssystem med regn-Gun

Moderna digitaliserade eran av vår 21: a århundradet måste automation inom varje sektor. Kombinera teknik för att öka trovärdigheten i en en annan teknik är inte alls en mycket bra idé. Indien är ett land där jordbruket är stora och vidsträckta fälte...

Hur man förvandlar gamla hårddisk till tid gadget

...Hej alla!Så, vad ska vi återvinna idag?Låt oss ta en titt vad vi har i detta stora fält. Jag är ganska säker på att vi hittar något att börja med.Tja, det är hårddisk... en till... två mer... massor mer; inre, yttre, IDE, SCSI, MFM...Wow, är det e...