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?