Externe unterbricht auf MPIDE Teil 1: attachInterrupt() (8 / 11 schritt)

Schritt 8: Flüchtige Variablen


Ich habe davor weil ich nicht versuchen, Ausgänge direkt in meine Interrupts, bearbeiten wir die LEDstate Variable verwenden, um unsere LED indirekt zu manipulieren. Dies erfordert eine ganz besondere Variable namens "volatile"-Variable.

MPIDE hat Code-Optimierer, die Ihre Mikrocontroller-Funktion, schneller und reibungsloser helfen. Eines der Dinge, die diese Optimierer tun werden ist Variablen, die nicht zu ändern und machen sie in konstanten, spart Platz im Speicher. Leider, unsere LEDstate-Variable in der Hauptschleife und die Funktion nicht verwendet wird, ist verwenden, da (LEDchange()) wird nicht in der Hauptschleife genannt, diese Optimierer sehen LEDstate als Variable, die nicht zu ändern, und schalten Sie ihn in eine konstante, die Probleme verursacht, wenn unsere Interrupt versucht, es zu ändern.

Nun, wir wissen, dass LEDstate ist keine konstante, aber unser Code nicht. Zum Glück können wir sagen, unsere Optimierer, dass LEDstate ist keine konstante, und wir tun, indem man es in eine "flüchtige" Variable.

Man könnte dann denken, dass Sie alle sollten Ihre Variablen flüchtig, um sicherzustellen, dass Ihre Optimierer versehentlich machen wird nicht konstanten wenn sollte es nicht, aber das wäre eine schlechte Idee.

Wegen wie flüchtige Variablen gespeichert werden im Speicher, sie sind ein wenig langsamer als normale Variablen reagieren. Das bedeutet, dass wenn Sie Ihre Variablen häufig aufrufen, sie Ihren Code erheblich verlangsamen könnte. Zum Glück, da die meisten unserer Anwendungen Interrupt aufgerufen werden so selten dies nicht am Ende, ein Problem, aber es bedeutet, dass Sie nur in Interrupts flüchtigen verwendeten Variablen machen möchten.

In Verbindung stehende Artikel

Externe unterbricht auf MPIDE Teil 2: setIntVector()

Externe unterbricht auf MPIDE Teil 2: setIntVector()

In meinem vorherigen I'ble unterrichtete ich Ihnen eine sehr einfache Möglichkeit, externe Interrupts auf DP32, uC32 und WF32 * ausgeführt werden. Unterbricht, aber sind wirklich komplizierte Dinge, und zwar ist es schön, haben eine einfache Funktion
Debouncing Interrupts mit MPIDE Teil 1: Brute-Force

Debouncing Interrupts mit MPIDE Teil 1: Brute-Force

Es ist an der Zeit, nicht wahr?Willkommen zurück! Wenn Sie meine I'bles bis zu diesem Zeitpunkt verfolgt habe, habe ich Ihnen zwei verschiedene Möglichkeiten zum Einrichten von Interrupts im MPIDE gezeigt, mit attachInterrupt() und setIntVector(). In
Timer unterbricht auf die DP32

Timer unterbricht auf die DP32

Timer! Ich freue mich, endlich Timer auf meinem Lieblings-Board, DP32abdecken!Denken Sie daran, wie damals, als ich über externe Interrupts schrieb? Wenn Sie nicht mit Interrupts und deren Funktionsweise vertraut sind, empfehle ich das Tutorial zuers
Debouncing Interrupts mit MPIDE Teil 2: RC-Filter

Debouncing Interrupts mit MPIDE Teil 2: RC-Filter

Hey Jungs! Bist du bereit für den zweiten Teil meiner debouncing Serie?"Aber Jay!" Höre ich Sie Fragen: "Ich wusste, es war das erste Mal!" Oder vielleicht Sie sagte "Moment mal, debouncing? Was ist das?" Ich bin nicht ganz s
Wie man eine Batterie elektrische Uhr auf Solarstrom - Teil IIa laufen

Wie man eine Batterie elektrische Uhr auf Solarstrom - Teil IIa laufen

Dieser dritte Beitrag rundet meine Bemühungen zu diesem Thema und ist die einfachste und billigste ausführen. Teile I und II einen super Kondensator verwendet, um Strom für die Stunden der Dunkelheit zu speichern, während hier wir irgendeine Form der
Wie man eine Batterie elektrische Uhr auf Solarstrom - Teil II laufen

Wie man eine Batterie elektrische Uhr auf Solarstrom - Teil II laufen

Wir erreicht viel mit einem einzigen 2 Volt Solarzelle aufladen einen super Kondensator teilweise habe ich aber zu gehen weiter, wir müssen hinzufügen mehr Solarzellen, die wiederum in die Notwendigkeit einer zusätzlichen Kontrolle in die Ladeschaltu
Wie eine Batterie laufen elektrische Uhr auf Solarstrom - Teil I

Wie eine Batterie laufen elektrische Uhr auf Solarstrom - Teil I

Der erste Teil zeigt, wie eine herkömmliche Batterie elektrische Uhr betrieben werden kann, mit einer einzigen 2 Volt-Solarzelle und einem super Kondensator. In einigen Teilen der Welt ganzjährigen Betrieb ist möglich aber saisonale Mangel an Sonnenl
Richten Sie externe Treiber auf Smoothieware Sbase 1.2 Steuerung mit Hilfe der E1-Pins!

Richten Sie externe Treiber auf Smoothieware Sbase 1.2 Steuerung mit Hilfe der E1-Pins!

Inhalt dieses Instructable:ProloqueTreiberprobleme KühlkörperNicht mehr existierenden Y TreiberSetup Smoothieware E1 als unsere Y-Achse verwendenY-Treiber - originalY-Treiber - Verwendung E01Komplette Treiber Steckerbelegung DiagrammExterner Motor Sc
Grundrechenarten: Lektion 3 - Operationen auf Zahlen--Teil 2

Grundrechenarten: Lektion 3 - Operationen auf Zahlen--Teil 2

Teil 2 von 3. In dieser Lektion besteht darin, Sie mit einem selbst-Tutorial auf die typische Operationen, die auf Zahlen. Dazu gehören: Absolutwert, Gegensätze, Addition, Subtraktion, Multiplikation, Division und einfachen Exponenten. Reihenfolge de
Grundrechenarten: Lektion 3 - Operationen auf Zahlen--Teil 1

Grundrechenarten: Lektion 3 - Operationen auf Zahlen--Teil 1

Teil 1 von 3. In dieser Lektion besteht darin, Sie mit einem selbst-Tutorial auf die typische Operationen, die auf Zahlen. Dazu gehören: Absolutwert, Gegensätze, Addition, Subtraktion, Multiplikation, Division und einfachen Exponenten. Reihenfolge de
Grundrechenarten: Lektion 3 - Operationen auf Zahlen--Teil 3

Grundrechenarten: Lektion 3 - Operationen auf Zahlen--Teil 3

Teil 3 von 3. In dieser Lektion besteht darin, Sie mit einem selbst-Tutorial auf die typische Operationen, die auf Zahlen. Dazu gehören: Absolutwert, Gegensätze, Addition, Subtraktion, Multiplikation, Division und einfachen Exponenten. Reihenfolge de
Lust auf drei Teil-Geflecht.

Lust auf drei Teil-Geflecht.

Hier ist ein Lieblings-Haar-Stil von mir. Es ist ganz einfach zu tun. Eine mit langen Haaren kann dies tun, es sieht gut aus mit jedem Outfit!!Schritt 1: Einen niedrigen Pferdeschwanz zu machen.Schritt 2: Fügen Sie Finger durch den unteren Teil von e
BaW-Bot Teil 1: Build ein Arduino auf einem Brett

BaW-Bot Teil 1: Build ein Arduino auf einem Brett

Dies ist der erste Teil unserer BaW-Bot (Glocken und Pfeifen Bot) Build-5 separate Instructables, die in verschiedenen Arduino-bezogenen Technologien kombiniert, um einen Bot erstellen mit allem Drum-und-dran aussehen.Teil 1: Build ein Arduino auf ei
Leichte Ring auf Unterwasser-Roboter - Teil 2 (CNC-Fräse)

Leichte Ring auf Unterwasser-Roboter - Teil 2 (CNC-Fräse)

Hallo. In diesem instructable, machen wir einen hellen Ring. Es ist ein Teil, der auf der Vorderseite ein Unterwasser-Roboter (Bild 2).Lesen Sie mehr auf den Kontext, in Teil 1 die instructable, aber hier ist die kurze Version: unsere Forschung Robot