Titelbild Mikrocontroller

6. Resetsystem des Xmega384

Der Baustein unterscheidet mehrere Resetquellen:
  • Poweron
  • Extern
  • Watchdog
  • Brownout (Spannungsabfall)
  • PDI
  • Softwarereset

Ein Reset ist asynchron, es ist also kein Systemtakt für den Reset erforderlich. Sobald eine Resetbedingung auftritt geht der Controller in den Resetzustand und bleibt dort so lange, bis alle Resetbedingungen (für den Fall dass zwei Quellen gleichzeitig Reset geben) verschwunden sind.

Beim Reset werden alle I/O-Pins sofort auf tristate geschaltet. Der Programmcounter wird auf die Position des Resetvektors gesetzt und alle I/O-Register werden auf einen definierten Anfangszustand gesetzt. Der Inhalt des SRAM bleibt beim Reset erhalten, nur der Inhalt einer Speicherstelle, auf die just beim Auftreten des Reset zugegriffen wurde, ist unbestimmt.

Nach einem Reset startet das Programm ab der Adresse des Resetvektors. Das ist üblicherweise die Adresse 0000h. Es ist aber auch möglich, den Resetvektor auf die unterste Adresse des boot Sectors zu legen (nur über den externen Programmer).

Das Reset Status Register zeigt mit individuellen Flags an, welche Quelle seit dem letzten Power on den letzten Reset erzeugt hat. Das Register wird beim Power on gelöscht (außer das Power on Flag, das wird auf 1 gesetzt). Nachfolgende Codesequenz gibt die Restflags auf Port B aus.

Codebeispiel Restflags

Codebeispiel Restflags


Der Programmer (AVRISP mkII) erzeugt auch einen externen Reset wenn er mit dem Board verbunden ist. Nach dem Einschalten der Spannung gibt es also zwei Reset: „Spannung ein“ und mit einer Verzögerung von etwa 0,5s einen „externen“ Rest. Auch das Einstecken des Programmers löst einen externen Rest aus. Der Programmiervorgang löst den PDI Rest und den externen Rest aus.
Impressum