NVIC-Reset ungleich Power-On-Reset

Gast #5119342
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.
Gast
STM schrieb im Beitrag #5119342:
> 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
Angehängte Dateien:
Gast
STM schrieb im Beitrag #5119342:
> 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
Gast
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...
Gast
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.
Gast
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?
Gast
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.

Antwort schreiben

Eine eigene Frage? Dieser Thread ist über 9 Jahre alt. Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.

Neuen Thread starten

Eine Lösung, Ergänzung oder Rückmeldung zu diesem Thread? Dann antworte hier.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.