Hallo,
ich finde nirgends eine genaue Erklärung über externe und interne
Pullups bei einem xbeliebigen Atmega.
Intern:
+ weniger Bauteile benötigt
- Pullup nicht frei dimensionierbar
- invertierte Logik
Extern:
- mehr Bauteile benötigt
+ Pullup frei dimensionierbar
@Simon K.
Meiner Meinung nach ist Deine Liste richtig (*) und komplett; mehr fällt
mir dazu auch nicht ein.
(*) bis auf "invertierte Logik", was Lars ja schon sagte.
Aber vielleicht meintest Du ja: man kann einen externen Widerstand als
Pull-Up oder Pull-Down beschalten und hat dann die frei Wahl bzgl. der
Logik.
Gruß Dietrich
@Dietrich. Ja so meinte ich das. Bei den internen Pullups hat man ja
nicht die Möglichkeit, zwischen Active-HIGH oder Active-LOW zu wählen.
-> invertierte Logik.
Kann man im Code natürlich umbiegen.
Interne pullups erhöhen die Verlustleistung der uC's, was bei hohen
Temperaturen problematisch werden kann (vor allem bei >40 I/Os kann das
einen Einfluss haben...)
Simon K. schrieb:> Kann man im Code natürlich umbiegen.
... und damit ist es nur ein sehr kleiner Vor- bzw. Nachteil.
Je nach Anwendung kann die Dimensionierbarkeit lebenswichtig sein, wenn
z.B. die Quelle Probleme mit so kleinen Strömen hat (Restströme oder
Kontaktprobleme) oder über längere Leitungen angeschlossen wird
(Störeinkopplung).
Gruß Dietrich
Mrc schrieb:> Interne pullups erhöhen die Verlustleistung der uC's
40 IOs mit je 30k internem pullup bei 5V: 33mW.
Einem uC in einem >40pinnigen Gehäuse hätte ich bisher ganz naiv
zugetraut, diese Leistung locker loszuwerden, bin aber auf Beispiele
gespannt, wo das ein Problem darstellt.
Pluspunkt für externe pull ups wäre noch, dass sie bereits zum Zeitpunkt
0 in Betrieb sind und nicht erst nach dem init des Controllers. Kann je
nach Anwendungsfall wichtig sein.
Mrc schrieb:> Interne pullups erhöhen die Verlustleistung der uC's, was bei hohen> Temperaturen problematisch werden kann (vor allem bei >40 I/Os kann das> einen Einfluss haben...)
Warum sollte die Verlustleistung steigen, wenn an einem unbenutzen Pin
ein Pull-up aktiviert ist?
Dort wo wirklich der Pin durch ein Signal runtergezogen wird, wird genau
diese Leitung als Kühlfläche dienen. Warum soll daraus ein thermisches
Problem entstehen.
Ich sagte ja nur, dass es die Verlustleistung des Controllers erhöht,
wenn (natürlich nur bei benutzten) Eingängen die internen Pullups
verwendet werden. Ja, es sind nur ~33mW, das sind aber schon rund 10%
der maximalen Verlustleistung (je nach Gehäuse). Wenn ich den Controler
nahe der maximal zulässigen Umgebungstemperatur betreibe kann das einen
Einfluss haben (muss aber nicht).
Bei ST zum Beispiel gibt es ja extra spezielle Formeln zur Berechnung
von low power Anwendungen im oberen Temperaturbereich...
Es wurde nach Unterschieden zwischen internem und externem Pullup
gefragt und ich habe etwas dazu gesagt. Weiter nichts. Zerfleischt mich
nicht gleich deswegen ;-)
Mrc schrieb:> Es wurde nach Unterschieden zwischen internem und externem Pullup> gefragt ....
Und genau darum ist nix mit inverser Logik!
Ein Pullup ist ein Pullup und bleibt ein Pullup.
Egal ob intern, oder extern.
Simon K. schrieb:> ich finde nirgends eine genaue Erklärung über externe und interne> Pullups bei einem xbeliebigen Atmega.
Eigentlich ist es ganz einfach. Die internen Pullups sind intern. Die
externen sind?
richtig!
Die internen sparen Geld. Kein zusätzlicher Widerstand den man lagern,
kaufen, löten, designen und verwalten muss. Und man kann den internen
auch beliebig ein- aus ausschalten.
Einfache Formel: Nehme immer die internen Pullups.
Ausnahme: Es funktioniert mit internen Pullups nicht (z.B. DS18B20).
Uwe K. schrieb:> Einfache Formel: Nehme immer die internen Pullups.
Das kann ich nicht unterschreiben.
In den meisten Fällen sind eher externe Pull-Up-Widerstände sinnvoll.
Du willst ja mit Pull-Up-Widerständen ein logisches High erzwingen, wenn
der Pin nicht angesteuert wird. Beim Einschalten sind aber die internen
Pull-Ups abgeschaltet und somit auch kein definierter Pegel am Pin.
Ein externer Pullup / Pulldown kostet keine 0,8 mm^2 Platz auf der
Platine. Was hindert daran einfach mal den/die Footprint(s) vorzusehen
und dann nicht zu bestücken ?
Simon K. schrieb:> Bei den internen Pullups hat man ja> nicht die Möglichkeit, zwischen Active-HIGH oder Active-LOW zu wählen.> -> invertierte Logik.
Und wieso sollte man das mit einem externen PullUp oder PullDown
Widerstand ändern können?
Die Logik verstehe ich nicht.
Der einzige Grund für externe PullUps und PullDowns sind definierte
Pegel beim Einschalten zu bekommen und ggf. den Arbeitspunkt der
vorgeschalteten Stufe einzustellen.
123 schrieb:> Ein externer Pullup / Pulldown kostet keine 0,8 mm^2 Platz auf der> Platine. Was hindert daran einfach mal den/die Footprint(s) vorzusehen> und dann nicht zu bestücken ?
Nee....
Für welche Eventualitäten willst du denn sonst noch Vorsorge treffen?
Ich glaube, man sollte die Sache pragmatisch angehen....
Da wo ein Pullup/Pulldown nötig ist, da macht man einen hin.
Kommt man mit dem internen aus, dann nimmt man den.
... schrieb:> Der einzige Grund für externe PullUps und PullDowns sind definierte> Pegel beim Einschalten zu bekommen und ggf. den Arbeitspunkt der> vorgeschalteten Stufe einzustellen.
Das mag für externe Peripherie gelten. Für Pins, bei denen der µC selbst
Wert auf einen definierten Pegel legt, kann er den Pull-up in der
Initialisierung aktivieren, bevor er irgendwelche Pin-gesteuerten
Funktionen freigibt.
GB schrieb:> Uwe K. schrieb:>> Einfache Formel: Nehme immer die internen Pullups.>> Das kann ich nicht unterschreiben.
Ich auch nicht. Deshalb habe ich eine Ausnahme beschrieben.
Also immer schön den kompletten Text lesen. ;-)
> In den meisten Fällen sind eher externe Pull-Up-Widerstände sinnvoll.> Du willst ja mit Pull-Up-Widerständen ein logisches High erzwingen, wenn> der Pin nicht angesteuert wird. Beim Einschalten sind aber die internen> Pull-Ups abgeschaltet und somit auch kein definierter Pegel am Pin.
Wenn das ein Problem ist, tritt natürlich die Ausnahme in Kraft.
Ulrich sagt das gleiche wie ich, nur mit anderen Worten:
> Da wo ein Pullup/Pulldown nötig ist, da macht man einen hin.> Kommt man mit dem internen aus, dann nimmt man den.
... schrieb:> Simon K. schrieb:>> Bei den internen Pullups hat man ja>> nicht die Möglichkeit, zwischen Active-HIGH oder Active-LOW zu wählen.>> -> invertierte Logik.>> Und wieso sollte man das mit einem externen PullUp oder PullDown> Widerstand ändern können?> Die Logik verstehe ich nicht.
Ich denke er meint es so:
Ein interner Pullup kann nur ein Pullup sein. Wenn ein Taster dran
hängt, ist beim betätigen eine 0 am Pin und wenn nicht gedrückt wird
eine 1 -> invertierte Logik.
Beim extenen Widerstand kann man wählen, man kann nämlich auch nen
pulldown nehmen, der dann ne 1 beim Drücken hat -> nichtinvertierte
Logik..