Forum: Mikrocontroller und Digitale Elektronik Wie Ports setzen wenn nicht beschaltet.


von Frank (Gast)


Lesenswert?

Hallo,

wie sollte man die Ports eines Mikrocontrollers setzen wenn diese nicht 
beschaltet sind, bzw. auf Masse liegen?

von Der Dude (Gast)


Lesenswert?

als Eingang natürlich

von Stephan Hochberger (Gast)


Lesenswert?

Bei unbeschalteten Pins möglichst noch die Pull-Ups aktivieren

von Mark. K (Gast)


Lesenswert?

>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.

von Der Dude (Gast)


Lesenswert?

>>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.

von Spess53 (Gast)


Lesenswert?

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

von Jojo S. (Gast)


Lesenswert?

>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).

von Johannes M. (johnny-m)


Lesenswert?

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?

von Jojo S. (Gast)


Lesenswert?

stimmt auch wieder. Und das 'accidentally configured as an output' 
bezieht sich dann vermutlich auf die Resetphase, oder?

von Johannes M. (johnny-m)


Lesenswert?

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.

von Sven P. (Gast)


Lesenswert?

"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.

von Spess53 (Gast)


Lesenswert?

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

von Entwickler (Gast)


Lesenswert?

> 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.

von Spess53 (Gast)


Lesenswert?

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

von Entwickler (Gast)


Lesenswert?

> 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.

von C. S. (cees)


Lesenswert?

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
Noch kein Account? Hier anmelden.