Mein ATMEGA48 resettet sich unbeabsichtigt alle 0.1 bis 4 Sekunden zufällig selbst. Nach einer Weile geht gar nichts mehr. Die Software sollte nicht das Problem sein, ich habe sie auf ein Minimum reduziert und auch die 2.7V BOD habe ich wieder ausgeschaltet, was ebenfalls nichts genützt hat. Die Versorgungsspannung beträgt 3.3V aus einem Akku mit 10uF parallel. Ich habe auf der Reset-Leitung lediglich ein 10k Pullupwiderstand, 100nF gegen Erde und den Pin für den Programmieradapter, der im Normalfall nicht verbunden ist. Wenn ich die Spannung am Resetpin mit einem Oszilloskop messe, sehe ich einen sauberen Pegel im Bereich zwischen 0.8V bis 1.3V, was ja viel zu tief ist. Ein Starten des Mikrocontrollers ist mit diesem Pegel nicht möglich, da er sich im selben Moment gleich wieder zurücksetzt. Sobald ich den Resetpin mit einem Kupferdraht direkt gegen Vcc verbinde funktioniert die Schaltung zwar wieder, aber auch so steht ein Reset immer unmittelbar bevor. Da die LEDs mit der Zeit leicht zu flackern beginnen kann man das gut erkennen. Wenn ich den Strom messe, der über den Kupferdraht in den Resetpin hineinfliesst, sehe ich ein übles Rauschen mit Spitzenwerten von bis zu +25mA und etwa +5mA im Durchschnitt! Wenn man die Schaltung vom Strom trennt und eine Weile auf die Seite legt, funktioniert sie bei erstmaligem wiederinbetriebsetzen für einige Minuten, danach beginnen die Probleme wieder von vorn und werden mit der Zeit schlimmer, bis erneut gar nichts mehr funktioniert. Hat jemand von euch auch schon solch komisches Verhalten bei einem ATMEGA beobachtet? Ich bin echt am Ende mit meinem Latein. Habe schon fast alles versucht. Vielen Dank für eure Hilfe!
wenn die 3,3V korrekt sind (nachmessen!), ist eventuell R1 falsch (auch nachmessen!)?
Die Versorgungsspannung ist absolut stabil. Auch der Widerstand ist der Richtige. Ich habe es auch schon mit 5k versucht, jedoch nur eine direckte Verbindung zu Vcc bringt den uC zum Laufen. Ich habe die Schaltung doppelt aufgebaut. Beide haben das selbe Problem, nur beim Einen tritt es etwas häufiger auf.
Es sieht wirklich alles danach aus, dass der Reseteingang den Strom Schluckt. Wie kann das sein?
...oder der C am Reset ist fehlerhaft (Schluß oder Feinschluß gegen Masse). Zum Programmieren dürfte es mit 100nF auch problematisch werden, oder?
Michael schrieb: > Es sieht wirklich alles danach aus, dass der Reseteingang den Strom > Schluckt. Wie kann das sein? VCC-Pins hängen an der Versorgung? Ansonsten geht der Strom über die Eingangspins, also auch den Reset-Pin.
Habe bis jetzt immer 100nF verwendet, ohne probleme. Nur bei dieser Schaltung ist das Verhalten so komisch. Cs habe ich schon ausgetauscht oder ganz weg gelassen. Kurzschlüsse sind auch auszuschliessen. Es muss entweder ein ganz offensichtlicher Fehler sein, oder etwas ganz kniffliges. Alles übliche was man so an Tipps in den Foren findet, hab ich schon ausprobiert.
Das stimmt, jedoch ist es tatsächlich so, dass die LEDs laut datenblatt (und nachgemessen) einen hohen Spannungsabfall haben. Es handelt sich um die 5050er LEDs, wie man sie typischerweise in den RGB-LEDStreifen findet die so im Handel angeboten werden. Die LEDs laufen sogar noch in Unterlast.
Ausserdem: Beitrag "Reset Pin des Atmega8 als I/O Pin verwenden?" Ist PC6 eventuell als Ausgang und LOW geschaltet?
Ist die Summe aller neun LED-Ströme größer als die Gesamtleistung des AVR? Ich meine nicht den Strom für einen einzelnen Ausgang!
Der Strom könnte das Maximum ein kelin Bisschen übersteigen, jedoch sind selten alle LEDs aktiv. Auch wenn nur eine LED leuchtet tritt das Problem auf. Ich hate fast die Identische Schaltung bereits einmal aufgebaut mit den selben Problemen, doch dann eines Tages, ohne dass ich etwas geändert habe funktionierte alles einwandfrei. 30 Stunden Dauertest bei voller Leistung ohne einen Reset!
Reset ist nicht als I/O geschaltet. Habe ich bereits überprüft, aber danke für den Tipp.
Brownout auf die richtige Spannung eingestellt? So langsam fällt mir nichts mehr ein :-)
Wieso klemmt ihr eigentlich alle immer noch zusätzliches Zeug an den Reset Pin? Hat der nicht einen internen Pullup?
Habs schon mit oder ohne BOD versucht. Weder mit 2.7V, noch ohne Brownoutdetection hat es funktioniert.
10k gegen (+) ist schon ok, aber den C würde ich weglassen.
Der internet Reset-Pullup ist im schlimmsten Fall etwa 60k hoch. Das ist ganz schön viel, besonders in diesem Fall, wo ja schon ein 100 Ohm pullup am Reset kaum ausrecht. Wie gesagt, da fliesst strom auf der Resetleitung und die kann nicht in den Kondensator, also in den uC....?
Ich hab beim Vorgänger den Kondensator auch schon weggelassen, was nicht viel genützt hat, aber das versuche ich sonst heute Abden gleich nochmals.
Michael, hast Du auch mal den µC gewechselt? Ist er vielleicht kaputt? Wenn die "Identische Schaltung" einen anderen µC hatte, ist das allerdings schon geklärt. Gruß Dietrich
Die Schaltungen hatten alle den selben uC aus der gleichen bestellung. Hab gleich zehn Stück bestellt wegen dem Mengenrabatt und mehr als die Hälfte hab ich schon durchprobiert :-) ohne Erfolg :-(
Kann es sein daß Du zuviel Strom gegen Masse ziehst mit Deinen 9 Led's direkt an den Ports ???? Wenn Du in Summe 200mA überschreitest, macht der Atmega dauernd unmotivierte Reset's. Gruß Hugo
Das kann vorkommen. Im schlimmsten Fall beträgt der Strom etwa 300mA. Komisch ist, dass die Boards gestern jeweils keine 10 Sekunden gelaufen sind ohne Reset. Seither hab ich absolut nichts mehr geänder, auch die Kondensatoren hab ich nun doch dringelassen. Und heute morgen um halb acht hab ich die Dinger wieder in betreib genommen und seither laufen sie ohne einen einzigen Reset. Das ist schon sehr komisch. Und beim vorgängermodell war es genau das gleiche. Vom einen auf den anderen Tag hat auf einmal alles funktioniert, ohne dass ich auch nur das geringste geändert habe.
@hugo: Das hatte ich weiter oben schon zu bedenken gegeben. > Ist die Summe aller neun LED-Ströme größer als die Gesamtleistung > des AVR? Ich meine nicht den Strom für einen einzelnen Ausgang! Michael meinte, daß er schon leicht ÜBER dem maximalen Strom liegt. Nachdem wir alles mögliche ausgeschlossen haben, komme ich nochmal drauf zurück. @michael: Klemm doch mal sechs der neun LED's ab, so daß nur noch drei dranhängen. Dann kannst du auch sicher sein, daß es nicht am zu hohen Stromfluß liegt und hast wieder eine Fehlerursache ausgeschlossen. Vielleicht bricht ja wirklich kurzzeitig die Betriebsspannung ein und verursacht dadurch einen spontanen Reset. Das mußt du auch icht unbedingt mit einem Meßgerät sehen. Mit einem Oszi wahrscheinlich schon. Aber probiere es einfach mal aus und gehe unter die Stromgrenze... Das Verhalten der AVR's außerhalb der Spezifikation ist eben nicht garantiert. Es KANN funktionieren, MUSS aber nicht.
Der Fehler trat leider auch auf, als ich nur eine rote LED im Betrieb hatte, da war der Strom nicht höher als 30mA.... Es muss also noch einen anderen Grund geben. Der Fehler tritt auch nur auf, wenn die Schaltungen neu gelötet werden. Nach einigen Tagen funktioniert auf einmal alles tadellos.... Ich blick nicht mehr durch.. :-(
Als ob sich der uC zuerst an die Schaltung "gewöhnen" müsste XD
Ich hab die platinen bei PCB-pool machen lassen. Sehen qualitativ sehr gut aus. Auch beim Layout hab ich mir Mühe gegeben die Leiterbahnen möglichst kurz zu halten. Hab auch schon an Einkopplungen gedacht, da ich ja steile Schaltflanken habe, aber ich hab mit dem Oscilloskop nichts messen können.
Evtl. mal den Pin unbestückt messen, zumindest ohne Reset-Pin des Controllern. Einkopplungen ziehen keine zig mA, es sei denn da ist eine dicke und magnetisch offene Spule direkt daneben.
Michael schrieb: > Der Fehler tritt auch nur auf, wenn die Schaltungen neu gelötet werden. > Nach einigen Tagen funktioniert auf einmal alles tadellos.... Ich blick > nicht mehr durch.. :-( Das erinnert mich an einen Fall in der Lehre, als ein Motorola 6809 zickig tat. Problem war damals, dass unter dem Baustein (nach dem Handlöten) nicht weggeputzte Flussmittelreste und/oder wasauchimmer verblieb. Das Zeug war leitend genug, dass die Schaltung nicht funktionierte. Könnte es evtl. in diese Richtung gehen? Reset gegen GND mal mit dem Ohmmeter anschauen?
Daniel V. schrieb: > VCC-Pins hängen an der Versorgung? Ansonsten geht der Strom über die > Eingangspins, also auch den Reset-Pin. Hast du das über prüft? Sind alle Versorgungspins auch...versorgt?
Als ich sie das erste Mal in Betreib nahm, wahren sie mit Flussmittel praktisch eingehüllt, doch dann hab ich sie mit Isopropylalkohol sehr gut gewaschen und es wurde nicht besser. (Hab natürliuch einen ESD-Pinsel verwendet) Heute auf einmal, Tage später, schein jetzt alles zu funktionieren. Bei beiden Platinen gleichzeitig. Wie gesagt, ohne dass ich seit gestern auch nur das geringste geändert habe. Selbe Batterie, selbe Raumtemperatur, selbe Luftfeuchtigkeit....
Michael schrieb: > Heute auf einmal, Tage später, schein jetzt alles zu funktionieren. Dann ist eben etwas verdunstet/eingetrocknet.
Hab ich soeben überprüft. Beide Vcc und der AVcc sind versorgt. Alle GNDs sauber gegen Masse verbunden.
Ich hab das jetzt nachvollzogen mit einem ATM8(8Mhz) und 4 Blauen LED's am PortC (so schnell als möglich toggeln) Flussspannung 3.1V Vorwiderstand 4.7Ohm. Am Steckbrett geht's immer, auf einer Lochrasterplatine gibts alle paar Minuten einen Reset. Hast Du schon mal überlegt, bei Deinen kleinen Vorwiderständen, wie sich die Sperrschichtkapazität der LED's auswirkt. Manche LED's vor allem jene mit hoher Flußspannung haben relativ grosse Kapazitäten bis zu 100pF Wenn Du nun z.B. mit 25nS Anstiegszeit und 3.3V der Ports rechnest, und 100pF liegt Dein C*du/dt im Amperebereich und bei den geringen Vorwiderständen kannst Du Die vorstellen welche Stoßbelastungen dein AVR verkraften muß. Ich würde LED's mit so geringen Vorwiderständen niemals direkt am Port betreiben. Gruß Hugo
Ich wollte natürlich 2.5nS und Komma.Amperebereich schreiben sorry
Hugo schrieb: > Wenn Du nun z.B. mit 25nS Anstiegszeit und 3.3V der Ports rechnest, und > 100pF > liegt Dein C*du/dt im Amperebereich und bei den geringen Vorwiderständen > kannst Du Die vorstellen welche Stoßbelastungen dein AVR verkraften muß. > > Ich würde LED's mit so geringen Vorwiderständen niemals direkt am Port > betreiben. > > Gruß Hugo Das, oder ein Layoutproblem.
@einheit: Jetzt sei nicht so ein Krümelkacker. Du hast ja Recht. Sekunden werden nicht groß geschrieben, sondern Siemens (Leitwert). Trotzdem weiß in diesem Zusammenhang jeder, was gemeint ist. Außerdem schrieb Hugo ja auch von Anstiegszeit, also könnte ich jetzt auch so pingelig sein und sagen, daß eine Zeit niemals in Siemens gemessen wird. Also, unentschieden? Ok, akzeptiert ;-)
Ja Tippen war noch nie meine Stärke - natürlich ns tut leid
@Michael Bist Du siccher, daß alle deine GND-Pins auch satt auf GND sind. (Platinenfehler ??) Man kann bei den Dingern z.B. den GND nicht anschliessen, und auf irgent einem anderen PIN GND ähnliches Potential haben, und die laufen trotzdem irgentwie. Gruß Hugo
Die GND Pins sind sicher mit GND verbunden. Auch Leiterbahnunterbrüche sind auszuschliessen. Ich hab 0.6mm dicke Leiterbahnen an allen Pins. Das sollte auch reichen von den Dimensionen. Ich hab mal folgendes Program in eine Endlosschleife geschrieben: { alle LEDs volle Leistung delay 1ms alle LEDs aus delay 50us } In dieser Extremsituation hat er sich tatsächlich jeweils nach einigen Sekunden bis Minuten zurückgesetzt, aber gestern wars wesentlich schlimmer. Da hat er beim Dauerleuchten mit nur einer roten LED keine drei sekunden mehr durchgehalten.
Michael schrieb: > In dieser Extremsituation hat er sich tatsächlich jeweils nach einigen > Sekunden bis Minuten zurückgesetzt, Wie sieht in dieser Anwendung der Stromverlauf durch die LEDs aus? ->mit KO über Vorwiderstand messen.
Also ich hab jetzt mal nach den LEDs geschaut. Du solltest die tatsächlich über einen Transistor schalten. Angenommen an der LED fallen 3V ab, dann hast du bei 4,7 Ohm Vorwiderstand einen Strom von über 60mA.
Der Strom sieht folgendermassen aus: ___ _________ _________ _________ ________ || || || || || Der Strom beträgt maximal etwa 580mV und die zeitlichen Abstände zwischen den Einbrüchen 1mS, was auch zu erwarten war.Ich hab bei der roten LED gemessen, wo ein 47R Widerstand verbaut ist. Der Strom durch die LED beträgt also 0.58V / 47R = 12mA Das ist weit unter den Maximalwerten sowohl der LED, als auch des Mikrocontrollers. Ich konnte auf dem Oscilloskop auch keine Schaltspitzen erkennen...
Bitte auch mal den Gesamtstrom der Schaltung mit dem Oszi messen. Schau mal, ob direkt vor dem Reset die Stromaufnahme ansteigt.
@ Daniel V. Im Datenblatt des ATMEGA48 ist auf Seite 329 im Diagram 30-26 (I/O pin sink current vs. output voltage (Vcc = 2.7V)) ist ersichtlich, dass bei einer Versorgungsspannung von 2.7 Volt noch maximal 27mA bei Raumtemperatur erreicht werden können. Die Angegebenen 40 mA können gar nicht mehr erreicht werden, da der Interne Spannungsabfall sehr hoch wird. Selbst bei 3.3V Versorgung habe ich die roten LEDs schon ohne vorwiderstand betrieben und es floss nicht mehr Strom als 40mA. Nach einem 30Stunden Dauertest mit allen LEDs auf voller Leistung war kaum eine Erwärmung des uCs feststellbar. Das ist eine der wenigen guten Nachrichten, die ich bieten kann.... ;-)
Ich habe mit meinem UNI-T UT81B Scopemeter im mA bereich den stromfloss zwischen Vcc und dem Resetpin gemessen, also diesen durch das Messgerät fest mit Vcc verbunden. Es waren Ströme von bis zu 20mA messbar, was ja kaum so sein sollte. So wird ein reset zwar verhindert, aber nur knapp. Selbst wenn der Reset fest mit Vcc verbunden ist beginnen die LEDs leicht zu flackern und ein Reset steht immer kurz bevor...
Michael schrieb: > @ Daniel V. > > Im Datenblatt des ATMEGA48 ist auf Seite 329 im Diagram 30-26 (I/O pin > sink current vs. output voltage (Vcc = 2.7V)) ist ersichtlich, dass bei > einer Versorgungsspannung von 2.7 Volt noch maximal 27mA bei > Raumtemperatur erreicht werden können. Die Angegebenen 40 mA können gar > nicht mehr erreicht werden, da der Interne Spannungsabfall sehr hoch > wird. > > Selbst bei 3.3V Versorgung habe ich die roten LEDs schon ohne > vorwiderstand betrieben und es floss nicht mehr Strom als 40mA. Nach > einem 30Stunden Dauertest mit allen LEDs auf voller Leistung war kaum > eine Erwärmung des uCs feststellbar. > > Das ist eine der wenigen guten Nachrichten, die ich bieten kann.... ;-) Un du wunderst dich, dass der Resetpin Strom zieht?
Kann es sein, dass ich da was gundsätzlich falsch verstanden habe? Ich dachte immer ein Reset Eingan ist ein sehr hochohmiger Signaleingang. Es kling für mich jetzt so, als ob der direkt mit den Stromführenden eingängen gekoppelt ist.
Der Reset-Anschluss ist hinsichtlich der Schutzdiode nach VCC etwas anders gebaut, da dort bei High-Voltage-Programming die Programmierspannung anliegt.
Das mit der Schutzdiode im High-Voltage programming mode hab ich auch schon gehört. Der Reset ist ja als eingang geschaltet. Ich verstehe noch immer nicht, wieso ein hochohmiger eingang strom zieht. Das mach für mich keinen sinn. Die Schutzdioden sind doch dafür da den uC zu schützen, falls die Spannung am Eingang unter GND fällt, also negativ wird oder übermässig hoch...
Michael schrieb: > Das mit der Schutzdiode im High-Voltage programming mode hab ich auch > schon gehört. > > Der Reset ist ja als eingang geschaltet. Ich verstehe noch immer nicht, > wieso ein hochohmiger eingang strom zieht. Das mach für mich keinen > sinn. Die Schutzdioden sind doch dafür da den uC zu schützen, falls die > Spannung am Eingang unter GND fällt, also negativ wird oder übermässig > hoch... Wenn die Spannung an VCC z.B. 0V hat, und an einem Pin 3,3V, dann fliesst über die Schutzdiode nach VCC Strom. Wenn deine Spannung im uC absinkt, weil du zu viel Strom ziehst, dann fliesst Strom über die Schutzdiode eines Pins in deinen uC. Ja, ist Strange, aber ganz einfach erklärbar.
Daniel V. schrieb: > Wenn die Spannung an VCC z.B. 0V hat, und an einem Pin 3,3V, dann > fliesst über die Schutzdiode nach VCC Strom. Nicht beim Reset-Pin.
Beim Reset Pin fehlt diese Schutzdiode ja eben wegen dem HV Programmiermodus. Der ATMEGA liefert ja nirgens Strom hin. Der Muss ja den Strom der LEDs "schlucken"...
@ Hugo (Gast) >am PortC (so schnell als möglich toggeln) Flussspannung 3.1V >Vorwiderstand 4.7Ohm. Ist reichlich unsinnig. Ein so niedriger Vorwiderstand hat praktisch kaum eine Wirkung, die Toleranzen der Flußspannung knallen hier voll rein. Siehe LED. Ausserdem hat der AVR selber ca. 30 Ohm Ausgangswiderstand an seinen IOs.
Ich tippe trotzdem auf Spannungseinbruch wegen zu niedriger LED-Vorwiderstände. Mach die mal so groß, daß du die LED's gerade noch leuchten siehst. Wenn der Effekt dann weg ist, lag es daran. Dann vielleicht mal nachdenken über Transistoren zur Ansteuerung der LED's. Damit ziehst du schonmal den Prozessor nicht an seinen Beinen runter. Die Spannung insgesamt solltest du trotzdem beobachten, was die macht. Miß die bitte mal, und zwar auch in dem Zustand, in dem der Prozessor den Reset macht. Und den Strom genauso. Ohne diese Angaben kommen wir nicht weiter, denke ich. Nicht nur rechnen, sondern auch messen, damit man sieht, was wirklich passiert. Und nicht, was rechnerisch passieren müßte. Mach das mal bitte, ok?
Ich hab die Vorwiderstände auch schon ganz weggelassen oder einige LEDs ganz abgehängt mit dem gleichen Ergebnis....
Michael schrieb: > Ich hab die Vorwiderstände auch schon ganz weggelassen oder einige LEDs > ganz abgehängt mit dem gleichen Ergebnis.... Was an "Mach die mal so groß, daß du die LED's gerade noch leuchten siehst" hast Du nicht verstanden?
Richtig, es reicht ja schon, wenn eine LED die Kennlinie überschritten hat und zu viel Strom zieht. Also faktisch einen Kurzschluß an den Prozessor-Ausgängen macht. Um das auszuschließen, macht man entweder die Widerstände größer, damit weniger Strom fließt, oder man klemmt die LED's völlig ab und mißt die Spannungen.
@ Falk Brunner >Ist reichlich unsinnig. Ein so niedriger Vorwiderstand hat praktisch >kaum eine Wirkung, die Toleranzen der Flußspannung knallen hier voll >rein. Siehe LED. Ausserdem hat der AVR selber ca. 30 Ohm >Ausgangswiderstand an seinen IOs. eben Hugo
Ich weiß nicht ? Mehr als in einem Versuchsaufbau das Problem zu verifizieren kann man wohl nicht machen. Ich bin sicher es liegt an den geringen Vorwiderständen der Leds. Wie gesagt blaue mit 4.7Ohm das Problem tritt auf rote mit 1.7V und 120Ohm kein Problem Gruß Hugo
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.