Forum: Mikrocontroller und Digitale Elektronik Reset Mikrocontroller


von Tom (Gast)


Lesenswert?

Kann mir jemand sagen, was bei einem Reset in einem Mikrocontroller 
abläuft?


Danke

Gruß

Alex

von Tom (Gast)


Lesenswert?

Was für mich auch noch interssiert, was danach dann abläuft.


Gruß

Tom

von Max H. (hartl192)


Lesenswert?

Tom schrieb:
> Kann mir jemand sagen, was bei einem Reset in einem
> Mikrocontroller
> abläuft?
Alle werden auf den Reset-Wert gesetzt, den man in Datenblatt findet, 
darunter auch der Programmcounter zum Reset Vector.

Tom schrieb:
> Was für mich auch noch interssiert, was danach dann abläuft.
Der µC arbeitet das Programm von vorne ab.

: Bearbeitet durch User
von Marc V. (Firma: Vescomp) (logarithmus)


Lesenswert?

Tom schrieb:
> Kann mir jemand sagen, was bei einem Reset in einem Mikrocontroller
> abläuft?

 Dasselbe wie beim Einschalten.
 Alle Register auf Anfangswerte, RAM wird nicht geändert.
 If MCU Status Register ist vorhanden, wird entsprechendes Reset Flag
 gesetzt.

von Tom (Gast)


Lesenswert?

Gibt es dazu Links oder Literatur?

von Sven B. (scummos)


Lesenswert?

Was genau passiert, steht im Handbuch des betreffenden Mikrocontrollers.
Im Wesentlichen kann man davon ausgehen, dass dasselbe passiert wie wenn 
man den Strom zum ersten Mal anschaltet. Alle Subsysteme werden 
resettet, und die Reset-ISR wird ausgeführt.

von Max H. (hartl192)


Lesenswert?

Tom schrieb:
> Gibt es dazu Links oder Literatur?
Das Datenbaltt deines µCs

von Thomas E. (thomase)


Lesenswert?

Marc Vesely schrieb:
> Dasselbe wie beim Einschalten.

Nicht ganz.
Bei den AVRs bleibt der Watchdog, sofern aktiviert, eingeschaltet. Auch 
wenn der Reset über den Pin ausgelöst wurde. Wenn man dann gemütlich 
seine Initialisierung durchführt, womöglich noch mit Display, wo ja 
gewöhnlich Delays drin sind und danach erst den Watchdog bedient, kommt 
man manchmal gar nicht soweit. Denn natürlich läuft der Watchdog nach 
Reset mit der kürzesten Zeit.
Ähnlich verhält es sich mit der WD-Fuse. Wenn die abgeschaltet wird, ist 
das auch erst nach Power-On-Reset wirksam.

mfg.

von Tom (Gast)


Lesenswert?

Wo kann man das nachlesen?

von Max H. (hartl192)


Lesenswert?

Tom schrieb:
> Wo kann man das nachlesen?
Datenblatt

von Marc V. (Firma: Vescomp) (logarithmus)


Lesenswert?

Thomas Eckmann schrieb:
> Bei den AVRs bleibt der Watchdog, sofern aktiviert, eingeschaltet. Auch
> wenn der Reset über den Pin ausgelöst wurde. Wenn man dann gemütlich
> seine Initialisierung durchführt, womöglich noch mit Display, wo ja

 Warum sollte jemand, der mit WD arbeitet, zuerst die Initialisierung
 machen und erst danach MCUSR auf Status prüfen ?
 Wie schon oben erwähnt, steht alles in MCUSR, also sollte man gemütlich
 die MCUSR prüfen und dann seine Initialisierung durchführen.
 Von mir aus auch gemütlich.

von Thomas E. (thomase)


Lesenswert?

Marc Vesely schrieb:
> Warum sollte jemand, der mit WD arbeitet, zuerst die Initialisierung
>  machen und erst danach MCUSR auf Status prüfen ?

Das weiss ich nicht. Und das ist mir auch vollkommen egal. Aber darum 
geht es auch gar nicht, sondern darum, dass das Verhalten je nach Art 
des Resets eben nicht dasselbe ist.

mfg.

von Andreas S. (Firma: Schweigstill IT) (schweigstill) Benutzerseite


Lesenswert?

Marc Vesely schrieb:
>  Alle Register auf Anfangswerte, RAM wird nicht geändert.

Das ist in dieser allgemeinen Form falsch. Zumindest bei 
ARM7/9-Prozessoren werden die meisten Register bei einem Reset eben 
nicht zurückgesetzt, sondern nur R15 (=PC) und CPSR. Das ist sehr 
praktisch beim Debuggen, insbesondere bei Verwendung eines Prozessors 
mit Hardwarewatchdog.

>  If MCU Status Register ist vorhanden, wird entsprechendes Reset Flag
>  gesetzt.

Es wäre mir neu, dass jeder Prozessor, der ein Statusregister besitzt, 
darin auch den Reset-Status ablegt.

von Wolfgang R. (Firma: www.wolfgangrobel.de) (mikemcbike)


Lesenswert?

Unterschiedliche Microcontroller und Mikroprozessoren arbeiten den Reset 
unterschiedlich ab!

Das genaue Verhalten lässt sich nur dem Datenblatt des jeweiligen 
Bausteines entnehmen.

Programmtechnisch holen sich manche Prozessoren erst den Reset-Vektor 
(eine Programmadresse) aus dem ROM und beginnen dann die Ausführung des 
Programmes an dieser Stelle.

von Eric B. (beric)


Lesenswert?

Marc Vesely schrieb:

> RAM wird nicht geändert.

Sogar das stimmt nicht mal für alle uC.

von Marc V. (Firma: Vescomp) (logarithmus)


Lesenswert?

Thomas Eckmann schrieb:
> Nicht ganz.

Andreas Schweigstill schrieb:
> Das ist in dieser allgemeinen Form falsch. Zumindest bei
> ARM7/9-Prozessoren werden die meisten Register bei einem Reset eben
> nicht zurückgesetzt, sondern nur R15 (=PC) und CPSR. Das ist sehr

Eric B. schrieb:
> Sogar das stimmt nicht mal für alle uC.

 Also, in etwas allgemeiner Form:
 Es kann alles mögliche passieren, muss aber nicht.

 Hoffe, dir mit dieser Antwort genausoviel geholfen zu haben wie die
 3 Experten oben.

von Thomas E. (thomase)


Lesenswert?

Marc Vesely schrieb:
> Es kann alles mögliche passieren, muss aber nicht.

Nein. Es passiert nicht alles Mögliche, sondern etwas genau definiertes. 
Was das genau ist, steht im Datenblatt.

mfg.

: Bearbeitet durch User
von Andreas S. (Firma: Schweigstill IT) (schweigstill) Benutzerseite


Lesenswert?

Thomas Eckmann schrieb:
> Nein. Es passiert nicht alles Mögliche, sondern etwas genau definiertes.
> Was das genau ist, steht im Datenblatt.

Und selbst das stimmt nur bei Mikroprozessoren/-controllern, bei denen 
der Reset sauber einsynchronisiert ist. Mir ist mindestens ein Baustein 
bekannt, bei dem dies bei einigen Peripherieblöcke vergessen wurden. Im 
schlimmsten Fall erzeugte solch ein Block sogar einen nicht 
zurücksetzbaren Dauerinterrupt. Dann half nur der Stromreset. :-/

Nachdem ich damals auch noch andere ähnlich gravierende Mängel 
zusammengetragen und an den Hersteller berichtet hatte, strich er 
zunächst Leistungsmerkmale aus dem Datenblatt. Als in der nächsten Maske 
immer noch üble Fehler enthalten waren, stellte er die Produktion ganz 
ein, löste die zuständige Entwicklungsabteilung auf und lies den 
Nachfolgebaustein an einem anderen Unternehmensstandort 
fertigentwickeln. Bei dem Hersteller handelt es sich übrigens um einen 
der großen "Global Player".

von Georg (Gast)


Lesenswert?

Thomas Eckmann schrieb:
> Nein. Es passiert nicht alles Mögliche, sondern etwas genau definiertes.

Ok wenn du darunter auch verstehst, dass nichts passiert - es werden 
keineswegs immer alle Register mit einem bestimmten Wert initialisiert, 
oft sind zahlreiche Register nach Power on unbestimmt und nach Reset 
unverändert. Du hast natürlich Recht, auch das ist was genau 
definiertes, nämlich nichts, und das steht auch im Datenblatt.

M.a.W. wenn im Datenblatt der Zustand nach Reset drin steht, dann ist 
das so, bei anderen Registern muss der Programmierer selbst dafür 
sorgen, dass sie definiert initialisiert werden, sofern er sie überhaupt 
verwendet. Für den Ablauf wichtige Register wie Programmzähler oder 
Interrupt Control werden natürlich immer definiert resettet, sonst 
könnte der Prozessor nicht funktionieren. Aber schon auf die Baudrate 
des UARTs kann man sich nicht verlassen ohne nachzusehen.

Georg

von Horst H. (horst_h44)


Lesenswert?

Eins der wichtigen Dinge die nach einem Reset oft zu Problemen führt ist 
die Tatsache das ein Grundzustand hergestellt wird der im Datenblatt 
nicht immer leicht zu erkennen ist. So z.B. das alle E/A-Ports auf 
Eingabe setzt werden und extern Hardware/iCs statt einem Ausgangspegel 
einen offenen Eingang sehen( http://www.ichaus.de/wp1_mikrocontroller). 
In den Programmroutinen ist es auch recht nützlich sich zu überlegen 
welche Zustand nach dem Reset da ist und wenn das Datenblatt nicht 
eindeutig ist muss das Programm den erforderlichen Startzustand 
herstellen.

von Tom (Gast)


Lesenswert?

Ich würde hier mal ein konkretes Beispiel heranziehen wollen.

Wie ist es denn z.B. beim ATmega 8-32?
Im Datenblatt sollte ja dann dort alles dokumentiert sein, oder?

Gruß

Tom

von Marc V. (Firma: Vescomp) (logarithmus)


Lesenswert?

Tom schrieb:
> Im Datenblatt sollte ja dann dort alles dokumentiert sein, oder?

 Ja, ist es auch.

von Axel S. (a-za-z0-9)


Lesenswert?

Thomas Eckmann schrieb:
> Marc Vesely schrieb:
>> Es kann alles mögliche passieren, muss aber nicht.
>
> Nein. Es passiert nicht alles Mögliche, sondern etwas genau definiertes.

Schön wie ihr aneinander vorbei redet.

Natürlich ist für jeden einzelnen µC genau definiert, was beim Reset 
passiert. Und das steht natürlich im Datenblatt.

Aber wenn man zwei verschiedene µC vergleicht (und der TE wollte sich ja 
bis eben nicht festlegen, welcher µC ihn interessiert) dann können das 
natürlich verschiedene Dinge sein. Eine übergreifende Aussage, die für 
alle µC zutrifft, kann man deswegen nicht machen.

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.