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

Stap 8: Vluchtige variabelen


Ik vermeld daarvoor omdat ik probeer niet te manipuleren uitgangen rechtstreeks binnen mijn interrupts, we de LEDstate variabele gebruiken te manipuleren van onze LED niet indirect. Dit vraagt om een zeer speciale variabele met de naam van een "vluchtige" variabele.

MPIDE heeft optimizers van de code waarmee uw microcontroller functie sneller en soepeler. Een van de dingen die deze optimizers zal doen is nemen variabelen die niet veranderen en laten in constanten, waardoor het opslaan van ruimte in het geheugen. Helaas, omdat onze LEDstate-variabele wordt niet gebruikt in de hoofdlus, en de functie die doet gebruiken (LEDchange()) is niet genoemd in de hoofdlus, deze optimizers ziet LEDstate als een variabele die niet veranderen, en zet hem in een constante, waardoor problemen ontstaan wanneer onze interrupt probeert om het te veranderen.

Nu, we weten dat LEDstate niet een constante, maar onze code niet. Gelukkig kunnen we vertellen onze optimizers dat LEDstate niet een constante, en wij dat doen door het in een "vluchtige" variabele.

Je zou kunnen denken, dan, dat moet u alle uw variabelen vluchtige, om ervoor te zorgen dat uw optimizers zal niet per ongeluk laten constanten wanneer het niet zou moeten, maar dit zou een slecht idee.

Vanwege hoe vluchtige variabelen zijn opgeslagen in het geheugen, ze zijn een beetje trager reageren dan normale variabelen. Dat betekent dat als u uw variabelen regelmatig belt, ze uw code aanzienlijk vertragen kunnen. Gelukkig, omdat de meeste van onze applicaties interrupt heten zo zelden, dit uiteindelijk niet een probleem, maar het betekent dat u alleen wilt maken van de variabelen die worden gebruikt in interrupts volatile.

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