Forum: Mikrocontroller und Digitale Elektronik unconnected pins


von Tina B. (tina)


Lesenswert?

Hallo,

eine kleine Frage: wenn alle Pins eines µControllers Pullups haben, 
reicht es dann, die Pins als Outputs zu konfigurieren und auf low zu 
setzen, oder kann es zusätzlich hilfreich oder gut sein, die Pins an GND 
anzuschließen?

Zu Begin sind die Pins alle als Inputs mit aktiviertem Pullup (intern) 
geschaltet.

Bei dem LPC2214 steht leider nur selten dran, dass ein interner Pullup 
vorhanden ist... P03 - P013,  P017 - P019, P023 - P030,  sind nicht 
verwendet. wie muss ich bie diesen Pins verfahren

http://www.keil.com/dd/docs/datashts/philips/lpc2212_2214.pdf


Tina

von Uhu U. (uhu)


Lesenswert?

Bei auf output geschalteten Pins sind die Pullup/downs ausgeschaltet.

Du kannst aber die Pins auf Input konfigurieren und mit dem Pullup/down 
auf einen bestimmten Zustand fixieren. Wichtig ist nur, daß unbenutzte 
Eingänge nicht elektrisch frei hängen und je nach Wetterlage 
Schaltvorgänge in der Peripherieelektronik des µC auslösen können.

von Tina B. (tina)


Lesenswert?

es wird aber wahrscheinlich die bessere praxis sein, die pins als output 
zu konfigurieren und auf low setzen, oder? Bei Inputs kann man doch 
immer Einstreuungen haben?

>Wichtig ist nur, daß unbenutzte Eingänge nicht elektrisch frei hängen

wenn ich sie als Eingänge schalte, dann mit Pullup auf VCC ziehen - also 
elektrisch gesehen auch an VCC legen?

Tina

von Uhu U. (uhu)


Lesenswert?

Der Pull-Widerstand leitet Einstreuungen ab. Wenn er das nicht mehr 
schafft, dann wird so viel Dreck eingestreut, daß die Schaltung wohl 
vorher mit längeren Antennen, als unbelegten Pins so viel Dreck 
einfängt, daß sie aus dem Takt kommt.

Einen auf output konfigurierten Pin solltest du natürlich auf low 
setzen. Ich weiß nicht, ob diese Methode besser ist, als die mit den 
gepullten Input-Pins.

> wenn ich sie als Eingänge schalte, dann mit Pullup auf VCC ziehen -
> also elektrisch gesehen auch an VCC legen?

Ich denke, das ist egal, wo die liegen - hauptsache, das Potential ist 
fest.

von Tina B. (tina)


Lesenswert?

gut, dann schalte ich sie als Input gegen GND mit dem internen Pullup, 
dann hab ich am Start oder bei Reset etc. keinen undefinierten Zustand 
der Pins... Ich dacht mit einem Pullup kann ich ein Signal nur fest auf 
VCC ziehen und für GNd benötige ich einen Pulldown Widerstand?

Ist es eigentlich völlig unkritisch so einen Eingang später als Output 
zu konfigurieren und auf low zu schalten, wenn dieser mit GNd verbunden 
ist?


Und wenn kein interner Pullup vorhanden ist, dann als Output und auf low 
setzen? oder auf Input und einen Pullup (VCC) oder Pulldown (GND) 
verwenden.

Tina

von Uhu U. (uhu)


Lesenswert?

Tina Berger wrote:
> Und wenn kein interner Pullup vorhanden ist, dann als Output und auf low
> setzen?

Genau - wenn der Hersteller nichts anderes vorschlägt.

von Tina B. (tina)


Lesenswert?

Noch eine kleine Frage:

aber mit einem internen Pullup kann ich den Input doch nur auf VCC 
ziehen und nicht auf GND, oder??

Tina

von Johannes M. (johnny-m)


Lesenswert?

Tina Berger wrote:
> aber mit einem internen Pullup kann ich den Input doch nur auf VCC
> ziehen und nicht auf GND, oder??
Ja und? Ist i.d.R. völlig egal, hauptsache am Pin herrscht ein 
definierter Pegel. Ob das GND oder VCC ist, spielt keine Rolle.

von Uhu U. (uhu)


Lesenswert?

Tina Berger wrote:
> Noch eine kleine Frage:
>
> aber mit einem internen Pullup kann ich den Input doch nur auf VCC
> ziehen und nicht auf GND, oder??
>
> Tina

Das hängt vom Prozessor ab. Der MSP430 z.B. hat beides.

(Damit kann man z.B. auch prüfen, ob ein Pin auf festem Potential liegt, 
oder offen ist. Ich habe das mal dazu benutzt, einen einzelnen Port zur 
Abfrage eines Dimmer-Schalters mit offener Mittelstellung zu benutzen.)

von Tina B. (tina)


Lesenswert?

jetzt muss ich nochmal nachfragen: wenn ein Pin keinen internen Pullup 
besitzt, dann als Output konfigurieren und auf low setzen - auch 
elektrisch mit der GND verbinden? Oder ist das auf low setzen nur 
software-technisch gemeint?

Tina

von Uhu U. (uhu)


Lesenswert?

Tina Berger wrote:
> ...dann als Output konfigurieren und auf low setzen - auch
> elektrisch mit der GND verbinden?

Nein, natürlich nicht. Der Pin bleibt einfach ohne Verbindung.

von Tina B. (tina)


Lesenswert?

>Das hängt vom Prozessor ab. Der MSP430 z.B. hat beides.

d.h. das wenn da steht (internal Pullup Resistor at Reset), dann muss 
ich den Input auf VCC ziehen und nicht auf GND? Bin etwas verwirrt, weil 
jetzt zwei verschiedenen Meinungen vorhanden sind.

Tina

von Uhu U. (uhu)


Lesenswert?

Tina Berger wrote:
> d.h. das wenn da steht (internal Pullup Resistor at Reset), dann muss
> ich den Input auf VCC ziehen und nicht auf GND?

Ich weiß jetzt nicht, aus welchem Kontext du das hast. Klingt danach, 
daß da beschrieben wird, wie der µC nach dem Reset eingestellt ist. Wenn 
das so ist, dann machst du im Programm einfach garnichts an den 
Einstellungen für das Portbit, das zu dem offenen Pin gehört und 
verbindest den Gehäuse-Pin mit garnichts.

Wie gesagt: Wichtig ist nur, daß die Auswerteelektronik für unbenutzte 
Input-Pins auf festem Potential liegt - egal welches und egal wie man 
das bewerkstelligt.

von Tina B. (tina)


Lesenswert?

>Klingt danach, daß da beschrieben wird, wie der µC nach dem Reset
> eingestellt ist.

ja, so verhält sich der µController zu Beginn

>verbindest den Gehäuse-Pin mit garnichts.

ich dachte ich verbinde diesen als Input Pin mit VCC, damit ein festes 
Potential am Eingang ist? Und nur bei einem als Output konfigurierten 
Pin mach ich elektrisch gesehen gar nichts (also unconnected)?

>> aber mit einem internen Pullup kann ich den Input doch nur auf VCC
>> ziehen und nicht auf GND, oder??
>Ja und? Ist i.d.R. völlig egal, hauptsache am Pin herrscht ein
>definierter Pegel. Ob das GND oder VCC ist, spielt keine Rolle.

das hab ich nicht ganz verstanden, ich dachte mit einem internen Pullup 
kann ich diesen Pin elektrisch gesehen nur gegen VCC ziehen und nicht 
gegen GND? Es ist ja kein interner Pulldown Widerstand installiert.

Tina

von Tina B. (tina)


Lesenswert?

einmal den LPC2214 ohne Pullups und den AT91RM9200 mit internen Pullups 
15kOhm...

atmel.com/dyn/resources/prod_documents/doc1768.pdf

Hier würde ich diese Pins als Inputs mit aktivierten Pullups lassen und 
elektrisch gesehen diese Pins gegen VCC schalten.


Tina

von Atmega8 A. (atmega8) Benutzerseite


Lesenswert?

@  Tina Berger (tina)
Du kannst dir mal das entsprechende Datenblatt deines µC durchlesen.

Du scheinst keine Ahnung von den Grundlagen zu haben, schnapp dir mal 
einen billigen µC und spiel ein bisschen mit ihm rum. Mach dir eine 
keine Testplatine, wo du PullUp's und PullDown's nachträglich noch 
anlöten kannst.

So ein Atmega hat nur PullUp's, die kannst du ein und aus schalten.

Eine deiner vorigen Aussagen zeigen dass du keine Ahnung von 
Elektrotechnik hast.
> " dann schalte ich sie als Input gegen GND mit dem internen Pullup"
Unbenutze Pins als Eingang zu definieren ist okay, sie aber dann auf GND 
zu legen und den internen PullUp zu aktivieren ist doch echt unsinnig.

Uhu Uhuhu hat das gut erklärt, nur solltest du mal ein Bildchen zeichnen 
oder sowas. Kann ja sein dass du das dann besser verstehst/siehst.

von Tina B. (tina)


Lesenswert?

>> " dann schalte ich sie als Input gegen GND mit dem internen Pullup"
>Unbenutze Pins als Eingang zu definieren ist okay, sie aber dann auf GND
>zu legen und den internen PullUp zu aktivieren ist doch echt unsinnig.

diese Idee stammt nicht von mir, ich würde diesen Pin gegen VCC schalten 
und nicht gegen GND....


Johannes M wrote:
>Tina Berger wrote:
>> aber mit einem internen Pullup kann ich den Input doch nur auf VCC
>> ziehen und nicht auf GND, oder??
>Ja und? Ist i.d.R. völlig egal, hauptsache am Pin herrscht ein
>definierter Pegel. Ob das GND oder VCC ist, spielt keine Rolle.

Tina

von Andreas K. (a-k)


Lesenswert?

Wenn man einen unbenutzten Port-Pin als High-Ausgang schaltet, riskiert 
man den Controller wenn man mit Messpitze oder Tastkopf mal daneben 
langt. Mit Pullup oder gegen GND hingegen nicht.

von Uhu U. (uhu)


Lesenswert?

> Unbenutze Pins als Eingang zu definieren ist okay, sie aber dann auf GND
> zu legen und den internen PullUp zu aktivieren ist doch echt unsinnig.

Wenn man das macht, dann fließt ständig ein kleiner Strom über den 
Pullup durch den Pin nach GND. Das will man aber üblicherweise nicht, 
denn der Controller soll ja nicht unnötig Strom verheizen.

Wenn man den Pin einfach offen läßt, dann leitet der Pullup 
Einstreuungen, die der offene Pinn eingefangen hat nach Vcc ab und die 
Auswerteelektronik merkt nichts davon. Diese Konstellation verheizt nur 
die Einstreuungen und das ist ja höchst erwünscht.

von Tina B. (tina)


Lesenswert?

>Wenn man einen unbenutzten Port-Pin als High-Ausgang schaltet, riskiert
>man den Controller wenn man mit Messpitze oder Tastkopf mal daneben
>langt. Mit Pullup oder gegen GND hingegen nicht.

genau - entweder als Output deklarieren und auf low setzen und 
elektrisch gesehen keine verbindung zu GND oder VCC...

aber wenn ich den internen Pullup verwenden möchte, muss dieser Pin als 
Eingang geschaltet werden und den würde ich dann gegen VCC schalten 
(elektrisch)...

Tina

von Uhu U. (uhu)


Lesenswert?

Tina Berger wrote:
> aber wenn ich den internen Pullup verwenden möchte, muss dieser Pin als
> Eingang geschaltet werden und den würde ich dann gegen VCC schalten
> (elektrisch)...

Wenn du den Pin auf Vcc legts, dann kannst du wieder mit den Prüfspitzen 
einen Kurzschluß machen - egal, ob mit Pullup, oder ohne.

Wenn du den Pin offen läßt und den Pullup aktivierst, dann hängt der Pin 
über den Pullup an Vcc. Wenn du dann mit der Prüfspitze daneben langst 
und den Pin aus Versehen mit GND verbindest, dann fließt der Strom in 
den Pin und über den Pullup nach Vcc. Der Pullup begrenzt dabei den 
Strom und es passiert nichts.

Du solltest dir das wirklich mal aufzeichenen!

von Atmega8 A. (atmega8) Benutzerseite


Lesenswert?

Okay Tina, du nimmst einfach einen Widerstand und lötest ihn mit dem 
einen Ende an den Pin. Mit dem anderen Ende lötest du ihn wohin du 
willst, es empfiehlt sich VCC.

Warum Vcc? Der Atmega8 kann 200mA zur Verfügung stellen, wenn du jetzt 
die (meinetwegen 5V) Spannung vom Pin nimmst belastest du den Atmega 
(sind dann weniger als 200mA die er noch zur Verfügung hat) und durch 
ihn fließt mehr Strom.

Also schaltest du den Widerstand von Vcc zum Pin,
dann fließt der Strom "Von VCC -> über den (internen/externen) 
Widerstand -> zur Logic"

Wenn du jetzt einen Fehler machst (oder der µC) und aus Versehen den Pin 
als Out definierst hast du auch keinen Ärger.

Wenn du ihn direkt gegen GND schaltest und den Pin high schaltest knallt 
es ein mal kräftig.

von Atmega8 A. (atmega8) Benutzerseite


Lesenswert?

Datenblatt Atmega8xxx.pdf auf Seite 49 ist ein schönes Beispiel.

http://www.atmel.com/dyn/resources/prod_documents/2486S.pdf

Mal anschaun :-)

von Andreas K. (a-k)


Lesenswert?

Seite 49 von 24...

von Tina B. (tina)


Lesenswert?

vielen dank für eure mühe...

ich glaub so langsam versteh ich die thematik besser... das mit dem oszi 
leuchtet mir ein, dadurch würde ich ja den internen pullup umgehen 
stromkreismäßig (wenn der Pin auf VCC liegen würde)... wenn er auf GND 
liegt ist der Stromkreis verbunden und es fließt Strom (unnütze 
Verbratung von Leistung)..

Tina

von Tina B. (tina)


Lesenswert?

>Seite 49 von 24...

hab die Zeichnung im richtigen Datenblatt vom Atmega8 auf Seite 49 
gefunden...

http://pdf1.alldatasheet.co.kr/datasheet-pdf/view/80247/ATMEL/ATMEGA8.html

Tina

von Atmega8 A. (atmega8) Benutzerseite


Lesenswert?

>Seite 49 von 24...

ups

von Tina B. (tina)


Lesenswert?

eine ganz nette ergänzung noch:

also wenn es sich um einen reinen Output-Pin handelt, kann dieser 
einfach unconnected gelassen werden, wenn es sich um einen reinen Input 
Pin handelt, wird dieser gegen GND geschaltet und wenn es sich um einen 
I/O Pin handelt muss ein Pullup / Pulldown installiert werden (am 
sichersten, da die Pins bei jedem Reset oder Einschaltvorgang zu Beginn 
als Input deklariert sind)..

Tina

von Spess53 (Gast)


Lesenswert?

Hi

Ihr schon beim Datenblatt seid, dann seht mal nach was dort über 
unbeschaltete Pins steht. Atmel 'empfiehlt' lediglich diese als Eingang 
auf einen bestimmten Pegel zu legen. Warum auch? Bisher hat hier auch 
noch keiner  erklären können, was da passieren könnte.
Zu den internen PullUps: Bei der Initialisierung ist noch alles klar. 
Aber wer von euch denkt bei einem 'out PortX' oder 'PortX=XY' daran, daß 
an dem Port PullUps eingeschaltet sind. Ich könnte wetten, daß bei einem 
längeren Programm zu mehr als 90%, die Initalisierungswerte 
überschrieben werden und die PullUps weg sind. Gerade bei C ist das 
wahrscheinlich unvermeidbar.
Externe PullUps oder PullDowns benutze ich nur bei Eingängen, die offen 
einen bestimmten Pegel haben sollen. Unbenutzte Pins bleiben als Eingang 
und werden einfach ignoriert. Das ganze funktioniert seit fast 10 Jahren 
unter sehr rauhen elektrischen/elektromagnetischen Umgebungen ohne 
Probleme.

MfG Spess

von Uhu U. (uhu)


Lesenswert?

@Spess53:

Schön daß endlich einer gefunden hat, der wieder Konfusion stiftet. War 
ja auch überfällig....

von Spess53 (Gast)


Lesenswert?

Hi

War die Konfusion nicht schon komplett?

MfG Spess

von Atmega8 A. (atmega8) Benutzerseite


Lesenswert?

@ Tina Berger (tina)
Du willst eine einfache Regel.
- OutPutPin: kein PullUp, keinPllDown

- InPutPin: PullUp
(Wenn interne PullUp's da sind nutze die,
 wenn interne PullDown's da sind kannst du anstatt der PullUp die 
PullDown aktivieren. Es geht nur um eingesichertes logisches Signal an 
dem Pin)
Ausgänge nie einfach auf Masse oder gegen Vcc legen, das macht man 
niemals.

von Uhu U. (uhu)


Lesenswert?

Spess53 wrote:
> War die Konfusion nicht schon komplett?

Wenn du gelesen hättest, was sie am Ende schrieb, würdest du jetzt nicht 
so eine doofe Frage stellen. Aber alles wissen und das auch noch 
besser...

von Spess53 (Gast)


Lesenswert?

Hi

Atmel schreibt:

Unconnected pins
If some pins are unused, it is recommended to ensure that these pins 
have a defined level. Even though most of the digital inputs are 
disabled in the deep sleep modes as described above, floating inputs 
should be avoided to reduce current consumption in all other modes where 
the digital inputs are enabled (Reset, Active mode and Idle mode). The 
simplest method to ensure a defined level of an unused pin, is to enable 
the internal pullup. In this case, the pullup will be disabled during 
reset. If low power consumption during reset is important, it is 
recommended to use an external pullup or pulldown. Connecting unused 
pins directly to VCC or GND is not recommended, since this may cause 
excessive currents if the pin is accidentally configured as an output.

und dem schliesse ich mich an.

MfG Spess

von Uhu U. (uhu)


Lesenswert?

Na so weit waren wir auch schon...

von Spess53 (Gast)


Lesenswert?

Hi

Falsch. Bis auf solche nebulösen Begründungen wie:

' Wichtig ist nur, daß unbenutzte
Eingänge nicht elektrisch frei hängen und je nach Wetterlage
Schaltvorgänge in der Peripherieelektronik des µC auslösen können.'

ist bis jetzt nichts gekommen.

Ich weiss, daß, wenn sich 15cm von einem ATMega128 eine PWM-Endstufe mit 
80KHz und Spitzenströmen bis zu 150A befindet, offene Eingänge ohne 
PullUp oder PullDown keinerlei Einfluss haben. So, und jetzt bin ich auf 
andere Erfahrungsberichte gespannt.

MfG Spess

von Uhu U. (uhu)


Lesenswert?

> Ich weiss, daß, wenn sich 15cm von einem ATMega128 eine PWM-Endstufe mit
> 80KHz und Spitzenströmen bis zu 150A befindet, offene Eingänge ohne
> PullUp oder PullDown keinerlei Einfluss haben.

Ach, und warum empfielt dann Amtel, unbenutze Pins auf ein definiertes 
Potential zu legen?

Troll doch woanders.

von Spess53 (Gast)


Lesenswert?

Hi

Das Schlüsselwort ist 'empfielt'. Also nicht zwingend notwendig.

MfG Spess

P.S. Das mit dem Troll: 'Getroffene H....'

von Εrnst B. (ernst)


Lesenswert?

@Spess: Thema verfehlt.

Es geht nicht darum, dass der µC Abstürzt/Kaputt geht/Blödsinn macht, 
wenn man unbenutzte Pins "offen" lässt. Dafür sorgen schon die 
Clamping-Dioden am Pin.

Es geht darum dass der µC mehr Strom verbraucht, wenn man Input-Pins 
ohne definierten Pegel floaten lässt.

Und das ist bei deiner 150A PWM wohl relativ wurscht, oder?

von Spess53 (Gast)


Lesenswert?

Hi

@Ernst Ich bin durchaus noch lernfähig. Würdest du das bitte mal 
begünden.

MfG Spess

von Εrnst B. (ernst)


Angehängte Dateien:

Lesenswert?

Angehängt ein Beispielbild aus dem CMOS-Wikipedia-Artikel.

Jetzt überleg, was passiert wenn der Eingangspin nicht an GND oder Vdd 
hängt, sondern ungünstig dazwischen.

von Atmega8 A. (atmega8) Benutzerseite


Lesenswert?

@ Spess53 (Gast)
Klar hast du mit deiner Aussage recht, aber es wär gut wenn man Ihr das 
möglichst klar und simpel erklärt.

Sie wird sich die Datenblätter schon mal zu Gemüte führen.

Etwas aus meiner Erfahrung:
- Wenn du einen Logik-Eingang mit einer Spannung von 1/2 Vcc ansteuerst, 
dann kippt das Gate nicht nach links(GND) oder rechts(Vcc) sondern 
verhält sich irgendwie wie ein Widerstand. Hab das mal mit einem 4000er 
Chip mit 6 Invertern probiert. Irgendwie wird der Chip bei dieser 
Konfiguration heiß.

lg
P.S.:  Spess53 du bist doch öfter im Forum, warum meldest du dich nicht 
einfach an? Ist schon gut zu sehen wie viele Beiträge jemand verfasst 
hat und es ist auch einfacher dir eine Mail zu schicken ohne dass du mir 
mit kryptischen Verschlüsselungen deine eMail-Adresse verraten musst.

von Atmega8 A. (atmega8) Benutzerseite


Lesenswert?

Hey Ernst, genau so meinte ich das :-)

von Tina B. (tina)


Lesenswert?

d.h. wenn ich nicht alle unconnected Pins als Input mit einem Pullup 
gegen VCC schalte macht das nichts - signaltechnisch bezüglich 
einstreuungen?

D.h. wenn ich da Einstreuungen erhalte, dann sind gewaltige andere 
Fehler auf der Platine vorhandne, wo mir dann die Pullups auch nichts 
mehr bringen.

Tina

von Spess53 (Gast)


Lesenswert?

Hi

@Ernst In der Beziehung hast du natürlich Recht. Nur entspricht das 
nicht einem µC-Eingang. Wenn ich es mit Logic-ICs zu tun habe gehe ich 
natürlich ganz anders heran. Da müssen nicht benutzte Eingänge auf einen 
bestimmten Pegel gelegt werden.

@ Atmega8 Atmega8
Dir verrate ich es: Spess53@aol.com

aber bitte nicht weitersagen.

MfG Spess

von Spess53 (Gast)


Lesenswert?

Hi

@Tina Ich denke, du hast das grundlegend erfasst. Entschuldige bitte die 
Grabenkämpfe.

MfG Spess

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.