www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Warum keine undefinierten Pins?


Autor: Jörg Günzel (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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...
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

Autor: Olaf (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Jörg Günzel (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: ka-long (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Edgar Renner (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Alex (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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?

Autor: Thomas Burkhardt (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Jörg Günzel (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Hauke Radtki (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
am sinnvollsten ist glaub ich die ports als ausgang zu schalten, und die
pullups zu deaktivieren ... verbraucht am wenigsten strom, und wir
wollen doch alles stromsparen :p

Autor: hajde luje (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
ich habe bis jetzt immer variante 3 gewählt und hatte nie probleme.

Autor: Unbekannter (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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?

Autor: Uwe Nagel (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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...

Autor: dds5 (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@ Uwe Nagel
Diese Aussage trifft zumindest für die PIC18F Typen nicht zu. Bei
diesen wird der zugehörige Pullup-Wid. automatisch abgeschaltet wenn
man einen Pin als Ausgang definiert.

Gruß    Dieter

Autor: Uwe Nagel (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: gfunk (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: oldmax (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: gfunk (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ok, das ist richtig. War mir nur nicht sicher ob ich den internen 
Pull-Up zusätzlich aktivieren sollte. Vermutlich macht es keinen 
Unterschied.

Gruß + Danke

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.