Forum: Mikrocontroller und Digitale Elektronik Vcc direkt an I/O-Pin: Gefährlich oder nicht?


von JaM (Gast)


Lesenswert?

Ein simple Frage: Wenn ich Vcc direkt an einen I/O-Pin (der als Eingang
geschaltet ist) anschließe, geht der MC (atmega) sofort in Rauch auf?
Ich frage deswegen, weil man in den Tutorials widersprüchliches liest.
Beispielsweise funktioniert die Active High Schaltung mit Taster ja so.
Dort wird Vcc direkt auf den Port gegeben (und ein Pull-Down zieht bei
geöffnetem Taster gegen GND).
An anderen Stellen liest man aber, man bräuchte immer einen
Schutzwiderstand.

Für Aufklärung wäre ich dankbar.

lg,
JaM
ps. Auf Wunsch kann ich die Links zu den sich widersprechenden Stellen
posten, bin aber im Moment zu faul, diese rauszusuchen...

von Hauke Radtki (Gast)


Lesenswert?

Solange er als eingang geschaltet ist, macht das nichts, wenn er jedoch
als ausgang geschaltet ist, und low ist, fließt nen irrer strom, und
der  µC is meistens hin.
Da der zustand von dem pin beim starten unbestimmt, ist, würde ich nie
VCC direkt an nen I/O pin geben

von Peter (Gast)


Lesenswert?

Der Zustand von IO Pins ist immer Input oder Tristate nach Reset. Ist
aber trotzdem gefährlich, durch falsche programmierung oder
Programmfehler kann unter Umständen ein Eingang zum Ausgang werden

Peter

von Ralf (Gast)


Lesenswert?

@JaM

Die "Active High Schaltung" die du da beschrieben hast kann nicht
funktioniern! Wenn man einen Eingang des ATMega fest auf VCC legt, dann
liegt da VCC an - immer!!! Egal ob da ein Taster mit PullDown dran ist
oder nicht!

von Jens (Gast)


Lesenswert?

Nö, wenn da ein Taster dran ist und du den drückst, gibts nen Kurzschluß
weil VCC über den Taster auf GND gezogen wird. Somit liegt am Pin Low an
und dein Netzteil raucht ab, wenn keine Schutzmaßnahmen getroffen sind.

von JaM (Gast)


Lesenswert?

ruhig blut, ich habs etwas undurchsichtig formuliert, ich meinte das so,
wie im tutorial:
http://www.mikrocontroller.net/articles/AVR-GCC-Tutorial#Tasten_und_Schalter

wobei in dem text unter dem rechten bild auch widersprüchliches steht:
der pull-up soll nur nicht zu klein sein, damit der MC nicht drauf
geht. und im rechten build sieht man die active high schaltung, wo
munter vcc mit einem taster auf den pin geschaltet wird. der pull-down
ist in dem moment ja dann egal.

also wenn ich das bis jetzt richtig verstanden habe:
ist das i/o-pin als eingang geschaltet,
dann kann man gnd und vcc direkt anlegen, ohne das etwas passiert.

ist das i/o-pin als ausgang geschaltet,
dann geht der MC bei anlegen von vcc und pin auf low gesetzt drauf.

was noch offen bleibt: was passiert, wenn der pin auf high gesetzt
wird, und dann direkt auf gnd geschaltet? auch gleich kaputt?

lg,
JaM

von R2D2 (Gast)


Lesenswert?

Also das in dem Tutorial halt ich für Schwachsinn. Solange der Taster
geöffnet ist fließt da praktisch kein Strom (1nA oder so). Wenn der
Taster geschlossen wird fließt ein Strom der sich nach I=U/R berechnet
durch widerstand und Taster. Aber in den Port fliest wieder nur der
kleine Leckstrom von 1nA. In den Port fließt nur dann Strom wenn die
Spannung entweder größer als VCC, kleiner als GND oder der Port als
Ausgang geschalten ist.

von Hauke Radtki (Gast)


Lesenswert?

naja solange du die internen pullups aus hast, passiert garnichts, wenn
du ihn auf high hast ...

von Falk Willberg (Gast)


Lesenswert?

Mein Senf dazu:
Aufgrund der internen Beschaltung ist ein Verbinden mit VCC riskant,
weil der Low-gehende-Ausgang direkt einen Transistor gegen Masse
schaltet und so ein Kurzschluß entsteht. Mindestens der Transistor ist
dann hin.

High-Schalten erfolgt meistens mit Transistor über einen
(Schutz-)Widerstand, so daß Kurzschließen nach GND meistens gutgeht.

Die mir vorliegende Doku schweigt sich darüber aus, die
TTL-Totem-Pole-Ausgänge waren aber so beschaltet.

Nach meiner Erfahrung bedeutet Kurzschluß nach VCC -> tot,
nach Low -> nix passiert. (Und Leichen pflastern meinen Weg)

Falk

von A.K. (Gast)


Lesenswert?

Stimmt für TTL, stimmt für NMOS, aber deren grosse Zeit ist schon arg
lang vorbei.  Nur im 8051 ist ein wenig aus dieser Zeit übrig
geblieben, weil Intel die NMOS-Eigenschaften in der Architektur
regelrecht festgeschrieben hat und so auch heutige Implementierung
nicht so ohne weiteres einen starken High-Side-Driver implementieren
können.

von Marius Schmidt (Gast)


Lesenswert?

Ich arbeite seid einiger zeit daran ein ROM mit einen ATmega16 zu lesen.
Dieses ROM hat auch wie viele (oder alle nicht seriellen ROMs) andere
ROMs einen 8 bit ausgang der active high ist, d.h. wenn eine logische 1
ausgegeben wird liegt auf den Pin strom an. Ich setze gleich bei
Programmstart meinen Eingangsport (DDRA = 0x00) als eingang und
deaktiviere die pullups (PORTA = 0x00) und bis jetzt hat das
funktioniert.

Mir hat jemand gesagt ich soll die pullups aktivieren (also PORTA =
0xFF) aber danach habe ich beim Auslesen von PINA immer nur 0xFF
gelesen. Ich habe keine ahnung ob das richtig ist was ich mache, wenn
jemand meine Vorgehensweise bestätigen oder korrigieren könnte wäre ich
schon recht dankbar ;)

von Marius Schmidt (Gast)


Lesenswert?

ich glaub das mit den pullups aktivieren war nur wenn der speicher nicht
mit dem controller verbunden ist (also die inputs dicht machen)...

von Andi K. (Gast)


Lesenswert?

Das EEPROM wird hochohmige Ausgangs-/Eingangswiderstände haben.
Aktiviert man nun die internen Pullups mit ca. 37K des AVR (DDRX=0xFF)
"überschwemmem" die Pullups das Signal des EEPROMS und es ist immer
high da die Pins des EEPROMS den Strom der Pullups nicht auf GND ziehen
können.

Im RESET-Zustand sind die Pins des AVR immer im Tristate da sonst
während des flashen was passieren könnte wenn zufällig einer der Pins
auf Output wäre.

MfG
Andi

von R2D2 (Gast)


Lesenswert?

>Mein Senf dazu:
>Aufgrund der internen Beschaltung ist ein Verbinden mit VCC riskant,
>weil der Low-gehende-Ausgang direkt einen Transistor gegen Masse
>schaltet und so ein Kurzschluß entsteht. Mindestens der Transistor
>ist dann hin.

Das passiert aber nur, wenn du einen Softwarefehler hast, der den
Eingang als Ausgang konfiguriert UND der Taster gedrückt ist. Also
recht unwahrscheinlich.

Meine Erfahrung ist außerdem, dass die heutigen IO-Pins recht
unempfindlich gegenüber Kurzschlüssen sind. Und ich hatte schon mehr
als einen. Beim MSP ist z.B. folgendes festzustellen: Wenn ein Pin an
Masse liegt obwohl er 1 ausgeben soll, kommen zwar der alle Pins des
Ports nicht mehr auf Vcc, aber kaputt geht dabei nix. Nach dem
entfernen des Kurzschluss' ist alles wieder ok. Umgekehr mit Anschluss
gegen Vcc und Ausgabe von 0 ist es das gleiche.

Wie's beim AVR aussieht bin ich mir nicht mehr 100% sicher, aber ich
denk da is es ähnlich. Bis jetzt hab ich erst einen Port an nem AVR
zerstört und zwar den ADC-Port, weil mir ein PTC auf die 12V leitung
vom Netzteil gekommen is. Dannach hatte der Pin einen Eingangstrom von
ca. 100mA bei Highlevel. Aber sowas sollte ja auch nicht vorkommen.

von Andi K. (Gast)


Lesenswert?

Beim AVR fließt der Strom laut Schaltbilder in den Datenblättern bei
Output-high über Gates (FET´s).
Die einzige Strombegrenzung ist also der FET welcher dann auch defekt
geht bei mehr als 20mA.

MfG
Andi

von R2D2 (Gast)


Lesenswert?

Hast du das schon mal ausprobiert? Fets liefern ja bei Kurzschluss je
nach Gatespannung auch nur einen bestimmten Strom und gehen dabei nicht
kaputt, wenn der Strom im erlaubten Bereich liegt. Vielleicht sind die
FETs ja so ausgelegt, dass sie garnicht mehr liefern können.

Wäre mal interessant zu erfahren, ob schon mal jemand seinen Controller
auf diese Weise gekillt hat. Weil so bleibt alle mehr oder weniger ne
Spekulation. Hab leider keinen AVR zum testen da. Von den MSPs kann ich
aber wie oben geschrieben sicher sagen, dass ich damit keinen killen
konnte. Und die haben auch Fets als Ausgangstreiber.

von A.K. (Gast)


Lesenswert?

Na dann wirf mal einen Blick ins Datasheet eines AVR. Beim Mega88
beispielweise liefert der High-Side-Driver bei VCC=5V und VOH=3V
bereits typisch 70mA. Da hört die Kurve auf, aber extrapoliert liegt es
bei VOH=0V (Kurzschluss) weit im dreistelligen Bereich.

Wenn Du es partout auf Kürzschlüsse anlegst, dann arbeite lieber mit
VCC <= 3V. Da sind es nur noch 25mA (2,7V) bzw. 8mA (1.8V).

von A.K. (Gast)


Lesenswert?

Ich habe mal ins Datasheet vom MSP 149 reingeschaut. Die Kurven sind
denen vom AVR recht ähnlich. M.a.W: Du hast die MSPs wohl nur deshalb
nicht gehimmelt, weil die grundsätzlich nicht mit 5V betrieben werden.

Auch so ein AVR wird wohl nicht gleich eingehen. Aber nach einer Weile
schon, es wird dort einfach zu warm.

von Kurt (Gast)


Lesenswert?

Die "Hinterlistigkeit" liegt darin, dass ein einmal überlasteter
Halbleiter seine Struktur verändert und IRGENDWANN himmelt.

Dann wird auf den Hersteller geschimpft.

Kurt

von R2D2 (Gast)


Lesenswert?

Dir is aber schon bekannt, wie die Kurven eines FETs typischerweise
aussehen. Die gehen nicht linear weiter bis unendlich, sondern machen
irgendwann einen starken und verlaufen dann fast waagrecht. D.h. kaum
zusätzlicher Strom bei steigender Spannung.

Ich will ja nicht sagen, dass es unbedingt gut is einen Kurzschluss zu
bauen. Aber sowas kann ja wohl immer mal vorkommen. Ach ja, ich hatte
mal bei einem 74HC595 nachgemessen, wieviel der bei 3,3V abkann, weil
ich etwas mehr Strom gebraucht habe als eigentlich zulässig. Hab bei
allen Testobjekten ca. 25mA rausbekommen. Ich steuere damit jetzt
einige LEDs bei ca. 20mA (z.T mit PWM, der Dauerstom is also nicht an
allen Pins so hoch) an und was soll ich sagen... das Teil funktioniert
seit gut 1,5Jahren (tägl. 5-10Std.) ohne Probleme. Ich glaub ihr macht
euch da viel zu viel Sorgen.

Wenn mal einer nen AVR hat, der sowieso nicht mehr mag kann er ja mal
probieren wieviel Strom da bei einem Kurzschluss fließen.

R2D2

P.S.: Ich hab jetzt mal nen Blick in ein AVR-Datenblatt geworfen. Die
Dinger können wirklich mehr als das Übliche. Evtl. könnte es
tatsächlich kritisch werden. Aber wie gesagt: Probieren geht über
studieren.

von Andi K. (Gast)


Lesenswert?

Ich hatte bei versuchen auf fertiger Schaltung mit einem tiny26 ein
Multimeter zum Strommessen in +12V vor dem 78S05.
Bei Versuchen mit Kabel was mit GND zu Signalisieren ist irgend was
passiert (unabsichtlicher Kurzer an high-Output oder so).
Danach waren es nicht mehr 8mA Verbrauch sondern ca. 170 ohne das
irgendwas angeschlossen wäre.

MfG
Andi

von Kurt (Gast)


Lesenswert?

Die Hersteller von Halbleiterschaltungen würden sicherlich damit
"prahlen" wenn das ungefährlich bzw. zulässig wäre.

Jede Überlastung ist ein Risiko und geht auf Kosten der Lebensdauer
des Halbleiters.

Bei den "alten" TTL schaltungen war ein R zum Schalttransistor in
Reihe geschaltet (zumindest laut Zeichnung).

Diesen R konnte man bedenkenlos nutzen, und auch eine LED anschalten.

Ob das bei den MOS-Schaltern auch noch so "Ohne" ist?

Kurt

von A.K. (Gast)


Lesenswert?

"Dir is aber schon bekannt, wie die Kurven eines FETs typischerweise
aussehen."

So zu sehen bei 2-3V, ja. Sah in der 5V-Kurve freilich nicht so aus,
als ob da schon Schluss sei. Aber lass es 80mA sein. 80mA * 5V sind
400mW in einem winzigen Treibertransistor. Was meinst Du wie lange der
das thermisch verkraftet?

"Ob das bei den MOS-Schaltern auch noch so "Ohne" ist?"

TTL != NMOS != CMOS. Alles komplett anders, soweit es den
High-Side-Driver betrifft. Siehe Grundlagen der CMOS-Technik.

von Kurt (Gast)


Lesenswert?

"TTL != NMOS != CMOS. Alles komplett anders, soweit es den
High-Side-Driver betrifft. Siehe Grundlagen der CMOS-Technik."

also wird der Schalter als "Widerstand" betrachtet (und verbräht auch
die Leistung).
Dann ist es umso wichtiger, auf die Grenzwerte zu achten.

Kurt

von A.K. (Gast)


Lesenswert?

"Bei den "alten" TTL schaltungen war ein R zum Schalttransistor in
Reihe geschaltet"

Das TI Datenbuch gibt zum Kurzschlusstrom von LS-TTL einen Wert von
20..100mA an. Zulässige Kurzschlussdauer max 1 Sekunde.

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.