External interrompt sur partie MPIDE 1: attachInterrupt() (8 / 11 étapes)

Étape 8: Variables volatiles

Je l’ai mentionné avant cela parce que j’essaie de ne pas manipuler les produits directement à l’intérieur de mon interruptions, nous utilisons la variable LEDstate pour manipuler nos LED indirectement. Cela passe par une variable très spéciale appelée variable « volatile ».

MPIDE a des optimiseurs de code qui aident votre microcontrôleur fonction plus rapidement et plus facilement. Une des choses que ces optimiseurs vont faire est prendre des variables qui ne modifient l’et transformez-les en constantes, donc gain de place en mémoire. Malheureusement, parce que notre variable LEDstate n’est pas utilisé dans la boucle principale et la fonction qui fait l’utilise (LEDchange()) n’est pas appelée dans la boucle principale, ces optimiseurs verra LEDstate comme une variable qui n’est pas changer et qu’il devienne une constante, qui provoque des problèmes quand notre interruption essaie de le changer.

Maintenant, nous savons que LEDstate n’est pas une constante, mais notre code ne fonctionne pas. Heureusement, nous pouvons dire à nos optimiseurs que LEDstate n’est pas une constante, et nous le faisons en le rendant dans une variable « volatile ».

Vous pensez peut-être, alors, que vous fassiez toutes vos variables volatiles, afin d’assurer que votre optimiseurs ne sera pas accidentellement rendre constantes lorsqu’il ne devrait pas, mais ce serait une mauvaise idée.

En raison de variables comment volatils sont stockés dans la mémoire, ils sont un peu plus lents à répondre que les variables normales. Cela signifie que si vous appelez fréquemment vos variables, elles pourraient ralentir votre code significativement. Heureusement, parce que la plupart de nos demandes d’interruption est appelés si rarement, cela ne se termine pas un problème, mais cela signifie que vous voulez seulement faire les variables utilisées dans volatile d’interruptions.

Articles Liés

External interrompt part MPIDE 2: setIntVector()

External interrompt part MPIDE 2: setIntVector()

Dans mon précédent I'ble je vous enseigne un moyen très simple d'obtenir des interruptions externes en cours d'exécution sur les DP32 uC32 et WF32 *. Interrompt, cependant, sont des choses vraiment compliquées et s'il est agréable d'avoir une fonctio
Minuteur interrompt sur la DP32

Minuteur interrompt sur la DP32

Minuteries ! Je suis très heureux d'enfin être couvrant des minuteries sur ma planche favorite, le DP32!N'oubliez pas de façon à l'époque où j'ai écrit sur les interruptions externes ? Si vous n'êtes pas familier avec les interruptions et comment ils
Appuyez sur monter en bois World Tree Lanterne en noyer

Appuyez sur monter en bois World Tree Lanterne en noyer

pour ma fête je voulais faire un projet sur la coupe au laser de la terre.  J'ai décidé de créer une lanterne en bois de noyer qui accepterait un cordon de pendentif snap clip disponible dans la plupart des quincailleries.  J'ai aussi expérimenté ave
Comment rechercher des fichiers sur Android comme un pro

Comment rechercher des fichiers sur Android comme un pro

Presque n'importe quelle application Android qui traite de nombreux fichiers dispose d'une option de recherche. Vous savez comment c'est - appuyez sur l'icône de loupe, tapez le mot de recherche et il va vous présenter les résultats. Pour la plupart
Hanter votre hotte sur un budget !

Hanter votre hotte sur un budget !

Salut! Je t'aime Halloween et habituellement je suis impliqué dans une attraction hantée quelque part. Cette année, j'ai décidé de simplement faire la maison affaire et avoir du plaisir de Halloween w la famille et les voisins. Malheureusement, en ra
Ratchet « Hyperflux Armor » Costume partie 2.1 : Clank

Ratchet « Hyperflux Armor » Costume partie 2.1 : Clank

Clank, plus que juste un « parlant lunch box », est le côté-coup de pied dans la série R et C.  Il est des queues, à Sonic... Samwise, à Frodon... HOOCH, à Turner (pour l'ensemble plus âgé).  Cependant, sans doute, Clank est aussi important pour la s
Cercle de bricolage carte lampe à partir de zéro

Cercle de bricolage carte lampe à partir de zéro

[Aperçu]Bonjour à tous ! Cette instructable vous guidera à travers quelques étapes pour créer ce (ou similaire) lampe de table. Modèle de la lampe est une image au microscope électronique d'une feuille. Les zones sombres de l'image se traduisent par
Bougie LED avec des parties lasercut

Bougie LED avec des parties lasercut

est cette instructable pour ma Bougie LED lasercut conception que l'on peut télécharger sur Thingiverse.  C'est un circuit électrique simple mais utile que vous apportez hors bande de bois et de cuivre (ou feuille de carton et aluminium - je vais vou
Burritos de boeuf mexicains - sur le grill

Burritos de boeuf mexicains - sur le grill

Recette vidéoDécouvrez l'ensemble du processus dans la vidéo intégrée !En ce qui concerne les épices frotter s'il vous plaît voir ci-dessous :1 x cuillère à soupe de Cumin 1 x cuillère à soupe de coriandre 1 x cuillère à café de cannelle 1 x cuillère
Équilibrage automatique de pendule à l’envers

Équilibrage automatique de pendule à l’envers

Il s'agit de ma tentative de la pendule inversé en équilibre sur une charrette à deux roues châssis. J'avait vu les autres ici et a été inspiré pour essayer ma propre version. L'Arduino est merveilleusement simple à programmer et vous pouvez le ramas
Système de contrôle de température à l’aide de Labview (Atmega32)

Système de contrôle de température à l’aide de Labview (Atmega32)

RÉSUMÉCet ouvrage décrit un cadre de ON/OFF, systèmes de contrôle de température proportionnelle et linéaire. La conception et la mise en œuvre de ce processus se fait à l'aide de LABVIEW, logiciel virtual workbench. Le projet comprend l'acquisition
Construire votre propre contrôleur (bon marché!) multifonctions sans fil caméra.

Construire votre propre contrôleur (bon marché!) multifonctions sans fil caméra.

IntroductionJamais imaginé de construire votre propre contrôleur de caméra ?Remarque importante : Les condensateurs pour le MAX619 sont 470n ou 0.47u.  Le schéma est correct, mais la liste des composants a été mal - mise à jour.Il s'agit d'une entrée
Tutoriel d’assembleur AVR 3

Tutoriel d’assembleur AVR 3

Bienvenue au didacticiel numéro 3 !Avant que nous commencions, je tiens à faire un point philosophique. N'ayez pas peur d'expérimenter avec les circuits et le code que nous construisons dans ces tutoriels. Changer les câbles près, ajouter de nouveaux
En utilisant LabVIEW LINX et chipKIT WF32 pour contrôler une bande de LED

En utilisant LabVIEW LINX et chipKIT WF32 pour contrôler une bande de LED

Ce Instructable risque de dépasser les étapes impliquées dans le contrôle de la bande de LED WS2812 à l'aide de LabVIEW, LabVIEW MakerHub LINX et chipKIT WF32.Remarque : ce projet est possible grâce au LabVIEW physique informatique Kit qui contient d