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 :-(
hier noch kurz mal der Code, wo ich den Prozessor resette: vielleicht ist dieser ja falsch bzw. muss anders formuliert werden:
1 | void NVIC_SystemReset(void) |
2 | { |
3 | SCB->AIRCR = ((0x5FA << SCB_AIRCR_VECTKEY_Pos) | |
4 | (SCB->AIRCR & SCB_AIRCR_PRIGROUP_Msk) | |
5 | SCB_AIRCR_SYSRESETREQ_Msk); /* Keep priority group unchanged */ |
6 | __DSB(); /* Ensure completion of memory access */ |
7 | while(1); /* wait until reset */ |
8 | } |
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...
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.