Hallo zusammen,
ich mache momentan einige Versuche mit dem ATmega 168. Seit letzter
Woche funktioniert der µC leider nicht mehr.
Ich vermute, dass ein Fehler beim Reset-Pin vorliegt. Im Betriebszustand
liegt dort nämlich eine Spannung von 1,4V an, obwohl ein Pull-up
Widerstand den Pin nach Vcc (5V) zieht. (siehe angefügte
Resetbeschaltung)
Der µC lässt ich auch nicht mehr programmieren.
Ich habe schon versucht mit der HV-Programmiermethode den µC zu retten,
leider vergeblich. Es ist zwar möglich diesen auf Werkeinstellung
zurückzusetzen, das Reset-Problem bleibt aber weiterhin bestehen.
Habt ihr irgendeine Idee die ich noch probieren könnte?
Gruß
Bernd
Welchen Sinn macht die LED? Soll sie dir zeigen, dass du gerade den
Taster drückst? Oder soll sie anzeigen, ob der Taster noch funktioniert?
Das ist übrigens gar keine schlechte Idee, geladene 100nF schaffen es in
der Tat, den Kontakt zu verbrennen.
Liegt das Problem immer noch vor, wenn Du den Programmer von der
Schaltung abziehst? Wenn der µC aus der Schaltung genommen wird?
Im Grunde ists ganz einfach, wenn (ohne gesetzte Reset-Disable-Fuse)
Strom in den Reset-Pin hineinfließt, dann war's das für den µC.
magic smoke schrieb:> Liegt das Problem immer noch vor, wenn Du den Programmer von der> Schaltung abziehst? Wenn der µC aus der Schaltung genommen wird?>> Im Grunde ists ganz einfach, wenn (ohne gesetzte Reset-Disable-Fuse)> Strom in den Reset-Pin hineinfließt, dann war's das für den µC.
Nimm mal die LED und Vorwiderstand raus. Da hast eine Parallelschaltung,
wo ich jetzt grad nicht sagen könnte, was die für einen Widerstand hat.
Und wenn der Pullup am Reset zu klein wird, dann geht das tatsächlich
nicht mehr.
Hatte mal so ein ähnliches Problem mit einem Widerstand am Ausgang eines
Optokopplers. Der AVR kann da über eine Leitung, die per OK ankommt
resettet werden. Und da hatte ich dann die 10k Pullup und < 1K
Widerstand vom OK parallel und das funktionierte nicht mehr, die
Spannung am Reset war ebenfallsmzu niedrig. Lösung war den niedrigen
Widerstand des OK zu entfernen und dann ging es.
Vielen Dank für die schnellen Antworten.
H.Joachim Seifert schrieb:> Welchen Sinn macht die LED? Soll sie dir zeigen, dass du gerade> den Taster drückst?
Die LED soll in der Tat zeigen, wann der AVR gerade einen Reset bekommt.
Gerade für solche Probleme finde ich sie nützlich. (wenn sie nicht
gerade die Hauptursache ist :)
Conny G. schrieb:> Nimm mal die LED und Vorwiderstand raus. Da hast eine Parallelschaltung,> wo ich jetzt grad nicht sagen könnte, was die für einen Widerstand hat.> Und wenn der Pullup am Reset zu klein wird, dann geht das tatsächlich> nicht mehr.
Ich habe vorher die LED + Vorwiderstand herausgelötet, doch leider
befindet sich der AVR danach immer noch im Resetzustand.
Mir ist aufgefallen, dass die Spannung am Reset-Eingang nun geringer
wurde. Trotz 10k Pull-up Widerstand waren dort 0,3V zu messen. Mit
LED+Vorwiderstand waren es 1,4V.
Mir scheint es als hätte ich diesen Eingang zerstört, obwohl ich mir
nicht erklären kann wie.
Hi
>Mir scheint es als hätte ich diesen Eingang zerstört, obwohl ich mir>nicht erklären kann wie.
Ist es möglich, das du beim Programmieren der Fuses aus Versehen die
RSTDISBL-Fuse gesetzt hast?
MfG Spess
Bernd schrieb:> Mir scheint es als hätte ich diesen Eingang zerstört, obwohl ich mir> nicht erklären kann wie.
Hattest du mal einen Kurzschluß in der Versorgung? Dann würde sich der
100n direkt am Pin entladen, und den µC evtl. zerstören. Obwohl, bei
100n schwer vorstellbar. Aber deswegen haben etwas bessere Schaltungen
noch einen Serienwiderstand zwischen C und Reset-Pin.
Probleme mit so kleinen Kondensatoren hatte ich mal mit 8051-ern.
Üblicherweise wurden dort auch 10µ und 10k verwendet.
Bei 100n und 10k ist aber die Reset-Dauer extrem kurz. Vielleicht ist es
das. Es könnte besonders beim Anstieg der Versorgungsspannung nach
Einschaltung eine Rolle spielen.
Und der Taster ist auch sicher nicht defekt? Oder einfach "normal
geschlossen"?
Hast Du die Möglichkeit das Ganze auf einem Breadboard mit einem neuen
AVR aufzubauen? Dann tust Dich leichter herauszufinden, was falsch ist.
Wilhelm F. schrieb:> Bernd schrieb:>>> Mir scheint es als hätte ich diesen Eingang zerstört, obwohl ich mir>> nicht erklären kann wie.>> Hattest du mal einen Kurzschluß in der Versorgung? Dann würde sich der> 100n direkt am Pin entladen, und den µC evtl. zerstören. Obwohl, bei> 100n schwer vorstellbar. Aber deswegen haben etwas bessere Schaltungen> noch einen Serienwiderstand zwischen C und Reset-Pin.>> Probleme mit so kleinen Kondensatoren hatte ich mal mit 8051-ern.> Üblicherweise wurden dort auch 10µ und 10k verwendet.>> Bei 100n und 10k ist aber die Reset-Dauer extrem kurz. Vielleicht ist es> das. Es könnte besonders beim Anstieg der Versorgungsspannung nach> Einschaltung eine Rolle spielen.
Die Resetdauer wird nicht mit dem RC am Resetpin gesteuert. Das ist auch
beim 8051 nur die Einfachlösung. Normalerweise nimmt dafür einen
Resetcontroller mit BOD. Sowas hat der AVR eingebaut.
@Autor: Bernd (Gast)
Schmeiss die gesamte externe Beschaltung des Resetpins raus.
Der Atmega 168 braucht sowas nicht. Der 10k-Widerstand bietet nur
zusätzliche Sicherheit. Der Kondensator ist Paranoia.
Und lass die LED weg.
siehe AVR042: AVR Hardware Design Considerations
mfg.
Thomas Eckmann schrieb:> Die Resetdauer wird nicht mit dem RC am Resetpin gesteuert. Das ist auch> beim 8051 nur die Einfachlösung. Normalerweise nimmt dafür einen> Resetcontroller mit BOD. Sowas hat der AVR eingebaut.
Für mich im Hobby reichte bisher wirklich immer diese Einfachschaltung.
Anders mag es in einer industriellen Anwendung sein, wo jemand anderes
das Netzteil entwickelte, und dies auch noch andere Schaltungen
betreibt. Da werden es immer mehr unbekannte Parameter, und man nimmt
halt einen Reset-Baustein, um auf Nummer Sicher zu gehen.
> @Autor: Bernd (Gast)> Schmeiss die gesamte externe Beschaltung des Resetpins raus.> Der Atmega 168 braucht sowas nicht. Der 10k-Widerstand bietet nur> zusätzliche Sicherheit. Der Kondensator ist Paranoia.> Und lass die LED weg.
Ein PIC12F675 auf meinem Steckbrett braucht für den Reset im Augenblick
auch kein externes RC-Glied, das macht er intern, und hat auch noch
einen Brown-Out-Detektor.
Aber 8051-er Derivate begannen bei mir nach Einschaltung zu flattern,
wenn die Zeitkonstante des Hochfahrens der Stromversorgung größer war,
als das RC-Glied am Reset. Wenn ich keinen Reset-Baustein hatte, konnte
ich das nur über die Größe des Kondensators (Zeitkonstante) machen, daß
er einwandfrei läuft.
Was ich noch ergänzen wollte:
Die LED mit 1k Vorwiderstand verkürzt auch noch mal die Reset-Dauer. Nur
so am Rande bemerkt. Im Einschaltmoment der Stromversorgung ist Tau dann
ca. 1k mal 100n, macht 100µs. Reicht dem µC das? Denn je nach
Spannungsanstieg ist der µC dann schon aus dem Reset wieder raus, wenn
er eigentlich noch aktiv sein müßte.
Üblicherweise braucht ein µC eine bestimmte Mindestreset-Zeit, weil er
dann intern einige Register auf Default-Werte beschreibt, bevor er
startet.
Bubu schrieb im Beitrag #3405990:
> Wilhelm F. schrieb:>> nach Einschaltung zu flattern,>> wenn die Zeitkonstante des Hochfahrens der Stromversorgung größer war>> Das mußte ich leidvoll am Elektor-CompuBoard (8052 AH-Basic) erfahren.> Insofern waren der 10µ und 10k nicht sooo verkehrt.
Exakt an einem Elektor-CompuBoard, aber mit 80C535, hatte ich auch mal
Probleme, weil dort anstatt sonst üblich 10µF nur 1µF drin war. Den
mußte ich tauschen. Die Schaltung pumpte und flatterte nach
Stromeinschaltung, und kam da nicht mehr raus.
@Wilhelm und Bubu:
Das trifft zwar alles auf einen 8051 zu und die gleichen Erfahrungen
haben ich und jeder andere vor 30 Jahren auch gemacht. Aber hier geht es
um einen Atmega. Da ist 8051 einfach Offtopic.
mfg.
Bubu schrieb im Beitrag #3405997:
> Wilhelm F. schrieb:>> Üblicherweise braucht ein µC eine bestimmte Mindestreset-Zeit, weil er>> dann intern einige Register auf Default-Werte beschreibt, bevor er>> startet.>> Mir scheint, dass du den Microcode der 8051er und deren Derivate> verfrühstückt hast :-).
Oh, einer, der Details kennt. Berichte doch mal.
;-)
Thomas Eckmann schrieb:> @Wilhelm und Bubu:> Das trifft zwar alles auf einen 8051 zu und die gleichen Erfahrungen> haben ich und jeder andere vor 30 Jahren auch gemacht. Aber hier geht es> um einen Atmega. Da ist 8051 einfach Offtopic.>> mfg.
Stimmt. Ein modernerer µC sollte ganz ohne externen Reset-Baustein aus
kommen, also quasi nur eine Taste am Reset-Pin, sonst nichts.
> Hattest du mal einen Kurzschluß in der Versorgung? Dann würde sich der> 100n direkt am Pin entladen, und den µC evtl. zerstören.
Nee. Selbst wenn, dann würde das den FET zu Vcc hin zerballern, aber
offenbar hat der FET nach Masse was abbekommen.
Ich sags nochmal, die Sache ist ganz einfach. Sämtliche Beschaltung vom
Reset-Pin weg (auch Programmer usw.) und nur einen 10k Widerstand
dranlassen. Fließt dann über diesen Widerstand ein Strom bzw. liegen
keine Vcc am Reset-Pin, dann ist der µC tot.
ResetDisable Fuse kann es gar nicht sein, weil dann ließe sich der µC
nicht mehr im "Reset-Mode" festhalten, egal was am Reset-Pin los ist.
Hallo an alle,
Leider konnte ich den µC trotz ausbauen der kompletten Reset-Beschaltung
nicht mehr ansprechen. Auch wenn man nur den 10k Pull-up einlötet,
arbeitet er nicht mehr.
Ich habe mittlerweile aus einem anderen Gerät einen Atmega 168 ausgebaut
und versuche damit gemacht. Mit diesem funktioniert alles wunderbar,
sowohl mit meiner ersten Schaltung (mit LED), als auch nur mit 10k
Pull-up.
Ich werde daher einen neuen µC bestellen müssen.
Vielen Dank für eure Hilfe!
Schöne Grüße
Bernd