Forum: Mikrocontroller und Digitale Elektronik ATMEGA328p falsche FUSE gesetzt :-(


von Jens (Gast)


Lesenswert?

Liebe Gemeinde,

leider habe ich mir einen ATMEGA328P unbrauchbar gemacht.

Ich habe im AVR Studio 4 mit dem AVRISP mkII die Taktfrequenz bei 
verschiedenen AMEGAs eingestellt und beim hin und her aus versehen einen 
ATMEGA8 eingestellt gehabt, jedoch einen ATMEGA328P programmiert.

Ich habe intern 8Mhz mit den 64ms ausgewählt. Jetzt reagiert er nicht 
mehr.

Weder auf Quarze (hab 8Mhz und 12Mhz da) noch einen externen Takt (hab 
nen 4,8Mhz Attiny als Taktquelle laufen)

Gibt es da eine Möglichkeit den guten Mega zu retten?

Liebe Grüße
Jens

von Christian J. (Gast)


Lesenswert?

Normalweise geht das aber über die ISP, wenn man einen Quarz dran 
steckt.... passietr mir auch öfter und ich kriege es immer wieder 
zurück, außer wenn ich 128khz Mode wähle, weil das mein Usbasp nicht 
kann.

Seltsam....

von Sven L. (sven_rvbg)


Lesenswert?

Eventuell musst Du die Programmierfrequenz von deinem ISP-Adapter runter 
stellen.

von M. K. (sylaina)


Lesenswert?

Wenn man schon den falschen Atmega eingestellt hatte hat man vielleicht 
auch das falsche Fusebit gesetzt gehabt. Retten kann man so etwas über 
einen Programmer, der den HV-Mode kann wie z.B. das STK500.

von bianchifan (Gast)


Lesenswert?

Für nicht mehr ansprechbare AVRs habe ich mir auf einem PrototypenPCB 
ein Rescue Shield zusammengelötet.
http://mightyohm.com/blog/products/hv-rescue-shield-2-x/

Solltest Du nur auf internen Takt geflasht haben, sollte der 328 
eigentlich ansprechbar sein, Quarze nutzen da nicht so viel.
Vom ISP Mk2 habe ich keine Ahnung, ich nutze mehrere USBASPs.
Bei internem Schwabbeltakt muss oftmals der "Speed" Jumper gesteckt 
werden.

von Christian J. (Gast)


Lesenswert?

Bei der Angelegenheit:

Kann mir vielleicht jemand mal versuchen 5 Stück Attiny84 zu retten, die 
entweder hinüpber sind durch den Usbasp oder nicht mehr ansprechbar? Auf 
einmal war Ende während des Programmierens nachdem es zigmal klappte. 
Würde Brief mit beiden Portos schicken. Ich habe nicht genug Ahnung von 
diesem Avrdude Zirkus unter der Arduino IDE, bei PIC war das alles viel 
einfacher mit dem ICD.

von Uwe (de0508)


Lesenswert?

Hallo Christian,

vielleicht sind neue ATtiny84 A preiswerter ?

https://guloshop.de/shop/Mikrocontroller/ATtiny84-A::34.html?XTCsid=t9g0jgdqnu89ga7v08msleav46

von Jens (Gast)


Lesenswert?

Hallo und Danke für die Antworten!

Ich kann ja mal berichten was ich probiert habe:
 - Quarze 4 MHz, 8 MHz, 12 MHz, 16 MHz und 20 MHz
 - externer Takt von 2,2 MHz, 8 MHz und 10 MHz
 - beim ISP die Frequenzen 51,10 Hz, 6,48 kHz, 125 kHz und 500 kHz

Kann denn jemand nachvollziehen was durch den Befehl auf 8 Mhz zu setzen 
(siehe Startpost) beim ATMEGA328P gesetzt wurde? (Der ISP Adapter ging 
davon aus einen ATMEGA8 vor sich zu haben, beim ATMEGA328p gibt es die 8 
MHz ja nicht!)

Danke
Jens

von Christian J. (Gast)


Lesenswert?

Uwe S. schrieb:

> Hallo Christian,
>
> vielleicht sind neue ATtiny84 A preiswerter ?
>
> https://guloshop.de/shop/Mikrocontroller/ATtiny84-A::34.html?
XTCsid=t9g0jgdqnu89ga7v08msleav46

Ja... sicher ... aber die kleinen Käferchen können ja nichts dafür.
Ich kann einfach nix wegwerfen, was noch funktioniert. Zu weiches
Herz.

Der Preis ist aber gut, leider zu viel bezahlt in der Bucht.

von Christian J. (Gast)


Angehängte Dateien:

Lesenswert?

Jens schrieb:
> Kann denn jemand nachvollziehen was durch den Befehl auf 8 Mhz zu setzen
> (siehe Startpost) beim ATMEGA328P gesetzt wurde? (Der ISP Adapter ging
> davon aus einen ATMEGA8 vor sich zu haben, beim ATMEGA328p gibt es die 8
> MHz ja nicht!)

Dir bleibt noch eines: Versuchen die JTAG Schnittstelle zu aktivieren 
und dann über einen J-Link das zu flashen.

Guck dir das mal an:

http://www.instructables.com/id/How-to-fix-dead-atmega-and-attiny-avr-chips/?lang=de

von bianchifan (Gast)


Lesenswert?

Jens schrieb:
> ..beim ATMEGA328p gibt es die 8 MHz ja nicht!)

Ein umgestalteter pro mini als ATMega8 "Ersatz", 8MHz intern
http://www.eevblog.com/forum/reviews/youyue-858d-some-reverse-engineering-custom-firmware/?action=dlattach;attach=143801;image

Jens schrieb:
> Kann denn jemand nachvollziehen was durch den Befehl auf 8 Mhz zu setzen
> (siehe Startpost) beim ATMEGA328P gesetzt wurde?

Es gibt da eine wunderschöne GUI namens Burn-O-Mat, da siehst Du im 
KLARTEXT was Sache ist, die hatte ich hier mal im Artikelbereich 
entdeckt ;)

https://www.mikrocontroller.net/articles/Burn-o-mat

Einfach mal die Parameter einstellen, wie Du flashen wolltest, dann den 
Controller ändern und schauen, was raus kommt...

von M. K. (sylaina)


Lesenswert?

Jens schrieb:
> Hallo und Danke für die Antworten!
>
> Ich kann ja mal berichten was ich probiert habe:
>  - Quarze 4 MHz, 8 MHz, 12 MHz, 16 MHz und 20 MHz
>  - externer Takt von 2,2 MHz, 8 MHz und 10 MHz
>  - beim ISP die Frequenzen 51,10 Hz, 6,48 kHz, 125 kHz und 500 kHz
>
> Kann denn jemand nachvollziehen was durch den Befehl auf 8 Mhz zu setzen
> (siehe Startpost) beim ATMEGA328P gesetzt wurde? (Der ISP Adapter ging
> davon aus einen ATMEGA8 vor sich zu haben, beim ATMEGA328p gibt es die 8
> MHz ja nicht!)
>
> Danke
> Jens

Solange du uns nicht sagst welchen Hexcode du für die Fuses hattest, 
wird es schwer was zu sagen. Das gibt nur rätselraten.

Ich rate mal: Atmega8 mit Standard-Fuses und nur den Oszi geändert auf 
intern 8 MHz würde ein LowFuse von 0x64 und ein HighFuse von 0xD9 
ergeben.
Nimmt man diese Fuses und programmiert damit einen Atmega328p dann, wenn 
ich mich nicht vertan hab, ändert sich nur die Taktquelle, der 328p 
erwartet dann einen Low Frequency Quarz an XTAL. Du hast aber 
geschrieben, dass du schon einen externen Takt angelegt hast, daher gehe 
ich davon aus, dass noch was anderes schräg war/ist.

von S. Landolt (Gast)


Lesenswert?

> Du hast aber geschrieben, dass du schon einen externen
> Takt angelegt hast

Er hat jedoch nicht geschrieben, wo; in diesem Fall (low frequency 
crystal) sollte er auch XTAL2 versuchen.

von Jens (Gast)


Lesenswert?

Danke für die Tips!
Der Online-Fuse-Simulator (vom Burn-o-mat) klappt leider nicht, nur ein 
graues Fenster. Auf dem Dienstrechner kann ich leider nichts 
installieren.
Die Sache mit dem AVR-doctor ist cool, aber ein eigenes Projekt für 
später. Aver vielleicht hab ich alles da ihn zumindest auf dem 
Steckbrett aufzubauen :-)

Zu den Einstellungen:
Device: Atmega8
Fuses: Alles auf Ursprungswerten außer der Takt (intern 8Mhz mit den 
64ms) und BOOTRST.

Und ja, den externen Takt habe ich sowohl an XTAL1 und XTAL2 sowie beide 
gemeinsam angelegt.

Danke
Jens

von Pete K. (pete77)


Lesenswert?

Hast Du einen Quarzoszillator (den mit 4 Beinchen) im niedrigen 
Mhz-Bereich?
Dann die ISP-Frequenz im Atmel Studio auf niedrigste Stufe stellen, so 
sollte es klappen. Stromversorgung sollte auch stabil sein.

von S. Landolt (Gast)


Lesenswert?

Also:
high fuse auf D8 sowie
low  fuse auf E4 gesetzt.

Ersteres ist uninteressant, Letzteres heißt, wie Michael Köhler bereits 
schrieb, low frequency crystal. Dann muss der externe Hilfstakt an XTAL2 
angeschlossen werden, über einen Schutzwiderstand von z.B. 100 Ohm. 
Allerdings akzeptiert dann z.B. mein Exemplar, ATmega328P-PU von 1426, 
maximal 300 kHz, was weiter eine ISP-Frequenz von maximal 75 kHz 
bedeutet.

von S. Landolt (Gast)


Lesenswert?

Zum Vergleich: ein ATmega168-20PI von 0452 läuft in dieser Einstellung 
auch mit 5 MHz.

von bianchifan (Gast)


Angehängte Dateien:

Lesenswert?

Der AVR Doctor ist nicht übel, aber zu aufwändig, Infos findest Du im 
Artikelbereich.
Das Arduino-Shield auf Steckbrett ist einfacher.

Im Anhang befinden sich zwei Bildchen, Nr 1. zeigt die Burn-O-Mat 
Angaben dazu, Nr. zitiert das Atmel Datenblatt bzw. -buch.

von Jens (Gast)


Lesenswert?

Ich danke euch!

Konnte ihn mit einem externen Takt von 200kHz und einer ISP-Frequenz von 
51Hz wieder ansprechen.

Damit wäre dieser Beitrag geschlossen.

von Maik O. (bastler_maik)


Lesenswert?

Michael K. schrieb:
> Wenn man schon den falschen Atmega eingestellt hatte hat man vielleicht
> auch das falsche Fusebit gesetzt gehabt. Retten kann man so etwas über
> einen Programmer, der den HV-Mode kann wie z.B. das STK500.

Habe meinen Mega328 auch verfust :-(
Jetzt komm ich über ISP6 nicht mehr ran.
Wie im Tutorial beschrieben habe ich einen Q-Oszillator rangehangen. 
Allerdings hatte ich nur 20MHz da. Ist das zu schnell? Habe nämlich 
immer noch kein Zugriff..

Alternativ habe ich ein STK500 - wie geht denn das mit der Rettung via 
HV Prog? Kann ich den Mega328 einfach in den 28pol-Sockel SCKT3500D 
stecken und loslegen?

von Frederik H. (diveturtle93)


Lesenswert?

Maik O. schrieb

> Allerdings hatte ich nur 20MHz da. Ist das zu schnell? Habe nämlich
> immer noch kein Zugriff..

Das ist deutlich zu schnell. Der Mega328 kann nur bis 16MHz.

Mit der Rettung sollte eigentlich ein 10k Widerstand von XTAL auf Masse 
reichen. Hat bei mir zumindestens funktioniert beim letzten verfusen.
Probiers mal.

von Maik O. (bastler_maik)


Lesenswert?

Frederik H. schrieb:
> Maik O. schrieb
>
>> Allerdings hatte ich nur 20MHz da. Ist das zu schnell? Habe nämlich
>> immer noch kein Zugriff..
>
> Das ist deutlich zu schnell. Der Mega328 kann nur bis 16MHz.
>
> Mit der Rettung sollte eigentlich ein 10k Widerstand von XTAL auf Masse
> reichen. Hat bei mir zumindestens funktioniert beim letzten verfusen.
> Probiers mal.


Also im Datasheet steht was von 20Mhz bei entsprechendem Vcc. Aber ich 
werd das mit dem Widerstand mal probieren.

Ansonsten klappt es auch mitm STK500:
http://www.atmel.com/webdoc/stk500/stk500.highVoltageProgramming.html

von Mathias (Gast)


Lesenswert?

Christian J. schrieb:
> Normalweise geht das aber über die ISP, wenn man einen Quarz dran
> steckt.... passietr mir auch öfter und ich kriege es immer wieder
> zurück, außer wenn ich 128khz Mode wähle, weil das mein Usbasp nicht
> kann.
>
> Seltsam....
Genau das habe ich bei einem Arduino Nano über einen USBasp gemacht. Ich 
habe einen LFuse auf 0xC3 gesetzt.
Ich hatte zuerst einen Blink-Sketch darauf geladen. Der läuft mit dem 
neuen Fuse wie erwartet viel langsamer.
Nur kann ich jetzt nicht mehr fusen oder sonst was hochladen.

Egal, ob über USB, USBasp oder einem stk500v1
1
avrdude -v -patmega328p -cstk500v1 -P/dev/ttyUSB0 -b19200 -Ulfuse:w:0xff:m -B4
 oder
1
avrdude -v -patmega328p -cusbasp -Ulfuse:w:0xff:m -B4

Mit -B habe ich auch probiert, mit folgenden Werten (1, 2, 4 ,8, ..., 
1024)

Es kommt immer folgender Fehler:
1
avrdude: initialization failed, rc=-1
2
         Double check connections and try again, or use -F to override
3
         this check.
Das -F habe ich auch mal probiert.

Kann man da noch was retten oder hilft nur noch HV ?

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.