Mikrocontroller-Anfangsstück 12: Intro auf Interrupts


Arbeiten Sie in diesem Teil des Tutorials werden wir über Interrupts sprechen z. B. mit der Theke. Interrupts verbessern die Verwendung von Mikrocontrollern in einem riesigen Weg. Interrupts machen Ihre Programme reagieren auf die Hardware der Mikrocontroller, die möglicherweise eine Reaktion aus dem Kreislauf außerhalb der Mikrocontroller.

In Grundbegriffe ist ein Interrupt genau das, was es heißt als. Es unterbricht eine laufende Programm Normalfluss um eine andere Aufgabe (andere Code-Block, die Sie programmieren) zu tun. Sagen Sie zum Beispiel Ihr Programm tut normale blinkenden LEDs und Sie wollen es auf einen PIR-Sensor (verbunden mit einem Interrupt-Pin) reagieren, und geht auf einen speziellen Code-Block ein akustisches Signal ertönen einem akustischen Signals mit einer anderen Pin verbunden machen. Wenn man den Mikrocontroller dazu sagt, stoppt das Programm tot und gehen Sie zu dem Code, der die den Interrupt (machen einen Signalton) gehört. Nach dem Interrupt Code ausgeführt wird, nimmt die gestoppten Programms genau, wo es aufgehört. In einigen Beispielen wäre unterbricht eine Alternative zum Abrufen, die Programm-Zyklen erfordern würde. Sagen Sie, dass Ihr Programm fehlt nur einen Signalton ausgibt, wenn jemand den PIR-Sensor geht. Ihr Programm könnte, dass der Stift zu sehen, ob es einen hohen Wert über und über in der nie endenden Schleife (während (1)) hat Tests zu halten. Alternativ entfernen Sie alle Polling-Programm-Code um die Pin für ein hoher Wert zu testen und den Interrupt, automatisch um die Beep-Code zu gelangen, wenn der Mikrocontroller den hohen Werten spürt.

Welche Arten von Interrupts gibt es für den AVR-Mikrocontroller? Interrupts können für Veranstaltungen wie z. B. eine Zählernummer, eine Pin ändern Zustand (von niedrig bis hoch oder umgekehrt) serielle Kommunikation empfangen von Informationen oder der Analog zu Digital, nachdem festgestellt wurde, dass eine Konvertierung festgelegt werden. Hier ist eine Liste von Interrupt-Vektoren, die Sie verwenden können. Weitere Tutorials zu machen verwenden von vielen dieser Vektoren.

Werden wir den Timer/Counter als Beispiel verwenden. Sagen wir den Timer/Counter eine Zahl, die die TCNT1 (Zähler) müssen übereinstimmen. Die Anzahl entsprechend gehen in ein Register OCR1A genannt (Ausgabe vergleichen Register). Die "1" steht für die spezifischen Zähler verwenden wir die 16-Bit-Version ist. Wir haben zwei OCR, das A und das B. Wir verwenden in diesem Beispiel A. Aber wissen wir, ob der Zähler auf Null zurückgesetzt wird, wenn die Übereinstimmung hergestellt ist? Wir wollen auf jeden Fall TCNT1 zurück auf Null gehen also der Graf startet über und wir bekommen ein weiteres Match bei unserer vorgesehenen Anzahl, aber dies ist nicht in Code, wie wir es letztes Mal gemacht (denken Sie daran die TCNT1 = 0;). Dieses Mal wollen wir einen anderen Schalter im TCCR1B Steuerelement Register genannt WGM12 einschalten (Waveform Generation Modus für Timer 1). Die #2 in diesen Switch stellt nur welche es ist, da gibt es ein paar, WGM. Wir werden auch die CS10 und CS11 wieder verwenden, um prescaling auf 64 wie das Intro video Timer eingestellt.

Dann wird der Timer/Counter müssen wissen, dass wir beabsichtigen, die Interrupt-Funktion verwenden. Dies geschieht durch die TIMSK (Timer/Counter Interrupt Maske Register). Wir müssen nur ein Schalter in diesem Register aktivieren: die OCIE1A (Ausgabe vergleichen A Match Interrupt aktivieren) Schalter. Einmal die Nummer setzen in der OCR1A durch den Leistungsindikator abgestimmt ist, wird das Programm unterbrochen werden, um die LED zu wechseln. Für ein Interrupt zu passieren müssen wir aktivieren, die globale Interrupts "sei()", dann müssen wir den Interrupt für die Timer/Counter zu aktivieren und schließlich die Interrupt-Service-Routine (ISR) erstellt werden müssen. Die Interrupt-Service-Routine ist ebenso wie die Funktionen, die in der Schaltfläche Spiel Beispiel vorgenommen wurden. Die Interrupt-Service-Routine ist nur einen Codeblock außerhalb der Haupt-Routine und beginnt mit dem ISR mit der Vektor in Klammern "(Vektor)", durch den Codeblock in Klammern "{Code}" erlaubt. Für die Timer/Counter (16-Bit-Version), und die Tatsache, dass wir mit die A-Version von der OCR1, Vektor heißt: TIMER1_COMPA_vect. So die Routine wäre: ISR(TIMER1_COMPA_vect) {Code zum Ausführen}. Wir verwendeten eine Reihe im Intro zu Timer-Video, das eine Sekunde vertreten: 15625, daher wir für die OCR1A verwenden. Aber die Zahl sollten Indizierung von 0, also wir die Anzahl 15624 stattdessen verwenden müssen.

In Verbindung stehende Artikel

Mikrocontroller-Anfangsstück 13: Intro zu LCD Interfacing

Mikrocontroller-Anfangsstück 13: Intro zu LCD Interfacing

Der Mikrocontroller ist ein wunderbares Stück Technik und es kann viele Dinge (mit Hilfe von einigen großen Programmieraufwand) tun, aber es ist immer noch eine undurchsichtige Black Box. Wenn Sie möchten, dass sie Informationen austauschen, oder zei
Mikrocontroller-Anfangsstück 8: Hinzufügen einer Schaltfläche an den Mikrocontroller und damit etwas zu tun

Mikrocontroller-Anfangsstück 8: Hinzufügen einer Schaltfläche an den Mikrocontroller und damit etwas zu tun

Eine sehr einfach und leicht für menschliche Interaktion mit dem Mikrocontroller bieten lässt sich auf Tastendruck in den Stromkreis einfügen. Wir kommunizieren mit Computern über zwei wichtigsten Eingabegeräte: Maus und Tastatur. Eine Tastatur ist n
Laser-Cut-Halter (Intro auf Acryl Biegung)

Laser-Cut-Halter (Intro auf Acryl Biegung)

haben Sie jemals genervt von der Tatsache, dass um Ihr (in der Regel recht ausgefallen) Handy aufladen, musst du es in der Nähe einer Tabelle berechnen oder, * Keuchen *, lassen Sie das $100 + Gerät auf Gedeih und Verderb den Boden?Nun, so hatte Bob,
Arduino powered Rotary Encoder - ich habe es bei laufenTechshop

Arduino powered Rotary Encoder - ich habe es bei laufenTechshop

wie in einigen meiner letzten Instructables Arduino ist um Kontrolle. Die Fähigkeit, bestimmte Dinge wie Displays, Servos, Motoren und andere mechanische Geräte in einer sinnvollen Weise zu steuern. Ich habe mit Potentiometer zur Positionsbestimmung
ECG auf Ihrem Laptop!

ECG auf Ihrem Laptop!

That's right! Diese Instructable zeigt, wie Sie ein Gerät zu bauen, das Ihnen ermöglicht, ein Elektrokardiogramm auf sich selbst, Ihrer Familie oder Ihren Freunden zu tun! Alles was Sie brauchen ist mittelaktive wissen über Elektronik, Zugang zu Ye'
Wie ein PIC Mikrocontroller & lesen einen Encoder-Programm

Wie ein PIC Mikrocontroller & lesen einen Encoder-Programm

Einführung: von elektronischem Spielzeug & Spiele, Mikrowellenherde, Mikrocontroller finden Sie fast überall in diesen Tagen! Aber wie können wir diese kleinen Computer für unsere eigenen Elektronikprojekte arbeiten? Hier kommt dieses Tutorial - mit
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
Ab Mikrocontroller Teil 1

Ab Mikrocontroller Teil 1

Dies ist die erste in einer langen Reihe von Tutorials zielte darauf ab, ein Anfänger-Leitfaden und Tutorial rund um den Atmel AVR Atmega32 Mikrocontroller. Ich zeige Ihnen anhand von Beispielen und Projekten, wie Programmieren und bieten Funktionen
Einfach PIC Mikro Statusübergang Interrupt Code

Einfach PIC Mikro Statusübergang Interrupt Code

A PICBasic-Programm, das das Bild unterbricht tritt ein hoher/niedriger Übergang auf Pin PortB.0Der Code steht zum Download bereit wie eine .rar oder kopieren Sie einfach und fügen Sie ihn von hier aus.Ich habe den starten-Code von der Microengineeri
LinkIt One: GATT Server Intro

LinkIt One: GATT Server Intro

Ein LinkIt bietet Unterstützung für Bluetooth Low Energy aka BLE. Niedrigenergie-im Bluetooth-Modus ist sehr energieeffizient, so dass es bevorzugt Modus für verschiedene IoT-Geräte.In diesem instructable, ich ein Intro auf Verwendung von BLE GATT Se
USB auf einer Briefmarke

USB auf einer Briefmarke

unter den folgenden Links erhalten Sie Hinweise auf dem USB-zu-arbeiten mit der Parallax-Stempel erhalten und können für Ihre Lieblings Mikrocontroller oder Programmiersprache leicht modifiziert werden.USB zu RS232 Konverter legacy-Geräten, aber ist
Spielen Linkin Park "In the End" Intro am Klavier.

Spielen Linkin Park "In the End" Intro am Klavier.

Diese instructable wird dich lehren, Linkin Park "In the End" Intro auf Klavier zu spielen.Schritt 1: Welche Reihenfolge die Töne hinein. Die Noten gehen in der folgenden Reihenfolge.1-2-2-3-4-4-4-4-4... ...nur wiederholen Sie das und haben Sie
Wie man ordentlich Lötzinn (ohne jede Menge Drähte!) Entkopplung Obergrenzen für SMT-Mikrocontroller.

Wie man ordentlich Lötzinn (ohne jede Menge Drähte!) Entkopplung Obergrenzen für SMT-Mikrocontroller.

Diese instructable wird geschrieben, um Ihnen beibringen, wie man eine sauber und ordentlich Prototyping mit SMT-Mikrocontroller (oder andere Geräte) auf eine Adapterplatine verwenden.Nach kämpfen, um eine ordentlich Arbeit effektiv Entkopplung der P
Einfache drahtlose Outlet Remote, Ardunio auf seriell (für home-Automation)

Einfache drahtlose Outlet Remote, Ardunio auf seriell (für home-Automation)

fand ich eine alte Kambrook Wireless-Anschluss-Set, das bestand aus 3 Wireless-Anschluss und eine Funkfernbedienung 433mhz, und wollte mein Zimmer "automatisieren".Während ich versucht habe könnte Reverse Engineering das Funkprotokoll, entschied