Hallo, wie sollte man die Ports eines Mikrocontrollers setzen wenn diese nicht beschaltet sind, bzw. auf Masse liegen?
Bei unbeschalteten Pins möglichst noch die Pull-Ups aktivieren
>Bei unbeschalteten Pins möglichst noch die Pull-Ups aktivieren Weil? Ich lasse die I/Os als Eingang, wenn ich sie nicht brauch - so wie es bei den PICs standardmäßig definiert ist.
>>Bei unbeschalteten Pins möglichst noch die Pull-Ups aktivieren >Weil? Weil sonst undefinierter Pegel anliegt. Macht man bei CMOS-Eingängen grundsätzlich so, um Schwingereien vorzubeigen.
Hi Lest doch einfach mal die Datenblätter: 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 pull-up. In this case, the pull-up will be disabled during reset. If low power consumption during reset is important, it is recommended to use an external pull-up or pull-down. 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. MfG Spess
>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. gut, und wenn der Pin richtig konfiguriert ist? Dann müsste eine GND Verbindung doch sparsamer sein, die Pullups ziehen doch Strom (was sich bei Batteriegeräten bemerkbar machen dürfte).
Johannes Stratmann wrote: > gut, und wenn der Pin richtig konfiguriert ist? Dann müsste eine GND > Verbindung doch sparsamer sein, die Pullups ziehen doch Strom (was sich > bei Batteriegeräten bemerkbar machen dürfte). Nö. Wo soll der Strom denn hinfließen bei einem hochohmigen Eingang?
stimmt auch wieder. Und das 'accidentally configured as an output' bezieht sich dann vermutlich auf die Resetphase, oder?
Johannes Stratmann wrote: > stimmt auch wieder. Und das 'accidentally configured as an output' > bezieht sich dann vermutlich auf die Resetphase, oder? Nö. Ich kenne keinen µC, bei dem im Reset-Zustand die I/O-Pins als Ausgänge konfiguriert sind (*). Es geht hier schon darum, dass der Programmierer durch eine unbedachte Zuweisung einen Portpin abschießen kann. (*) abgesehen von Programmieranschlüssen, bei AVR z.B. MISO.
"accidentally configured as an output" heißt, dass es schlecht ist, einen Pin, den du von außen auf Masse verdrahtest, dann später versehentlich als Ausgang zu konfigurieren, und dann einzuschalten (=Kurzschluss) Türlich kannstu auch die unbenutzen Pins fest nach Masse verdrahten (oder Vcc), nur dann bitte nicht vergessen, sie als Eingang zu benutzen! Während der Resetphase sind die Pins automatisch alle als Eingänge konfiguriert, um eben solchen Problemen vorzubeugen.
Hi Bitte beachten: '..it is recommended to..'. Also auch lt. Atmel nicht zwingend notwendig. Das entspricht auch meiner, fast 10 jährigen Erfahrung mit AVRs. Für den normalen Betrieb, also ohne Sleep-Mode u.ä. unbeschaltete Pin einfach nicht beachten. Für übervorsichtige: externer Pullup oder Pulldown. Keinesfalls hart auf Masse oder VCC legen. Interne Pullups sind nicht sicher, da sie unbeabsichtigt softwaremässig abgeschaltet werden können. MfG Spess
> Interne Pullups sind nicht sicher, da sie unbeabsichtigt softwaremässig
abgeschaltet werden können.
Das ist doch Quatsch. Wir wollen mal unterstellen, dass der
Programmierer sein Handwerk versteht.
Im Übrigen ist es auch nur eine Empfehlung, sich den Hintern
abzuwischen, müssen tut man es nicht. Es hat aber immense Vorteile.
Hi >Das ist doch Quatsch. Wir wollen mal unterstellen, dass der >Programmierer sein Handwerk versteht. Ich gehe aber davon aus, das hier eine ganze Reihe Leute unterwegs sind, die erst ihr Handwerk lernen. Zweitens glaube ich nicht, wenn in C ein PortX=Y geschrieben wird, sich der Compiler darum kümmert, das dort ein paar PullUps erhalten werden müssen. MfG Spess
> Zweitens glaube ich nicht, wenn in C ein PortX=Y geschrieben wird, sich der
Compiler darum kümmert, das dort ein paar PullUps erhalten werden müssen.
Da gebe ich Dir recht. Nicht jeder Controller hat Pullups. Daher
empfiehlt sich in dem Fall, wo es keine Pullups gibt, unbenutzte Ports
als Ausgang zu konfigurieren.
Also ich würde die Ports auch immer als Ausgang, Low programmieren und im Layout natürlich offen lassen. Gründe: Ausgang ist Eingang auf jeden Fall vorzuziehen, da (weiss eigentlich jeder, der schonmal mit Digitalelektronik gearbeitet hat) man GRUNDSÄTZLICH keine Eingänge unbeschaltet lässt. Also: Wenn Eingang, dann alle auf Masse legen. ABER: bei jedem Lötfehler hat man dann doch einen unbeschalteten Eingang, über den man sich herrlich Störungen einfängt. Also: Als Ausgang programmieren, dann erledigt sich das "offener Eingang" Problem von selbst. LOW, da die Lowside-Transistoren (nmos) robuster sind als die Highside-Transistoren und GND meist die niederohmigste Rail auf dem Controllerchip ist -> ebenfalls robust. Weiterhin: wir alle machen Fehler - wenn man z.B. beim Maskieren eines Portread eine falsche Bitmaske hat, führt ein Eingang zu sporadischen Fehlern, ein Ausgang dagegen nicht.
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.