Warum keine undefinierten Pins?

Gast #173353
Lesenswert?

Hallo,
ich habe schon oft und aus den unterschiedlichsten Quellen gehört, daß
unbenutzte Pins eines µCs (speziell in meinem Fall ATMegas) durch die
Harware auf ein bestimmtes Potential gelegt werden sollen,
stellvertretend hierzu:
http://www.mikrocontroller.net/forum/read-1-168211.html#168268
Ich verstehe aber den Grund dafür nicht. Beim Reset-Pin oder nicht
ausgeschaltete Interrupts kann natürlich eine von außen einstreuende
Störung einen fatalen Einfluß haben, aber was kann bei einfachen
I/O-Pins, deren Zustand überhaupt nicht abgefragt wird, passieren?
Gruß
Jörg
Gast #173354
Lesenswert?

Es sollte auch ausreichen einen unbenutzten Pins als Ausgang zu
schalten.

Ein unbenutzter Pin als Eingang ist sehr hochohmig. Er koennte sich
schnell etwas einfangen. (z.B den naechsten Mittelwellensender)
Im einfachsten Fall bedeutet das nur das deine Schaltung unter
umstaenden deutlich mehr Strom verbraucht als sie muesste. Im
schlimmsten Fall zuendet aber der Thyristor am eingang (latch up) und
dein IC entloetet sich selber. .-)

Olaf
Gast #173355
Lesenswert?

Danke!
Heißt das, es reicht, direkt am Anfang des Programms alle unbenutzten
Pins als Ausgang zu schalten, weil in der kurzen Zeit zwischen Start
des µCs und der Festlegung als Ausgangs-Pins (ist das in diesem
Zeitraum dann Zufall, welchen Status die Pins haben?) kein Schaden
angerichtet
werden kann?
Jörg
Gast #173356
Lesenswert?

Hi,

Man kann auch einfach die Pullups/Pulldowns aktivieren.

LatchUp sollte nur durch ESD auftreten, also z.B. wenn Du Deine
Schaltung berührst. Viele neue uC haben aber sowieso Schutzdioden am
Eingang.

Normalerweise geht ein hochohmiger Eingang schnell auf 1 und jittert
wie sau. Das kann durchaus auch Deinen uC durcheinander bringen.

Gruß ka-long
Gast #173357
Lesenswert?

Unbeschaltete PINs können die Störfestigkeit deiner Schaltung
verringern. Bei Logikbausteinen, können sogar Schwingungen erzeugt
werden, die bis in den GHz-Bereich hinauf reichen. Fatalerweise sind
diese Störungen auch von dem PCB-Layout, Leitungführung usw. abhängig.
Es entstehen, wenn man Pech hat unangenehme und schwer behebbare
Fehlfunktionen und EDS/EMV-Probleme.

Ich meine: Es ist ein kleiner Aufwand einen nichtbenutzen Input auf GND
oder VCC zu schalten; es ist nicht mal ein Bauteil, sonder nur eine
elektrische Verbingung notwendig.

Grüße
Gast #173358
Lesenswert?

Wäre es aber nicht gerade für Anfänger sinnvoller, die Pins über einen
Widerstand gegen Masse/Vcc zu legen?

Wie schnell ist es einmal passiert, und man hat beim Basteln
(Programmieren) einen Pin aus Versehen als Ausgang definiert. Wenn
dieser dann meinetwegen H-Pegel hat und der Pin auf Masse liegt, war es
das für den Controller (Kurzschluß).

Meinungen?
Gast #173359
Lesenswert?

Hi Alex,

da hast du vollkommen recht :)
Das niederohmige Verbinden ist in dem Fall durchaus riskant aufgrund
der eben von dir beschriebenen Problematik.

Ich halte nur hochohmige Eingänge für Mist, wenn der µC also interne
Pullups hat, die aktivieren und gut ist.
Gast #173360
Lesenswert?

@alle
Also habe ich das jetzt richtig verstanden?
Die folgenden 3 Möglichkeiten sind gleichwertig und verhindern
Störeinflüsse:
1. Nicht benutzte Pins per Hardware auf VCC/GND (besser über
Widerstand, wegen Kurzschlußgefahr) legen und als Eingang definieren
2. Interne Pulldowns/Pullups aktivieren
3. Pins als Ausgang schalten
Wobei bei den letzten beiden Optionen die Zeit bis der Controller diese
Befehle abgearbeitet hat irrelevant ist (s. mein 2. Posting im Thread).

Nur die Pins dauerhaft als unbeschalteten Eingang zu definieren, birgt
die Gefahr, daß diese sich Störstrahlung von außen einfangen.

Gruß
Jörg
Gast #173363
Lesenswert?

@Hauke Radtki:

> am sinnvollsten ist glaub ich die ports als ausgang zu schalten,
> und die pullups zu deaktivieren ... verbraucht am wenigsten strom

Aha. Und warum verbraucht ein interner Pullup mehr Strom als ein
offener Ausgang?

Kannst Du dafür eine schlüssige Theorie liefern und Deine Theorie durch
Messungen untermauern? Oder hast Du einfach mal etwas behauptet ohne es
wirklich zu wissen?
Gast #173364
Lesenswert?

Den Port als Ausgang definieren und gleichzeitig Pullups zu aktivieren
dürfte speziell bei den AVR's nicht gehen. Bei PIC's ist das anders,
da kann man Pullups aktivieren und 0-Pegel ausgeben. Da fliesst dann
der Strom, den wir alle sparen wollen...
Gast #173366
Lesenswert?

Ok, schliesse mich an. Das ist wohl bei allen PICs so. Ich dachte hier
an den 16F84, bei dem es nur ein einziges Bit zum Einschalten der
Pullups an PortB gibt. Aber da wird der Pullup wirklich individuell in
Abhängigkeit vom TRISB-Register abgeschaltet. Das war mir im Datenblatt
noch nie aufgefallen.
Gast #3095750
Lesenswert?

Hallo zusammen,
ich hole den Beitrag mal wieder hoch, weil mir gefällt dass hier 
systematisch an eine viel diskutierte Frage gegangen wird.
Vermutlich gibt es zu dem Thema so viele Meinungen wie µC-Varianten.

Einig bin ich mit den weiter oben genannten 3 Möglichkeiten, unbenutzte 
Pins zu beschalten.

Was mache ich in der Software wenn das Leiterplatten-Design bereits 
feststeht, und dort an jedem ungenutzen Pin ein externer Pull-Up an Vcc 
hängt?
a) Die Pins als Eingang schalten und den internen Pull-Up zusätzlich 
aktivieren
b) oder besser nur so als Eingang schalten ohne internen Pull-Up, weil 
extern ja schon vorhanden
c) als Ausgang beschalten? In diesem Fall High?

Beste Grüße,
gfunk
Gast #3095787
Lesenswert?

Hi
Auch wenn du eine Uroma aus dem Keller holst, eine kurze Antwort: Es ist 
doch alles klar beschrieben. Ob interner Pullup oder externer, beide 
binden den sonst hochohmigen und äußerst sensiblen Eingang an ein 
Potential.
Gruß oldmax

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren