Forum: Analoge Elektronik und Schaltungstechnik High Level als Default State


von asdf (Gast)


Lesenswert?

Es gibt etwas das ich mich schon länger frage: Viele FPGAs, Controller 
u.ä. setzen ihre Pins während dem Programmieren auf "high". Gibt es 
dafür einen guten Grund? Das nervt gewaltig wenn man an diesen Pins 
Gatetreiber angeschlossen hat und mit einmal Programmieren die Brücke 
sprengt.

von Jens M. (schuchkleisser)


Lesenswert?

"des Programmierens"

Sicher das da nicht "high Impedance" steht?
Ich kenn mich nicht mit FPGAs aus, aber Controller gehen normalerweise 
auf "offen" und ein externer Widerstand kann was auch immer da dran 
hängt sicher festhalten.

von asdf (Gast)


Lesenswert?

Jens M. schrieb:
> "des Programmierens"

Hast ja recht.

Ok ich hab mich falsch ausgedrückt. Die Pins gehen auf "Eingang", haben 
aber chip-intern einen Pull-up dran hängen. Das Ergebnis für 
angeschlossene Gatetreiber ist das Selbe: alle Schalter schalten ein. 
Pull-down Widerstände habe ich sogar eingeplant, aber schlichtweg 
vergessen zu bestücken. Das nennt sich dann wohl Lehrgeld.

Trotzdem bleibt für mich die Frage nach dem Warum. Hat das irgendeinen 
Grund wieso offenbar standardmässig ein Pull-up vorgesehen wird? Das ist 
für mich irgendwie nicht logisch erklärbar, da je die angeschlossene 
Peripherie geschätzt in der Mehrzahl der Fälle "active high" ist.

von Axel S. (a-za-z0-9)


Lesenswert?

asdf schrieb:
> Viele FPGAs, Controller
> u.ä. setzen ihre Pins während dem Programmieren auf "high".

Nicht in meiner Welt. Nenn doch mal ein paar Beispiele [1].

asdf schrieb:
> Ok ich hab mich falsch ausgedrückt. Die Pins gehen auf "Eingang", haben
> aber chip-intern einen Pull-up dran hängen.

Nicht in meiner Welt. Nenn doch mal ein paar Beispiele [1].

> Pull-down Widerstände habe ich sogar eingeplant, aber schlichtweg
> vergessen zu bestücken. Das nennt sich dann wohl Lehrgeld.

Lernen durch Schmerz. Besonders effektiv.

> Trotzdem bleibt für mich die Frage nach dem Warum

Mal abgesehen davon, daß das in meiner Welt nicht so ist ... man 
schließt Sensoren, Schalter etc. gern einseitig an GND an. Z.B. weil in 
einem Metallgehäuse GND allgegenwärtig ist. Und weil die Isolation 
dieser Leitung dann unkritisch ist. Zugehörige Eingänge brauchen dann im 
Betrieb einen Pullup. Ein extern beschalteter Pullup wäre dann immer 
aktiv.

Falls interne Pullups nicht abschaltbar sein sollten, reicht das allein 
schon als Erklärung. Aber nach meiner Beobachtung sind sie i.d.R. 
abschaltbar und im Zweifelsfall auch abgeschaltet.

Falls es doch anders sein (und so dokumentiert) sein sollte, dann muß 
man halt Vorkehrungen treffen. Im einfachsten Fall mit einem Pulldown. 
Oder indem man einen invertierenden Gatetreiber verwendet. Oder indem 
man das RESET Signal zum Sperren (Abschalten) der betroffenen Hardware 
heranzieht.


[1] und zwar mit einem Pointer auf ein Dokument, das den Sachverhalt 
eindeutig klarstellt

von Fralla (Gast)


Lesenswert?

Ich finde es gut, so denkt man an die Pulldowns vor jedem 
Gate/Gatetreiber weil man sofort merkt wenns knallt. Wenn ein Pin 
hochohmig wird und der Gate-Treiber offen ist kann es lange gut gehen 
und irgendwann knallts dann doch.

Das wird wohl kaum die wirkliche Erklärung sein, die kenne ich nicht.

von Peter D. (peda)


Lesenswert?

asdf schrieb:
> Viele FPGAs, Controller
> u.ä. setzen ihre Pins während dem Programmieren auf "high".

Ich kenne nur einen einzigen MC, der das so macht, die 8051-Familie. Da 
kann man dann invertierende Gatetreiber dahinter schalten.
Einige neuere 8051-Derivate erlauben aber, über ein Fusebit den Pullup 
auszuschalten.

High-Impedance auf einen Gatetreiber zu geben, düfte aber auch nicht 
gesund für den FET sein. Es gibt daher auch Gatetreiber mit internen 
Pulldowns.

von Jens M. (schuchkleisser)


Lesenswert?

Du Pullups sind "in meiner Welt" meist um 50-100k, also "weak".
Und bei den meisten µC entweder per Config abschaltbar oder sogar nur 
per Software einschaltbar.

Und warum gehen die Pins wohl auf Input....
Weil sie umschaltbar sind, d'uh.
Was meinst du wohl, was passiert wenn ein Projekt mit einstellbaren Pins 
auf einer Platine mit andersrum einstellbaren Pins laufen würde?
Rrrrichtig, das knallt.
Daher gehen die Chiphersteller auf Nummer sicher und machen den Chip so, 
das er im Reset oder "ist noch unprogrammiert"-Fall auf einen Zustand 
läuft der dem entspricht als wenn er nicht im Sockel stecken würde.
Das ist normalerweise sicher. (Außer gegen falsches Programm mit 
falscher IO-Belegung...)

Die Schaltung muss immer so ausgelegt werden, das ein fehlender 
Controller die Schaltung in einen Safe State bringt.
Weil das ist was passiert wenn z.B. der Brownout-Reset anspricht. Oder 
das Teil programmiert wird. Oder debugged. Oder auch nur in der kurzen 
Zeitspanne zwischen Power on und
1
void Setup()
2
bla();
3
return; // <- hier

: Bearbeitet durch User
von Schlumpf (Gast)


Lesenswert?

asdf schrieb:
> Hat das irgendeinen
> Grund wieso offenbar standardmässig ein Pull-up vorgesehen wird?

Ein CMOS Eingang den man floaten lässt (also kein PullWiderstand), 
pendelt sich üblicherweise bei Ub/2 ein. Und da fließt dann ein 
verhältnismäßig hoher Strom im Chip.
Ein "offener" Eingang ist weiterhin Käse, weil er sowohl in die eine als 
auch die andere Richtung "driften" kann.
Daher ist es sinnvoll, einen Eingang per default mit einem 
Pullwiderstand nach Vcc oder GND zu ziehen.

Dass dann die eine oder andere Richtung in deiner speziellen Applikation 
Probleme bereiten könnte, kann sein.

An diesen Stellen musst du dann eben mit externen Pullwiderständen den 
für dich richtigen Pegel erzeugen.

von Clemens L. (c_l)


Angehängte Dateien:

Lesenswert?

Schlumpf schrieb:
> Ein CMOS Eingang den man floaten lässt (also kein PullWiderstand),
> pendelt sich üblicherweise bei Ub/2 ein. Und da fließt dann ein
> verhältnismäßig hoher Strom im Chip.
> Ein "offener" Eingang ist weiterhin Käse, weil er sowohl in die eine als
> auch die andere Richtung "driften" kann.

Beispiel des Herumfloatens von hier: 
https://e2e.ti.com/support/microcontrollers/msp430/f/166/t/534363
(Die beiden großen Sprünge um 2s sind von einer LED.)

: Bearbeitet durch User
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
Noch kein Account? Hier anmelden.