Schritt 5: Was sind die Interrupts
Die Funktionen, die ausgeführt werden nennt man Interrupt Serviceroutinen (ISR) und sind mehr oder weniger einfachen Funktionen, aber die nehmen keine Argumente.
Lassen Sie uns sehen Sie beispielsweise so etwas wie einige Impulse zählen. Der ATMega328P hat einen Analog-Komparator, die einen Interrupt verbunden, der aktiviert wird hat, wenn ein Signal einer Referenzspannung übertrifft. Zunächst einmal müssen Sie die Funktion definieren, die ausgeführt werden:
ISR(ANALOG_COMP_vect)
{
Zähler ++;
}
Das ist wirklich einfach, die Anweisung ISR() ist ein Makro, das dem Compiler teilt mit, dass die folgende Funktion ein Interrupt Service Routine ist. Während ANALOG_COMP_vect Interrupt-Vektor heißt und es den Compiler weist, welcher Interrupt, dass Routine zugeordnet ist. In diesem Fall ist es Analog Komparator unterbrechen. Also jedes Mal, dass der Komparator ein Signal sieht größer als Referenz es erzählt den Mikrocontroller auszuführenden Code, Id est in diesem Fall die Variable inkrementieren.
Im nächste Schritt soll den Interrupt verbunden zu ermöglichen. Um es zu aktivieren müssen wir das ACIE (Analog Komparator Interrupt Enable) Bit des Registers Stahlkabel (Analog Komparator Einstellung Register) festgelegt:
SBI(ACSR,Acie);
In der folgenden Website sehen wir die Liste der alle unterbrechen Vektoren:
http://www.nongnu.org/avr-libc/User-Manual/group__avr__interrupts.HTML