Software-Reset und Hardware-Reset am Arduino

Um den Arduino neu zu starten, ohne den Reset-Knopf zu drücken, gibt es drei Möglichkeiten – wir werden uns alle in diesem Bericht ansehen. Ein Neustart des Arduino ist notwendig, wenn sich der Mikrocontroller aufhängt oder zum Beispiel bei der Verwendung des nRF24L01 Funkmoduls. Der Neustart von Funk-Transceivern ist schwierig, aber der Neustart des Arduino-Boards, wenn es sich aufhängt, ist kein Problem.




Bestandteile:

  • Arduino Uno / Arduino Nano / Arduino Mega
  • Widerstände
  • Breadboard
  • Dupont-Kabel

Ein Arduino-Hardware-Reset setzt alle Board-Parameter auf ihre Standardwerte zurück, d.h. alle Variablen werden auf ihre ursprünglichen Werte zurückgesetzt und alle aktiven Ports werden deaktiviert und neu eingestellt. Ein Hard-Reset ist der eigentliche Reset, der durch das Drücken der RESET-Taste ausgelöst wird. Dieser Reset kann aber auch vom Code aus ausgelöst werden, indem ein Low-Pegel-Signal an den Arduino-Reset-Pin angelegt wird.

Wie man Reboot Arduino per Hardware

Wie man Reboot Arduino per Hardware

Im folgenden Beispiel ist es wichtig, zu Beginn des Sketches einen High-Pegel an Pin 12 zu setzen, da sonst der Mikrocontroller zurückgesetzt wird (hard reset arduino nano). In diesem Beispiel wird alle 10 Sekunden ein Hardware-Reset des Mikrocontrollers durchgeführt. Bauen Sie die Schaltung auf dem Breadboard wie im Bild oben gezeigt auf und laden Sie das folgende Programm in das Arduino Uno Board.

Programm Arduino für Hardware Reset




unsigned long timer;

void setup() {
  digitalWrite(12, HIGH); 
  pinMode(12, OUTPUT);
  Serial.begin(9600);
  delay(100);
  Serial.println("start");
  timer = millis();
}

void loop() {
  if (millis() - timer > 10000) {
    Serial.println("reboot");
    delay(100);
    digitalWrite(12, LOW);
  }
}
  1. Es ist wichtig, zu Beginn des Programms einen hohen Signalpegel auf Pin 12 einzustellen, da es sonst zu einem Reset kommt;
  2. In diesem Beispiel wird der Arduino alle 10 Sekunden hardwaremäßig zurückgesetzt.

Wie man Reboot Arduino per Software

Ein Soft-Reset des Arduinos ist kein echter Reset des Programms, sondern einfach ein Sprung zum Anfang des Codes (an Adresse Null). Mit anderen Worten: Der Code beginnt von vorne, ohne die Arduino-Parameter zum Zeitpunkt des Resets zu verändern. Wenn z. B. ein Ausgang beim Zurücksetzen des Mikrocontrollers Arduino Nano auf HIGH gesetzt wurde, wird er nach dem Reset nicht wieder auf LOW gesetzt, sondern bleibt HIGH.

Programm Arduino für Software Reset

unsigned long timer;

void setup() {
  Serial.begin(9600);
  delay(100);
  Serial.println("start");
  timer = millis();
}

void loop() {
  if (millis() - timer > 10000) {
    Serial.println("reboot");
    delay(100);
    asm volatile("jmp 0x00");
  }
}
  1. asm volatile(“ jmp 0x00 „); startet das Programm von Anfang an neu, setzt aber die Ports nicht zurück; der Befehl kann überall im Code verwendet werden;
  2. In diesem Beispiel wird der Mikrocontroller alle 10 Sekunden zurückgesetzt.

Software-Reset und Hardware-Reset am Arduino

Um den Watchdog zu verwenden, müssen Sie die Datei avr/wdt.h einbinden und dann die Funktion wdt_enable() aufrufen. Der Watchdog ist ein eingebauter Zeitgeber (bis zu 8 Sekunden), der gestartet oder zurückgesetzt werden kann. Sobald der Timer Null erreicht, gibt der Controller ein Reset-Signal aus und das Gerät setzt sich selbst zurück. Wenn das Programm zu lange läuft, setzt der Watchdog-Timer den Arduino zurück.

Programm Arduino für Watchdog-Timer Arduino

#include "avr/wdt.h"
unsigned long timer;

void setup() {
  wdt_disable();
  Serial.begin(9600);
  delay(100);
  Serial.println("start");
  timer = millis();
  wdt_enable(WDTO_4S);
  /* vous pouvez choisir entre plusieurs valeurs prédéfinies
  15mS    WDTO_15MS
  30mS    WDTO_30MS
  60mS    WDTO_60MS
  120mS   WDTO_120MS
  250mS   WDTO_250MS
  500mS   WDTO_500MS
  1S      WDTO_1S
  2S      WDTO_2S
  4S      WDTO_4S
  8S      WDTO_8S
  */
}

void loop() {
  // wdt_reset();
  if (millis() - timer > 10000) {
    Serial.println("reboot");
    delay(1000);
  }
}
  1. Um das Zurücksetzen des Mikrocontrollers zu vermeiden, entfernen Sie den Kommentar aus wdt_reset(); dann wird der Zähler neu gestartet – ansonsten wird der Arduino alle 4 Sekunden neu gestartet.

Schlussfolgerung. Anhand von drei Beispielen haben wir gesehen, wie man das Arduino Uno Board per Software und Hardware Reset Arduino Mega 2560 zurücksetzen kann. Denken Sie daran, dass Sie bei der Verwendung eines Hardware-Resets vorsichtig sein und die richtigen Werte einstellen müssen, bevor Sie den Mikrocontroller zurücksetzen. Wenn Sie einen echten Reset benötigen, verwenden Sie den Hard-Reset (Arduino-Reset-Pin).

5/5 - (1 vote)


Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert