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.
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.
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
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
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...
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.
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?
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.
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.