Forum: Mikrocontroller und Digitale Elektronik ATMEGA32U2 - Fuses lassen sich nicht setzen


von nik j. (mirkovolt)


Angehängte Dateien:

Lesenswert?

Hi,

ich habe mir ein kleines Testboard für den ATMEGA32U2 gebaut. Es 
entspricht praktisch 1-zu-1 den Adapterplatinen aus dem Guloshop 
(https://guloshop.de/shop/Mikrocontroller/ATmega32U2-USB-DIP::21.html).

Die Platine sitzt auf einem Steckbrett. RESET ist darauf mit einem 10K 
Pullup versehen.

Per dfu-programmer lässt sich das Ding auch wunderbar über USB 
programmieren. Ich möchte aber den 16MHz-Crystal nutzen und daher die 
Fuses setzen. Avrdude kann die Fuses zwar problemlos auslesen, 
allerdings nicht schreiben. Die Ausgabe lautet:
1
$avrdude -pm32u2 -cstk500v2 -P /dev/ttyUSB0 -U lfuse:w:0xff:m -U hfuse:w:0xd9:m -U efuse:w:0xf4:m
2
3
avrdude: AVR device initialized and ready to accept instructions
4
5
Reading | ################################################## | 100% 0.01s
6
7
avrdude: Device signature = 0x1e958a
8
avrdude: reading input file "0xff"
9
avrdude: writing lfuse (1 bytes):
10
11
Writing |                                                    | 0% 0.00s ***failed;  
12
Writing | ################################################## | 100% 0.08s
13
14
avrdude: 1 bytes of lfuse written
15
avrdude: verifying lfuse memory against 0xff:
16
avrdude: load data lfuse data from input file 0xff:
17
avrdude: input file 0xff contains 1 bytes
18
avrdude: reading on-chip lfuse data:
19
20
Reading | ################################################## | 100% 0.00s
21
22
avrdude: verifying ...
23
avrdude: verification error, first mismatch at byte 0x0000
24
         0xff != 0x5e
25
avrdude: verification error; content mismatch
26
27
avrdude: safemode: lfuse changed! Was ff, and is now 5e
28
Would you like this fuse to be changed back? [y/n] y

Wenn ich 'y' eingebe, hängt avrdude und die LED-Aktivität des 
Programmers lässt erahnen, dass er fleißig versucht zu schreiben. Wenn 
ich 'n' eingebe, beendet sich das Programm mit
1
avrdude: safemode: Fuses OK
2
3
avrdude done.  Thank you.


Wenn ich nach dem Fehler google, finde ich zuhauf Einträge. Allerdings 
bringen mich die Antworten bislang nicht weiter.

Ich habe avrdude mit verschiedenen Baudraten ausprobiert, aber alles 
außer 115200 führt nur zu timeouts.

Ich weiß, dass die 100nF für VCAP nicht den Empfehlungen des Datenblatts 
entsprechen. Aber gulo verkauft die Dinger mit der Beschaltung, da gehe 
ich davon aus, dass das funktionieren sollte (habe auch mal testweise 1µ 
parallel dazu geschaltet - hat nichts gebracht).

Die Programmierspannung kommt aus dem Programmer. Ich habe es allerdings 
auch mit Spannungsversorgung per USB und durch die 3,3 und 5V eines 
Arduino versucht - ohne Erfolg.

Ein weiterer Hinweis wäre evtl. der Programmer, der womöglich nicht mit 
dem Chip klar kommt. Es handelt sich um ein Billig-Teil: MySmartUSB 
light.

Ich verwende avrdude Version 5.11.1 aus den Repositories von Linux Mint.

Hat vielleicht noch jemand eine Idee, wo ich suchen könnte?

von Uwe (de0508)


Lesenswert?

Hallo,

ich musste nur meine avrdude.conf erweitern,

dann war der Zugriff ohne Probleme:

Beitrag "AVRISP MKII Clone"

Ich habe zwei Board von ehajo.de im Einsatz.

von nik j. (mirkovolt)


Lesenswert?

Uwe S. schrieb:

> ich musste nur meine avrdude.conf erweitern,
>
> dann war der Zugriff ohne Probleme:

Der Eintrag war schon in meiner avrdude.conf. Der Chip wird ja auch 
erkannt. Auslesen kann ich die Fuses auch, nur eben nicht neu setzen.

von Markus W. (Firma: guloshop.de) (m-w)


Lesenswert?

nik janusch schrieb:
> Der Eintrag war schon in meiner avrdude.conf. Der Chip wird ja auch
> erkannt. Auslesen kann ich die Fuses auch, nur eben nicht neu setzen.

Hast du bei avrdude mal den Parameter -e versucht (Chip Erase)? 
Vielleicht ist der Mikrocontroller aus irgendeinem Grund gelockt...

von nik j. (mirkovolt)


Lesenswert?

Markus Weber schrieb:

> Hast du bei avrdude mal den Parameter -e versucht (Chip Erase)?
> Vielleicht ist der Mikrocontroller aus irgendeinem Grund gelockt...

Löscht das nicht auch den von Atmel vorinstallierten Bootloader? Den 
möchte ich nämlich drauflassen, da ich den Chip primär per USB 
(dfu-programmer) programmieren will. Nur über USB lassen sich leider die 
Fuses nicht setzen.

von Uwe (de0508)


Lesenswert?

Hallo nik,

Du hast ein anderes Problem - ich kann nur sagen, bei mir keine 
Probleme.

Ohne weitere Daten, Bilder etc. kann man dir vielleicht nicht 
weiterhelfen.

von nik j. (mirkovolt)


Lesenswert?

Hi,

ich hab die Schaltung nach Monaten noch mal rausgekramt und 
nachgeforscht. Im Datenblatt unter 23.5 dann folgenden Satz gefunden:

'The Boot Lock bits can be set in software and in Serial or Parallel 
Programming mode, but they can be cleared by a Chip Erase command only.'

Und genau das war wohl das Problem (entspricht auch dem Hinweis von 
Markus Weber). Chip gelöscht und Fuses ließen sich setzen. Dann den 
LUFA-Bootloader draufgebrannt und alles toll.

Vielleicht hilft's ja noch anderen.

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.