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
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
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
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
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
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?
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.
@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
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
ich habe bis jetzt immer variante 3 gewählt und hatte nie probleme.
@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?
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...
@ 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
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.
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
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
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
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.