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...
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
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
@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!
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.
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
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.
naja solange du die internen pullups aus hast, passiert garnichts, wenn du ihn auf high hast ...
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
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.
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 ;)
ich glaub das mit den pullups aktivieren war nur wenn der speicher nicht mit dem controller verbunden ist (also die inputs dicht machen)...
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
>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.
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
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.
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).
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.
Die "Hinterlistigkeit" liegt darin, dass ein einmal überlasteter Halbleiter seine Struktur verändert und IRGENDWANN himmelt. Dann wird auf den Hersteller geschimpft. Kurt
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.
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
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
"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.
"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
"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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.