Externe onderbreekt op MPIDE deel 1: attachInterrupt() (7 / 11 stap)

Stap 7: Interruipt Service Routine


Zoals ik al zei in de vorige stap, stellen we onze Interrupt Service Routine of ISR op onze LEDchange()-functie. Deze functie kan alles wat die je wilt, maar onderbreekt zijn zeer kieskeurig dingen, dus er zijn een aantal richtlijnen die u zult willen volgen.

Eerst en vooral, moet ISRs sneluitvoeren. Laten we teruggaan naar ons voorbeeld van de klas. Wanneer de professor voor u voor uw vraag aangeroepen, wat als u gestart na een lang gesprek met de professor? Het zou volledig verstoren de klasse en de professor niet zou kunnen te halen weerom voor haar lezing te voltooien voordat klasse eindigde. In plaats daarvan, u proberen om uw vraag kort en uw docent probeert u een bondig antwoord te geven. Hetzelfde geldt voor de interrupts. Ze onderbreken de stroom van het normale programma, zodat u zult willen aan dat zo spoedig mogelijk terugkeren.

GEBRUIK GEEN OOIT DELAY() IN EEN ISR. In het algemeen, de functie delay() wordt beschouwd als slordig programmering. Kortom, het bevriest uw microcontroller voor een vast bedrag van tijd. Gedurende die tijd, geen andere code kunt uitvoeren (met uitzondering van andere interrupts), en dat is functioneel verspilde tijd. Als u delay() in een ISR gebruikt, duurt dat ISR forever, die onze eerste regel overtreden. Het verdiensten het is eigen waarschuwing, echter, want het is een van de fundamentele hulpmiddelen die nieuwe programmeurs zijn ingevoerd om tijdens hun allereerste blink-programma, en kunnen gemakkelijk struikelen u wanneer krijgen in meer geavanceerde onderwerpen zoals interrupts.

Deze laatste regel is meer een persoonlijke voorkeur dan iets anders. Ik heb gehoord dat soms andere mensen hebben kwesties wanneer het proberen om te manipuleren uitgangen in hun ISR, zoals het draaien van de LEDs aan en uit. Over het algemeen denk ik aan deze als trage processen, dus indien mogelijk dat ik probeer te voorkomen dat het manipuleren van de uitgangen binnen mijn ISRs. Dat is waarom we de variabele LEDstate gebruiken om de status van onze LED, in plaats van het direct instellen. Interrupts zijn echter vaak gebruikt bij de communicatie met andere borden en dergelijke, dus het is niet altijd praktisch of zelfs mogelijk om te houden van het manipuleren van de uitgangen, dus dit is niet een harde en snelle regel. Gebruik uw beste oordeel!

Gerelateerde Artikelen

Externe onderbreekt op MPIDE deel 2: setIntVector()

Externe onderbreekt op MPIDE deel 2: setIntVector()

In mijn vorige I'ble ik u geleerd heb een zeer eenvoudige manier om externe onderbreekt die wordt uitgevoerd op de DP32, uC32, en WF32 *. Onderbreekt, zijn echter echt ingewikkelde dingen, en terwijl het is leuk om een eenvoudige functie die verzorgt
Debouncing Interrupts met MPIDE deel 1: Brute Force

Debouncing Interrupts met MPIDE deel 1: Brute Force

It's about time nietwaar?Setup voortzetten! Als u al na mijn I'bles tot op dit punt, ik heb je zien je twee verschillende manieren instellen van interrupts in MPIDE met behulp van attachInterrupt() en setIntVector(). In de eerste van deze tutorials,
Debouncing Interrupts met MPIDE deel 2: RC Filters

Debouncing Interrupts met MPIDE deel 2: RC Filters

De kerels van Hey! Ben je klaar voor het tweede deel van mijn debouncing serie?"Maar Jay!" Ik hoor u vraagt, "Ik wist niet dat er een eerste!" Of misschien je zei "Wait, debouncing? Wat is dat?" Ik ben niet helemaal zeker. In
DIY Apple klok

DIY Apple klok

OK bestaat dus er geen als de klok van Apple.Echter kun je je eigen zeepbel van de retro-stijl klok van de vertoning in een geval van Apple oordopjes.Ik ga u tonen hoe te doen dat gewoon zitten krap.Stap 1: onderdelen You gonna sommige onderdelen nod
Balancing Instructable Robot

Balancing Instructable Robot

Ik wilde in dit Instructable tonen u hoe u een self balancing robot. Wat het uniek maakt is dat de buitenkant is gemaakt te lijken op de Instructables Robot. Intern het werkt in het beginsel van PID, het is een zeer populaire controlesysteem voor het
Arduino en CueCat barcodescanner

Arduino en CueCat barcodescanner

ik heb een cuecat barcodescanner zitten rond voor meer dan 10 jaar. In principe wordt het aangesloten op een poort van de PS2 (blijkbaar er is een USB versie) zoals een toetsenbord en spits uit een barcode wanneer gescand. Leuk!. Het vervelende is da
Vlag Display Base: 7-vlag instelbare hoek boeket

Vlag Display Base: 7-vlag instelbare hoek boeket

In September 2010, ik als vrijwilliger om te bouwen van een float voor een Halloween parade. Het thema van de float was Amerikaanse geschiedenis, met historische vlaggen en een replica van de Liberty Bell. Het concept van de float featured twee zeven
Naam van puzzel - Laser gesneden

Naam van puzzel - Laser gesneden

dit is een grote persoonlijke cadeau voor een kleintje in je leven. Het is kleurrijk, educatieve en heel persoonlijk. Gemakkelijk naar lay-out, bouwen en schilderen. Lasersnijden zorgt telkens voor een perfecte pasvorm.Stap 1: inspiratieMijn vriend d
Raspberry Pi Alamode CNC Controller

Raspberry Pi Alamode CNC Controller

Dit is mijn eerste poging om een instructable. Ik hoop dat het helpt iemand anders.Schakelaars en lampjes en ventilatoren, oh mijn...Gelieve te lezen via de commentaar voor meer details.Ik kocht een CNC machine enige tijd geleden en ik was nooit tevr
Hoe maak je een Steampunk korset

Hoe maak je een Steampunk korset

Geschatte kosten: ~ $30-$50 (meer als u niet reeds de nodige instrumenten bezit)Geschatte voltooiingstijd: 10-15 uurMoeilijkheid: Matig maar toegankelijk voor nieuwkomers_______________________________________________________________________Ik heb he
Korset voor de zakelijke Professional

Korset voor de zakelijke Professional

geschatte kosten: ~ $30-$50 (meer als u niet reeds de nodige instrumenten bezit)Geschatte voltooiingstijd: 15-20 uurMoeilijkheid: Matig - uitdagend (afhankelijk van niveau)_______________________________________________________________________Ik ontw
Maken van een RC auto 4WD

Maken van een RC auto 4WD

dit is mijn eerste instructables ik schrijf over hetControleer uw RC auto. De meesten van ons wil maken van onze eigen op maat gemaakte RC auto's, zodat we konden zitten kundig voor toevoegen van verschillende motoren met hoge RPM of lage RPM met hoo
Nog een eenvoudige nightvision

Nog een eenvoudige nightvision

heb je ooit afgevraagd van het maken van uw eigen nightvision apparaat? Check dit!Stap 1: Wat is licht? "Light" of "zichtbaar licht" is een onderdeel van een spectrum van elektromagnetische straling, met golflengte merkbaar door het me
Ultimate Frisbee Launcher

Ultimate Frisbee Launcher

Dit is een volledige diepte tutorial over het maken van een volledig open source programmeerbare Frisbee thrower. Als u een meer "beautiful" versie van de tutorial check out tecnoa.ninja wilt. De functies van de machine zijn zoals hieronder verm