Forum: Mikrocontroller und Digitale Elektronik Überzählige Pins


von Etrick (Gast)


Lesenswert?

Hallo,

ich überlege gerade was ich bei AVRs am besten mit nichtbenutzten Pins 
mache:

-nichts
-PullUp Widerstand aktivieren
-mit anderen Ein/Ausgängen verbinden
-auf Masse legen

Was ist am unproblematischsten?

Gruß

Achim

von Der Gast -1 (Gast)


Lesenswert?

Also wenn du die internen Pull-Ups aktivierst, bist du auf der sicheren 
Seite.

von spess53 (Gast)


Lesenswert?

Hi

>Was ist am unproblematischsten?

>-nichts

MfG Spess

von Andreas K. (derandi)


Lesenswert?

Ich persönlich würde ja zum aktivieren des "Pullup-Widerstandes" 
tendieren, "nichts" ist komplett verkehrt und bei "miteinander-" bzw. 
"Masse-Verbindung" kann man leicht mal Kurzschlüsse Produzieren.

von spess53 (Gast)


Lesenswert?

Hi

> "nichts" ist komplett verkehrt

Dafür würde ich gern mal eine stichhaltige Begründung hören.

MfG Spess

von avr (Gast)


Lesenswert?

Also Atmel sagt (bzw.schreibt) dazu :
1
Unconnected pins
2
 If some pins are unused, it is recommended to ensure that these pins have a defined level. Even
3
though most of the digital inputs are disabled in the deep sleep modes as described above, floating
4
inputs should be avoided to reduce current consumption in all other modes where the digital
5
inputs are enabled (Reset, Active mode and Idle mode).
6
The simplest method to ensure a defined level of an unused pin, is to enable the internal pull-up.
7
In this case, the pull-up will be disabled during reset. If low power consumption during reset is
8
important, it is recommended to use an external pull-up or pull-down. Connecting unused pins
9
directly to VCC or GND is not recommended, since this may cause excessive currents if the pin is
10
accidentally configured as an output.

Hier vom Mega8 unter I/O-Ports.

Im "Normalfall" ist PullUp intern wohl das beste.

avr

von spess53 (Gast)


Lesenswert?

Hi

Also für stinknormalen Betrieb nicht zwingend notwendig. Oder lese ich 
das falsch?

MfG Spess

von avr (Gast)


Lesenswert?

@Spess
Sagen wir so: Es ist nicht nötig, aber besser.

Die "leeren" Pins die nach Reset bereits Eingänge sind
mit PullUp zu versehen ist wohl meistens das Einfügen
von ein paar "1" in der Configuration. Kein zusätzlicher
Speicher- und Zeitbedarf ;)

avr

von spess53 (Gast)


Lesenswert?

Hi

>@Spess
>Sagen wir so: Es ist nicht nötig, aber besser.

Gut. Sind wir uns erstmal darüber einig, das nicht konfigurierte offene 
Pins nicht zur Zerstörung oder ,mit Ausnahme der o.g. Stromsparmodi, zu 
Fehlfunktionen führen. Das wurde hier auch schon behauptet.

>Kein zusätzlicher Speicher- und Zeitbedarf ;)

Als notorischer Assemblerprogrammierer: Stimmt nicht. Aber ich würde es 
als irrelavant betrachten.

Es gibt hier einige Standardtmeinungen, oder schon fast Dogmen, die 
meiner fast 12-jährigen Erfahrung mit AVRs widersprechen. Und da ich 
etwas nonkonformistisch veranlagt bin, muss ich halt meinen Senf 
dazugeben.

MfG Spess

von avr (Gast)


Lesenswert?

@Spess

Da kann ich die Resetbeschaltung (mit R und C) nennen.
Ist nur in Sonderfällen nötig, aber (fast) jeder schreit danach;)

avr

von spess53 (Gast)


Lesenswert?

Hi

>@Spess

>Da kann ich die Resetbeschaltung (mit R und C) nennen.
>Ist nur in Sonderfällen nötig, aber (fast) jeder schreit danach;)

Zum Bleistift. Ich bekomme auch eine sichere Tastenabfrage ohne Timer 
hin.

MfG Spess

von alter, weiser Mann (Gast)


Lesenswert?

> Standardtmeinungen
Wow, die Version von Standard ist mir neu. ;-)

Im übrigen ist das Thema durch, da die Antwort ja im Datenblatt steht.

von Etrick (Gast)


Lesenswert?

Hi,

hab ich doch noch eine Debatte ausgelöst...
Bei meine Versionen  3 und 4 besteht wohl bei einem Irrtum 
Kurzscghlussgefahr, also werde ich meistens mit PullUp arbeiten und wenn 
es zu viele Pins sind, bei denen ich den Registernamen suchen muss lass 
ich vllt. offen.

Danke...

von Ben _. (burning_silicon)


Lesenswert?

ich definiere unbelegte pins immer als digitalen ausgang und lass sie 
auf der platine offen. sorgt auch für einen stabilen pegel da dran.

von Bensch (Gast)


Lesenswert?

> Gut. Sind wir uns erstmal darüber einig, das nicht konfigurierte offene
Pins nicht zur Zerstörung oder ,mit Ausnahme der o.g. Stromsparmodi, zu
Fehlfunktionen führen.

Nein, da sind wir uns NICHT einig. Offene Eingänge können sich alles 
mögliche einfangen. Also, als Eingang mit PullUp oder Ausgang 
definieren- alles andere ist Pfusch und Bastelei.

von spess53 (Gast)


Lesenswert?

Hi

>Nein, da sind wir uns NICHT einig. Offene Eingänge können sich alles
>mögliche einfangen. Also, als Eingang mit PullUp oder Ausgang
>definieren- alles andere ist Pfusch und Bastelei.

Das solltest erstmal ATMEL erklären. In den AppNotes-Programmen habe ich 
das bisher jedenfalls noch nicht gefunden.

MfG Spess

von Markus F. (5volt) Benutzerseite


Lesenswert?

Ich empfehle, die PullUps an nicht benötigten Pins zu aktivieren.
Ich hatte z.B. mal das Problem, dass ein ATTiny25 mit einem 32,768kHz 
Uhrenquarz ca. 500µA gebraucht hat. Für Dauerbetrieb mit Batterien ist 
das zu viel.
Dann habe ich mal an allen Pins die PullUps aktiviert. Na bitte, der 
Stromverbrauch ist auf ca. 60µA gesunken.
Die Pins einfach offen zu lassen scheint also nicht die beste Lösung zu 
sein.

von Peter R. (pnu)


Lesenswert?

Offene Eingänge können bei C-MOS-Technik folgendes Problem haben: Durch 
kleinste Kriechströme können sich die Inverter auf "Mittelstellung" 
einstellen, wie z.B. bei einem mit 1 MOhm von Ausgang auf Eingang 
rückgekoppelter Inverter. In diesem Arbeitspunkt arbeiten aber die 
beiden Fet's mit maximalem Ruhestrom. Will man geringen Ruhestrom haben, 
empfiehlt sich also pullup, oder, wahrscheinlich noch besser, ein 
Als-Ausgang-einstellen und auf lo oder hi bringen.

von Bensch (Gast)


Lesenswert?

> Das solltest erstmal ATMEL erklären. In den AppNotes-Programmen habe ich
das bisher jedenfalls noch nicht gefunden.

Das wissen die ganz sicher, halten es aber wohl nicht für nötig, extra 
auf Selbstverständlichkeiten hinzuweisen.
Ich meine, es aber irgendwo in einem Atmel-Datenblatt auch gelesen zu 
haben.

von Karl Arsch von der Rennbahn (Gast)


Lesenswert?

Da muss man doch nun wirklich nicht lange nachdenken um festzustellen, 
dass undefiniert eingestellte Potentiale in einer Schaltung an keiner 
Stelle etwas verloren haben. Irgendwelche App-Notes Programme sind nicht 
das Maß der Dinge; Manchmal hilft es seinen eigenen Kopf zu benutzen.

von Udo R. S. (Gast)


Lesenswert?

Hallo Spess,
die Frage war eindeutig:

>Was ist am unproblematischsten?

Deine Antort darauf:
>-nichts

Das ist ja wohl Unsinn. Es ist wie es das Datenblat beschreibt eindeutig 
am unproblematischsten wenn man die internen Pullups aktiviert. 
Ansonsten gibt es diverse schon beschriebene Situationen (wenig Strom, 
etc) wo es problematisch werden kann.
Damit ist nicht gemeint, daß es zwingend Probleme geben muss.

Heisst für Dich nonkonformistisch daß Du immer alles anders machen musst 
wie die Mehrheit, dann weiterhin viel Spass, dann fährst Du Ski, Fahrrad 
oder Moped ohne Helm, Auto ohne Sicherheitsgurt, löschst brennendes Fett 
mit Wasser und so weiter. Ich wünsche Dir dann ein interessantes Leben 
:-))

Manchmal hat die Mehrheit sogar recht.

Gruß, Udo

von Simon K. (simon) Benutzerseite


Lesenswert?

Wieso? Für mich als Programmierer ist es doch am unproblematischsten, 
wenn ich gar nichts mache. Stimmt doch! ;)

von spess53 (Gast)


Lesenswert?

Hi

>Deine Antort darauf:
>>-nichts

>Das ist ja wohl Unsinn. Es ist wie es das Datenblat beschreibt eindeutig
>am unproblematischsten wenn man die internen Pullups aktiviert.

Ganz einfach, das entspricht meiner, mittlerweile 12-jährigen, Erfahrung 
mit AVRs. Und da Atmel lediglich 'recommended' schreibt und nichts 
zwingend vorschreibt, sehe ich keine Veranlassung diese Erfahrung über 
den Haufen zu werfen.

MfG Spess

von Andreas K. (derandi)


Lesenswert?

spess53 schrieb:
> Ganz einfach, das entspricht meiner, mittlerweile 12-jährigen, Erfahrung
> mit AVRs. Und da Atmel lediglich 'recommended' schreibt und nichts
> zwingend vorschreibt, sehe ich keine Veranlassung diese Erfahrung über
> den Haufen zu werfen.
>
> MfG Spess

Meine zweijährige Erfahrung spricht aber was anderes, ich hatte in einer 
großen LED-Uhr zu Entwicklungs-zeiten den INT0-Pin in der Luft hängen 
und zu Debugzwecken einen Interrupt dafür programmiert, der mit diverse 
Variablen aus dem Programm ausgegeben hat.
Um den Interrupt auszulösen hat mir ein Stücken Draht gereicht, das hat 
auch prima funktioniert, solange bis die Anzeige per PWM gedimmt habe, 
die hat derart viel gestört das mir ständig dieser Interrupt ausgelöst 
wurde.
Nachdem diese FET-Eingänge sehr hochohmig sind kriegt man da auch sehr 
leicht kapazitiv die nötige Schaltspannung eingekoppelt um scheinbar 
leere Eingänge zum Schalten zu bewegen.

Ich sehe keinen Grund darin derartig versteckte und nicht immer 
nachvollziehbare Fehler suchen zu müssen wenn es reicht die Pullups 
einzuschalten.

von spess53 (Gast)


Lesenswert?

Hi

>Um den Interrupt auszulösen hat mir ein Stücken Draht gereicht, das hat
>auch prima funktioniert, solange bis die Anzeige per PWM gedimmt habe,
>die hat derart viel gestört das mir ständig dieser Interrupt ausgelöst
>wurde.

Meine Aussage bezieht sich auf unbenutzte Pins. Ein aktiviertes 
INT-Pin zählt da nicht dazu.

MfG Spess

von avr (Gast)


Lesenswert?

Also mir ist noch kein Atmel kaputgegangen weil ein
unbenutzter Pin unkonfiguriert war (also Eingang ohne PullUp).
Das schreibt auch Atmel so.
Der Strom ist jedoch höher als bei eingeschaltetem PullUp.
Das schreibt Atmel ebenfalls und kann ich auch bestätigen.

=> Ein "unbenutzer" Pin ohne definiertem Pegel schadet
nur!! der Stromaufnahme, nicht!! der Funktion und nicht!! dem µC!

Ein Setzen als Eingang mit PullUps ist daher ein Kann (evtl. Soll)
aber kein Muss.

Ein Setzen als Ausgang unnötig (und evtl. schädlich
bei Schaltungserweiterungen, Messfehlern).

avr

von Peter D. (peda)


Lesenswert?

avr schrieb:
> Der Strom ist jedoch höher als bei eingeschaltetem PullUp.
> Das schreibt Atmel ebenfalls und kann ich auch bestätigen.

So isses.

Z.B. ATmega16 mit ner LED und ner Taste, d.h. 30 IOs unbenutzt.
Da fließen dann erhebliche mA mehr, wenn die alle floaten.
Und beim ATmega1280 (86 IOs) noch mehr.

Auch bei Netzbetrieb muß man nicht unnütz Strom vergeuden.


Peter

von Gast (Gast)


Lesenswert?

Wie sieht es bei GND-beschalteten Eingängen im Vergleich zu 
unbeschalteten Eingängen mit internem Pull-Up in Bezug zu 
EMV-Verträglichkeit aus?

von john (Gast)


Lesenswert?

hmm, ich breche alle unbenutze pins einfach ab, so verhalten die sich 
wie die pins die nicht nach aussen angeschossen sind.

Was ist nicht da stört auch nicht - dazu sind alle als in und pullup 
konfiguriert.

von spess53 (Gast)


Lesenswert?

Hi

Langsam kommt diese Diskussion auf den Boden der Realität zurück 
(zumindest teilweise). Im Sinne ursprünglichen Frage, ohne weitere 
Premissen, stehe ich auch weiterhin zu meiner Aussage.

>Auch bei Netzbetrieb muß man nicht unnütz Strom vergeuden.

Wenn der AVR einen nennenswerten Anteil am Gesamtverbrauch des Gerätes 
hat, stimme ich dir zu.

MfG Spess

von Gast (Gast)


Lesenswert?

Ich wuerde irgendwas fuer Diagnose dran haengen.
einige Eingaenge  fuer DIP-Schalter
einige Ausgaenge fuer LED-Diagnoseanzeigen.

Gast

von Öpf (Gast)


Lesenswert?

Ich habe mir mal die entsprechenden Stellen im Datenblatt vom 644 
durchgelesen.

Ganz abgesehen davon, das dort tatsächlich die aktivierung der Pull-Ups 
empfohlen wird, gibt es ja auch die Möglichkeit des Tri-State High-Z 
Zustandes. Ich kenne das noch aus alten Zeiten als Zustand eines 
Ausganges, aber beim AVR wird das als eine der Optionen für einen 
Eingang bezeichnet.
Wenn ich nun annehme, das ich den Eingang auf High-Z schalte, woher 
kommen dann, bei einem floatenden Eingang die hohen Ströme? Das finde 
ich ein wenig rätselhaft. Kann das vielleicht jemand erklären?

von (prx) A. K. (prx)


Lesenswert?

Öpf schrieb:

> Wenn ich nun annehme, das ich den Eingang auf High-Z schalte, woher
> kommen dann, bei einem floatenden Eingang die hohen Ströme?

CMOS Gates sind nur dann stromlos, wenn entweder high oder low, 
mittendrin sind beide Transistoren mehr oder weniger eingeschaltet, 
folglich fliesst Strom durch beide. In diesem Fall betrifft es das erste 
CMOS-Gate von der Eingangsbeschaltung.

Wenn du diesen Pfad in der Abbildung der Innenschaltung eines I/O-Ports 
im Datasheet vom 644 studierst, dann wirst du ein Transmission-Gate 
finden und dahinter einen Transistor, der das Signal auf Masse zieht. Im 
Deep Sleep ist das Transmission Gate ab- und der Transistor 
eingeschaltet, um das folgende CMOS-Gate (den Schmitt-Trigger) auf Masse 
zu bringen ohne den Pin zu beeinflussen.

von Öpf (Gast)


Lesenswert?

Ach ja. Danke.

von martin (Gast)


Lesenswert?

Welchen Vorteil hat es die internen Pull_Ups zu vernwenden anstatt auf 
dem Pin ein Low-Pegel auszugeben?

von (prx) A. K. (prx)


Lesenswert?

GND-Level riskiert Kurzschluss, wenn zufällig doch was dranhängen 
sollte.

von Ben _. (burning_silicon)


Lesenswert?

dann ists aber ein fehler in der schaltung und kein wunder wenn's 
deswegen dampft. brauch ich mich ja bei einem SNT-controller oder 
irgendwelchen OPVs auch nicht wundern wenn die am falschen pin GND oder 
330V bekommen.

kann man sich drüber streiten, funktionieren wird beides. im hinblick 
auf die fehlertoleranz wären die aktivierten pullups die bessere lösung. 
ob man das braucht ist schon wieder eine andere frage.

von Rolf Magnus (Gast)


Lesenswert?

> dann ists aber ein fehler in der schaltung und kein wunder wenn's
> deswegen dampft.

Das bedeutet ja nicht, daß man deshalb die Zerstörung provozieren muß, 
indem man jeden Pin unnötigerweise so konfiguriert, daß was kaputt gehen 
kann, wenn er falsch angeschlossen ist.

von Ben _. (burning_silicon)


Lesenswert?

ahja verstehe. was du brauchst ist also ein sogenannter multiunipolarer 
µC. da kannst du an den pins anschließen was du willst und wo du es 
willst und der µC muß mit jeder erdenklichen kombination lauffähig 
bleiben...

SCNR

von Andreas K. (derandi)


Lesenswert?

spess53 schrieb:
> Hi
>
>>Um den Interrupt auszulösen hat mir ein Stücken Draht gereicht, das hat
>>auch prima funktioniert, solange bis die Anzeige per PWM gedimmt habe,
>>die hat derart viel gestört das mir ständig dieser Interrupt ausgelöst
>>wurde.
>
> Meine Aussage bezieht sich auf unbenutzte Pins. Ein aktiviertes
> INT-Pin zählt da nicht dazu.
>
> MfG Spess

Wenn ich INT0 ein Stückchen Programmcode vorwerfe, dann wird er ihn 
sporadisch ausführen, auch wenn es garnicht gewollt ist.
Das ist für mich dann ein Fehler in der Hardware, die Software ist ja 
funktionell fehlerfrei.
Nächste Frage: Wenn Code existiert springt er bei Auslösung dahin und 
zieht sein Ding durch, und was macht der Controller wenn für diesen 
Interrupt nichts hinterlegt ist? Ich weiß es nicht, aber ich könnte mir 
gut vorstellen das er eine, wenn auch nur kurze, Leerrunde dreht.

von avr (Gast)


Lesenswert?

@Andreas

Er wird den Code nur Ausführen wenn er dazu berechtigt ist.
D.h. der Interrupt ist freigegeben.
Wenn ich einen Interrupt freigebe, hat das seine Begründung,
ich will das der µC auf etwas reagiert. Wenn das ein Pin ist,
ist dieser auch mit der Interruptquelle verschaltet und damit
kein freier Pin.

=> Interrupt durch einen freien Pin ist ein Softwarefehler !

avr

von spess53 (Gast)


Lesenswert?

Hi

>Wenn ich INT0 ein Stückchen Programmcode vorwerfe, dann wird er ihn
>sporadisch ausführen, auch wenn es garnicht gewollt ist.

Wieso. Du hast es ja gewollt. Du hast den Interrupt freigegeben und 
evtl. auch eine Routine dafür geschrieben. Und ab diesen Moment hast 
du dafür zu sorgen, das die richtigen Pegel ankommen. Ich habe ja 
nicht behauptet, das ein offener Eingang einen definierten Pegel hat. 
Aus diesem Grund benutze ich auch fast ausschließlich externe Pullups. 
In dieser Beziehung bin ich auch etwas nonkonformistisch.

>Das ist für mich dann ein Fehler in der Hardware, die Software ist ja
>funktionell fehlerfrei.

Da du diesen 'Fehler' per Software vermeiden kannst, ist das Verhalten 
ein Softwarefehler.

MfG Spess

von Rolf Magnus (Gast)


Lesenswert?

> da kannst du an den pins anschließen was du willst und wo du es
> willst und der µC muß mit jeder erdenklichen kombination lauffähig
> bleiben...

Irgendwie scheinst du es nicht begreifen zu wollen. Es geht nicht darum, 
ihn gegen jede beliebige Kombinationen abzusichern, sondern darum, nicht 
grundlos zusätzlich zu den eh schon vorhandenen noch viele weitere 
gefährliche Kombination zu schaffen.
Oder um's so überspitzt auszudrücken wie du: Wie wäre es, wenn man die 
Pins wechselweise auf low und high setzt? Damit könnte man die 
Wahrscheinlichkeit, daß eine abgerutschte Messspitze zum Problem wird, 
gleich noch weiter erhöhen.

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.