Reset Mikrocontroller

#3889721
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.
(Firma: Vescomp) #3889738
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.
(Firma: Schweigstill IT) Persönliche Seite #3890043
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.
(Firma: www.wolfgangrobel.de) #3890049
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.
(Firma: Vescomp) #3890115
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.
(Firma: Schweigstill IT) Persönliche Seite #3890323
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".
Gast #3890534
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
#3891213
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.
#3891426
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.

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren