Andrueckrolle Bandanlage


Google-Suche auf MEINE-SCHALTUNG.de :





Dauerkalender


Arduino - Interrupt

Mit Interrupt bekommen wir eine weitere Alternative, ein Unterprogramm aufzurufen und auszuführen. Bis jetzt war das nur durch Aufruf eines Unterprogramms aus dem Hauptprogramm möglich. Mit Interrupt kann ein Unterprogramm unmittelbar nach dem Auftreten eines Ereignisses ausgeführt werden. Das Auftreten eines Ereignisses wird an den digitalen Eingängen erfragt. Sobald ein solches Ereignis auftritt, wird der normale Ablauf des Hauptprogramms vorübergehend gestoppt und das hinter dem Interrupt stehende Unterprogramm aufgerufen und ausgeführt. Nach Beendigung des Interrupts-Programms wird das Hauptprogramm wieder genau dort fortgesetzt, wo es unterbrochen wurde. Die Interrupt-Funktionen sind wichtig und weit verbreitet. Ihre wichtigste Aufgabe ist sicherzustellen, dass der Prozessor schnell auf wichtige Ereignisse reagiert. In der Steuerungstechnik werden Interrupts z.B. bei dem Betätigen der Not-Halt-Schalter, der Überwachung der Schutzeinrichtungen, der Bewegungsüberwachung mit Sofort-Stop-Funktionen oder der unerwarteten Umschaltung von Auto- auf Handbetrieb (Handvektor) angewendet. Bei Interrupts handelt es sich meistens um kurze Programme, die nur bei dringenden, schnell zu erledigenden und zeitkritischen Aufgaben angewendet werden.

Arduino Uno stellt zwei digitale Pins, nämlich Pins 2 und 3, für Interrupts zur Verfügung. Bei Arduino Mega2560 sind es sechs Pins: 2, 3, 18, 19, 20, 21. Die Interrupts werden nummeriert. Interrupt an Pin 2 hat z.B. die Nummer 0, Interrupt an Pin 3 die Nummer 1. Wird ein Pin für Interrupt aktiviert, wird er überwacht und bei Änderung sofort das Interrupt-Programm gestartet.

Die Aktivierung erfolgt mit der Anweisung attachInterrupt(Interrupt, Funktion, Modus). Mit Interrupt wird die gewünschte Interrupt-Nummer festgelegt, mit Funktion der Name des entsprechenden Unterprogramms oder der entsprechenden Funktion. Modus bezieht sich auf die Änderung am Pin. Es stehen folgende Modis zur Verfügung:

LOW: Am Interrupt-Pin liegt keine Spannung an.
CHANGE: Die Stromversorgung ändert sich, Spannung Ein oder Aus.
RISING: Die Spannung steigt an (steigende Flanke).
FALLING: Die Spannung fällt (fallende Flanke).


  // ----------------------------------------------------------
  // Beispiel
  // Arduino: Mein_Interrupt
  // Am Pin 36 ist eine LED angeschlossen.
  // Pin 2 wurde für Interrupt aktiviert, hier ist ein Taster angeschlossen.


  int ledPin = 36;
  byte InterruptPin = 2;

  void setup() {
    Serial.begin(9600);
    pinMode(ledPin, OUTPUT);
    pinMode(InterruptPin, INPUT_PULLUP);
    attachInterrupt(digitalPinToInterrupt(InterruptPin), Mein_Interrupt, FALLING);
  }

  void loop() {
    digitalWrite(ledPin, HIGH);
    delay(1000);
    digitalWrite(ledPin, LOW);
    delay(500);
  }

  void Mein_Interrupt() {
    Serial.println("Die Taste am Pin 2 wurde betätigt");
  }

  // ----------------------------------------------------------


Arduino_Programmierung




Google-Suche auf MEINE-SCHALTUNG.de :


Zweistock Steckklemmen

Home Impressum Datenschutz