Hallo,
ich arbeite gerade mit dem STM32F103V8 Prozessor von ST: ist es normal,
dass bei einem Reset des Controllers per Software alle Pins auf Low
geschaltet werden?
Ich dachte die Pins werden per default auf High-Level gezogen vom
Prozessor selbst during a reset?
Problem ist folgendes: an meiner Resetleitung liegen mehrere Prozessoren
direkt dran - allerdings möchte ich nur dass sich der STM32F103
Prozessor resettet und nicht die anderen auch. Da aber die Resetleitung
vom STM beim Reset auf low gezogen wird, resetten sich die anderen auch
alle mit :-(
Gruß
Jens
Jens schrieb:> Ich dachte die Pins werden per default auf High-Level gezogen vom> Prozessor selbst during a reset?
Weder noch, sie sollten eigentlich auf hochohmig schalten.
A. K. schrieb:> Weder noch, sie sollten eigentlich auf hochohmig schalten.
hochohmig würde ja bedeuten, dass der Prozessor sich von der Leitung
abkapselt und die installierten Pullups die RST Leitung auf high
halten... leider ist das nicht so :-(
Die Reset-Leitung der STM32 ist bidirektional konstruiert. Ein intern
ausgelöster Reset kann auf diese Weise dazu verwendet werden, extern
angeschlossene Devices gleich mit zurückzusetzen indem man deren Reset
dort anschliesst.
Wenn du also alle Reset-Pins mehrerer Controller zusammenschaltest, dann
kann es nicht ausbleiben, dass der von einem davon ausgelöste Reset alle
anderen ebenfalls beglückt. Das ist nicht zu ändern.
Was ich oben beschrieb gilt für normale GPIO-Pins.
A. K. schrieb:> Was ich beschrieb gilt für normale GPIO-Pins.
Im Prinzip gibt es einen Resetknopf der vom User betätigt werden kann
und dann sollen alle Prozessoren resettet werden.
Ich dachte dass das von dir dargelegte Verhalten für alle Pins von einem
Prozessor gilt, außer den VCCs GNDs etc.
D.h. ich kann nich alle Reset-Pins NRSTs von mehreren Prozessoren
zusammenschalten sondern müsste jedesmal einen externen Reset-Controller
verwenden?
Hier mal was ich ereichen möchte:
1. User soll per Resetknopf alle Prozessoren resetten können, damit ein
definiertes Verhalten vorliegt -> alle Prozessoren fangen wieder von
vorne an
2. Jeder dieser Prozessoren kann auch durch die eigene Software unter
gewisssen Gegebenheiten resettet werden -> dann sollen die anderen
Prozessoren allerdgins nichts resettet werden können.
Jetzt müsste ich für jeden Prozessor einen externen ResetController
spendieren, damit ich dieses Verhalten erreiche? Oder gibt es noch
andere Optionen?
Gruß
Jens
Jens schrieb:> D.h. ich kann nich alle Reset-Pins NRSTs von mehreren Prozessoren> zusammenschalten
Direkt nicht. Du kannst aber die Pins beispielsweise mit (Schottky-)
Dioden entkoppeln.
Jens schrieb:> Ich dachte dass das von dir dargelegte Verhalten für alle Pins von einem> Prozessor gilt, außer den VCCs GNDs etc.
Schau mal in die Reference, Kapitel RCC, Diagramm "6.1.2 Power reset".
A. K. schrieb:> Schau mal in die Reference, Kapitel RCC, Diagramm "6.1.2 Power reset".
das hab ich auch grad gefunden - mit dem schönen Bildchen...
A. K. schrieb:> Direkt nicht. Du kannst aber die Pins beispielsweise mit (Schottky-)> Dioden entkoppeln.
µC-NRST.Pin----|>|----RST-Leitung
Aber wird dann ein Low Pegel vom Resetbutton erkannt? Im Prinzip ist das
Low-Signal vom Resetbutton oder von einem anderen Prozessor für einen
zweiten Prozessor genau das gleiche Signal...
So:
µC1-NRST.Pin----|>|--+--RST-Leitung
|
µC2-NRST.Pin----|>|--|
|
µC3-NRST.Pin----|>|--|
> Aber wird dann ein Low Pegel vom Resetbutton erkannt?
Ja. Wenn der Pegel noch passt, weshalb da Schottky-Dioden wie BAT42
sicherer sind als 1N4148. Kannst aber auch Open-Drain Treiber wie 74HC07
an Stelle der Dioden nehmen.
> Im Prinzip ist das> Low-Signal vom Resetbutton oder von einem anderen Prozessor für einen> zweiten Prozessor genau das gleiche Signal...
Nö. Aufgrund der Dioden sehen sich die nicht mehr.
A. K. schrieb:> Nö. Aufgrund der Dioden sehen sich die nicht mehr.
ok, weil an der Diode abhängig vom Typ ne gewisse Spannung abfällt und
somit nach der Diode BAT41 keine Null Volt vorhanden sind sondern
entsprechend mehr.
z.B. fallen über der Diode 0,41V ab dann sieht ein anderer Prozessor
noch 3V3 - 0.41V und ist glücklich...
µC1-NRST.Pin---0V-|>|--+--RST-Leitung
Jens schrieb:> z.B. fallen über der Diode 0,41V ab dann sieht ein anderer Prozessor> noch 3V3 - 0.41V und ist glücklich...
Au weh...
Nochmal, um Missverständnisse zu vermeiden:
µC1.NRST----|>|--+--Reset-Taster, mit Kondensator parallel.
|
µC2.NRST----|>|--|
|
µC3.NRST----|>|--|
|
Vdd ----10KOhm---|
Der Widerstand ist nicht unbedingt nötig, erleichtert aber evtl. das
Denken.
Und nun fang mal mit der Frage an, was eine Diode ist und wie herum sie
wie funktioniert.
Was passiert mit µC2.NRST, wenn der Taster seine Leitung auf 0V legt?
Was passiert mit µC2.NRST, wenn µC1 seine NRST-Leitung auf 0V legt?
A. K. schrieb:> Was passiert mit µC2.NRST, wenn der Taster seine Leitung auf 0V legt?
also VDD = 3V3 und der 10k dient als Pullup, so dass per default 3V3
anliegen. Wenn jetzt der Taster auf 0V gezogen wird, dann ist alles aus
0V -> Diode lässt durch.
A. K. schrieb:> Was passiert mit µC2.NRST, wenn µC1 seine NRST-Leitung auf 0V legt?
Wenn ein µC auf 0V zieht, lässt die Diode nicht durch -> 3V3 an den
anderen Controllern, da sie nichts mitbekommen vom Reset des einen
Controllers...