Überzählige Pins

Gast #1508769
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
Gast #1508793
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
Gast #1508829
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
Gast #1508838
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
Gast #1508979
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...
Gast #1509121
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.
Gast #1509138
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
Persönliche Seite #1509152
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.
#1509199
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.
Gast #1509270
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.
Gast #1509309
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.
Gast #1509349
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
Gast #1509375
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
#1509393
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.
Gast #1509406
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
Gast #1509652
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
#1509741
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
Gast #1509767
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.
Gast #1509806
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
Gast #1509956
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?
#1509971
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.
#1510058
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.
Gast #1510953
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.
#1511255
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.
Gast #1511283
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
Gast #1511330
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
Gast #1511475
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

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren