Forum: Mikrocontroller und Digitale Elektronik NVIC-Reset ungleich Power-On-Reset


von STM (Gast)


Lesenswert?

Hallo,

ich stelle immer wieder fest, dass der STM32 Controller nach einem 
Power-On-Reset ein anderes Verhalten zeigt, als wenn man einen 
NVIC-Systemreset durchführt.

Gibt es nicht eine Möglichkeit, per Software einen Power-On-Reset zu 
generieren, damit wirklich immer exakt das gleiche Verhalten zum Start 
gezeigt wird?

Controller wäre ein STM32 Derivat.

von Jim M. (turboj)


Lesenswert?

Schau mal nach ob der Watchdog ein mit dem POR vergleichbares Reset 
auslöst.

Aber zwischen POR und NVIC_SystemReset() bestehen auch elektrische 
Unterschiede, z.B. in der Betriebsspannung.

von fft (Gast)


Angehängte Dateien:

Lesenswert?

STM schrieb:
> ich stelle immer wieder fest, dass der STM32 Controller nach einem
> Power-On-Reset ein anderes Verhalten zeigt, als wenn man einen
> NVIC-Systemreset durchführt.

Ein Beispiel wäre interessant -> Glaskugel grad nich da

Laut Datenblatt sollte es keinen Unterschied geben, siehe Bild

von Georg (Gast)


Lesenswert?

STM schrieb:
> ich stelle immer wieder fest, dass der STM32 Controller nach einem
> Power-On-Reset ein anderes Verhalten zeigt, als wenn man einen
> NVIC-Systemreset durchführt

Aber wenn du die Unterschiede kennst, kannst du ja die Software so 
schreiben, dass die Initialisierung genau das gleiche Ergebnis hat. Ich 
verlasse mich sowieso nicht ohne weiteres darauf, was z.B. von der 
Hardware auf 0 gesetzt wird, sondern schreibe eine Null rein überall wo 
sie beim Start gebraucht wird (defensive Programmierung).

Du kannst natürlich auch per I/O ein Monoflop starten, das einen 
externen Reset auslöst, oder einen I/O-Pin direkt mit Reset verbinden, 
aber das finde ich ist nur eine Notlösung.

Georg

von eagle user (Gast)


Lesenswert?

Georg schrieb:

> Du kannst natürlich auch (...) einen I/O-Pin direkt mit Reset
> verbinden, aber das finde ich ist nur eine Notlösung.

Warum? Solange du einen I/O-Pin übrig hast, ist das doch die 
zuverlässigste und billigste Lösung. Besser wäre nur ein I/O-Pin am 
Enable-Eingang vom Spannungsregler. Ein paar Debug-Register werden 
nämlich tatsächlich nur vom POR resettet. Und wenn du eine Batterie an 
VBAT hast, reicht das auch noch nicht...

von guest (Gast)


Lesenswert?

eagle user schrieb:
> Warum?

Weil Du mit der Konstruktion die vorgeschriebenen Timings am Resetpin 
nicht garantieren kannst. Deshalb brauchts eigentlich den von Georg 
erwähnten Monoflop. Funktionieren tut es in den allermeisten Fällen 
trotzdem, nur die "zuverlässigste" Lösung ist es definitiv nicht.

von eagle user (Gast)


Lesenswert?

So ganz allgemein hast du natürlich Recht, aber beim STM32 ist keine 
minimale Impulsdauer angegeben. Es heißt nur, das Impulse unter 70ns 
sicher unterdrückt werden und längere als 350ns sicher ausreichen. Die 
Bedingung erfüllt sich doch von alleine, selbst wenn die Verzögerung 
NRST bis I/O-Pin Null wäre? Der NRST hat auch 200mV Hysterese, 100n nach 
Masse und min. 25k Pull-Up, das muss doch reichen?

von guest (Gast)


Lesenswert?

eagle user schrieb:
> So ganz allgemein hast du natürlich Recht, aber beim STM32 ist keine
> minimale Impulsdauer angegeben. Es heißt nur, das Impulse unter 70ns
> sicher unterdrückt werden und längere als 350ns sicher ausreichen.

Hab das Datenblatt grad nicht vor mir, aber so wie Du das schreibst sind 
die 350ns ja gerade die minimale Impulsdauer um ihn sicher in den Reset 
zu bekommen.

> Die Bedingung erfüllt sich doch von alleine, selbst wenn die Verzögerung
> NRST bis I/O-Pin Null wäre?

Eben nicht. Das er erst nach 350ns sicher im Reset ist bedeutet NICHT 
das der Reset schlagartig zu diesem Zeitpunkt stattfindet. Der passiert 
irgendwann zwischen den 70 und 350ns und im allgemeinen für die 
verschiedenen Teile des µC (RAM, IO-Block, Timer, UART, ...) auch noch 
zu unterschiedlichen Zeitpunkten.
Funktionieren tut es normalerweise trotzdem, weil es genug (parasitäre) 
Kapazitäten gibt und der Resetpin hochohmig genug ist. Und mit:
> Der NRST hat auch 200mV Hysterese, 100n nach
> Masse und min. 25k Pull-Up, das muss doch reichen?
hast Du ja dann quasi den geforderte Monoflop. Ob die Kombi 100n/25k für 
die 350ns ausreicht kannst Du selber nachrechnen.

von Gerd E. (robberknight)


Lesenswert?

STM schrieb:
> ich stelle immer wieder fest, dass der STM32 Controller nach einem
> Power-On-Reset ein anderes Verhalten zeigt, als wenn man einen
> NVIC-Systemreset durchführt.

und was genau ist da nun unterschiedlich?

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.