Welchen Pull-Up sollte man bei einem 3.3V-Chip nehmen, um dessen
Reset-Eingang sicher dauerhaft auf High-Pegel zu legen?
Hintergrund der Frage: Ich nehme normalerweise 4K7 (willkürlich;
Datenblatt macht keine Angaben*). Jetzt habe ich versehntlich eine
Charge mit 47K bestückt und bin unsicher, ob die ersetzt werden müssen.
In kurzen Tests gibt es keine Probleme. Aber ist 47K zu schwach, um
später, in der realen Umgebung, Resets durch Störungen zu vermeiden??
*
https://www.mouser.de/ProductDetail/NXP-Semiconductors/SC16IS750IBS128?qs=LOCUfHb8d9u%252B6gAtDhpGMg%3D%3D
Hängt vom Leckstrom deines Kondensators ab, und ggf. dem Eingangsstrom
des RST Pins.
47k werden die Funktion nicht beeinträchtigen, bei längeren Leitungen
(ISP-Stecker an RST) kann es aber EMV Probleme geben. Aber eigentlich
nur wenn kein Kondensator dran ist.
Laut Datenblatt haben die Eingänge von 1uA bis 30uA (zu reset steht
explizit nichts da).
Also von der Seite her sollte das gehen. Und dein Kondensator wird wohl
auch keinen Leakage im mA Bereich haben.
Danke für die Einschätzungen. Verstehe ich richtig, dass der mögliche
Strom durch den Pull-Up (3,3V / 47000Ohm = 70 uA) nur größer sein muss,
als der Leckstrom, um den /Reset-Eingang auf High zu halten? Und wenn
das der Fall ist, macht ein stärkere Pull-Up die Sache nicht im
geringsten stabiler? Einen Kondensator habe ich nämlich nicht dran - nur
den Pull-Up.
Veit D. schrieb:> Mit deinen 4,7k liegst du zufällig genau richtig.
Die Angabe hat mich jetzt bissl gewundert. In der AppNote steht:
The recommended pull-up resistor value is 4.7kΩ or larger when using
STK®600 for programming. For DebugWIRE to function properly, the pull-up
must not be less than 10kΩ.
Unterstreichungen durch mich.
Ich hätte (jaja, hinterher ...:-) ) einfach 10k hergenommen.
Dmr schrieb:> Verstehe ich richtig, dass der mögliche> Strom durch den Pull-Up (3,3V / 47000Ohm = 70 uA) nur größer sein muss,> als der Leckstrom, um den /Reset-Eingang auf High zu halten?
Im Prinzip ja.
Wenn du von einer ruhigen Umgebung ausgehen kannst (bez. EMC), dann wird
das mit dem 47k sicher auch funktionieren.
Wenn nicht, dann wäre mir der Wert zu hoch. Man muss bedenken, dass ein
Resetsignal ein kritisches, asynchrones Signal ist, schließlich kann man
damit die komplette Funktion abschießen. Ähnlich kritisch wie unsaubere
Taktleitungen.
Die Angaben, die Nick M. zitiert hat:
Nick M. schrieb:> The recommended pull-up resistor value is 4.7kΩ or larger when using> STK®600 for programming. For DebugWIRE to function properly, the pull-up> must not be less than 10kΩ.
beziehen sich auf gewisse Programmer und Debughardware, die offenbar
nicht in der Lage ist, etwas kleinere Widerstände zu treiben.
Wenn du also irgendwas erstellst für Kunden und nicht nur für deinen
privaten Hobbybereich, würde ich die 47k ersetzen durch die eigentlich
vorgesehenen 4k7.
Dmr schrieb:> In kurzen Tests gibt es keine Probleme.
Ja, aber mach mal EMV-Untersuchungen!
Ich war mal beauftragt, in einer Schaltung, die gelegentlich Probleme
machte, den Fehler zu finden. Dort waren mehrere ASICs an einen
Resetgenerator angebunden. Unter seltenen Umständen haben sich die ASICs
umkonfiguriert - auf die Resetwerte. Es war zwar nicht der Pullup,
sondern ein Übersprechen von Datensignalen auf die längere Resetleitung.
Seither betrachte ich Resetleitungen ähnlich kritisch wie Taktleitungen.
Zur Theorie dahinter:
ein Pull-Up bildet mit dem Eingangswiderstand (z.B. Basisstrom bei
Bipolar) und Kondensator (z.B. Gate des FET oder Leitungskapazitäten)
einen Spannungsteiler.
Ein Pull-Up (nicht nur dieser hier) muß zwei Bedingungen erfüllen:
a) nicht zu klein, sonst muß der Ausgang der das ganze ggf. steuert zu
viel Strom beherrschen (das ist vermutlich die "DebugWIRE" genannte
Situation).
Sonst liefert der Spannungsteiler aus Pull-Up, Eingangswiderstand und
dem Innenwiderstand des Treibers (nach GND) eine Eingangsspannung über
der Schwelle für einen "Low"-Pegel.
Außerdem wandelt der dann nur unnötig Energie in Wärme ohne dass es
digital einen Unterschied macht.
b) nicht zu groß - und zwar aus verschiedenen Gründen
b1) wenn er zu groß ist lädt sich der (parasitäre) Kondensator am
Eingang zu langsam auf und die Eingangsspannung läuft zu langsam durch
den "verbotenen" Bereich zwischen Low und High (außer das ist ein
Schmitt-Trigger-Eingang).
Wenn man keinen externen C anschließt sind das aber nur wenige pF so
dass das keine Rolle spielt (außer der Pull-Up wäre 10 MΩ).
Aber bei einem I2C beispielsweise ist das jedoch Prinzip. Da man dort
mit hohen Taktraten arbeiten will muß sich die lange Leitung schnell
genug umladen und man nimmt bei langem I2C-Bus einen niedrigeren Pull-Up
(z.B. 1k). Bei kurzen reichen 4k7 oder 10k (Daumenregel).
b2) wenn er zu groß ist, dann reicht der Spannungsteiler mit dem
Eingangswiderstand nicht um überhaupt den "High"-Pegel zu erreichen.
Bei FET-Eingängen spielt das keine Rolle, weil der Eingangswiderstand
sehr hoch ist (es gibt aber Chips mit eingebautem Pull-Down damit man
den Pin unbeschaltet lassen darf). Daher kommt das "mindestens" 4k7 das
jemand erwähnt hat.
b3) wenn der Pull-Up der einzige vorhandene Widerstand ist (hochohmiger
Eingang), dann werden Störungen die auf die Zuleitung eingekoppelt
werden weniger gedämpft. Ob das überhaupt ein Problem ist hängt von der
Leitungslänge, dem Treiber am anderen Ende, den Störungen ab.
Dmr schrieb:> Welchen Pull-Up sollte man bei einem 3.3V-Chip nehmen, um dessen> Reset-Eingang sicher dauerhaft auf High-Pegel zu legen?
Um einen Pin sicher dauerhaft auf High-Pegel zu legen, ist ein Draht die
sicherste Lösung ;-)
Aber das willst du sicher nicht.
Wie sehr sich Störungen aus deiner Umgebung auf den Pegel am Pin
auswirken, hängt von der Höhe der zu erwartenden Störsignale und von der
Antennenwirkung deiner Verdrahtung ab (Abschirmung,
Leiterschleifenfläche, Länge).
mit 10k und 100nF hatte ich nie Probleme sebst ein 5cm Zündfunken neben
dem µC haben diesen nicht aus dem Tritt gebracht wobei ich immer ein
paar Drosselspulen 10µH um den µC verteile.