www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik STM32 Pin-level bei Reset


Autor: Jens (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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

Autor: A. K. (prx)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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.

Autor: Jens (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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 :-(

Autor: Jens (Gast)
Datum:

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

Autor: A. K. (prx)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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.

Autor: Jens (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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?

Autor: Jens (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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

Autor: A. K. (prx)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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.

Autor: A. K. (prx)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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".

Autor: Jens (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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...

Autor: A. K. (prx)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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.

Autor: Jens (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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

Autor: A. K. (prx)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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?

Autor: Jens (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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...

Autor: A. K. (prx)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Na also, geht doch.

Autor: Jens (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
A. K. schrieb:
> Na also, geht doch.
vielen dank fürs augen-öffnen :-)

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.