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
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.
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
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.
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
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.
Noch eine kleine Frage: aber mit einem internen Pullup kann ich den Input doch nur auf VCC ziehen und nicht auf GND, oder?? Tina
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 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.)
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
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.
>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
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.
>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
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
@ 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.
>> " 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
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.
> 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.
>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
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!
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.
Datenblatt Atmega8xxx.pdf auf Seite 49 ist ein schönes Beispiel. http://www.atmel.com/dyn/resources/prod_documents/2486S.pdf Mal anschaun :-)
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
>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
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
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
@Spess53: Schön daß endlich einer gefunden hat, der wieder Konfusion stiftet. War ja auch überfällig....
@ 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.
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...
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
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
> 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.
Hi Das Schlüsselwort ist 'empfielt'. Also nicht zwingend notwendig. MfG Spess P.S. Das mit dem Troll: 'Getroffene H....'
@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?
Hi @Ernst Ich bin durchaus noch lernfähig. Würdest du das bitte mal begünden. MfG Spess
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.
@ 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.
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
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
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.