mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Überzählige Pins


Autor: Etrick (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Der Gast -1 (Gast)
Datum:

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

Autor: spess53 (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi

>Was ist am unproblematischsten?

>-nichts

MfG Spess

Autor: Andreas K. (derandi)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: spess53 (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi

> "nichts" ist komplett verkehrt

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

MfG Spess

Autor: avr (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Also Atmel sagt (bzw.schreibt) dazu :
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.

Hier vom Mega8 unter I/O-Ports.

Im "Normalfall" ist PullUp intern wohl das beste.

avr

Autor: spess53 (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi

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

MfG Spess

Autor: avr (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: spess53 (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: avr (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: spess53 (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: alter, weiser Mann (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
> Standardtmeinungen
Wow, die Version von Standard ist mir neu. ;-)

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

Autor: Etrick (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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...

Autor: Ben ___ (burning_silicon)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Bensch (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: spess53 (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Markus F. (5volt) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Peter R. (pnu)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Bensch (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Karl Arsch von der Rennbahn (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Udo R. S. (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Simon K. (simon) Benutzerseite
Datum:

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

Autor: spess53 (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Andreas K. (derandi)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: spess53 (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: avr (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Peter Dannegger (peda)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Gast (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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?

Autor: john (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: spess53 (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Gast (Gast)
Datum:

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

Gast

Autor: Öpf (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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?

Autor: A. K. (prx)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Öpf (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ach ja. Danke.

Autor: martin (Gast)
Datum:

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

Autor: A. K. (prx)
Datum:

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

Autor: Ben ___ (burning_silicon)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Rolf Magnus (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Ben ___ (burning_silicon)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Andreas K. (derandi)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: avr (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: spess53 (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Rolf Magnus (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.