Mehrere Fusebytes mit avrdude programmieren

Gast #1891315
Lesenswert?

Hi, wie kann man denn mehrere Fusebytes mit avrdude schreiben? Beim 
Mega8 hab ich das schon rausgefunden. Man muss die hfuse vor der lfuse 
schreiben.

Aber wie ist das beim Mega128? Ich hab schon verschiedene Kombinationen 
probiert, aber ich bekomme immer eine Meldung

1
avrdude: 1 bytes of lfuse written
2
avrdude: verifying lfuse memory against 0xFF:
3
avrdude: load data lfuse data from input file 0xFF:
4
avrdude: input file 0xFF contains 1 bytes
5
avrdude: reading on-chip lfuse data:
6

7
Reading | ################################################## | 100% 0.00s
8

9
avrdude: verifying ...
10
avrdude: verification error, first mismatch at byte 0x0000
11
         0xff != 0xe1
12
avrdude: verification error; content mismatch
13

14
avrdude: safemode: lfuse changed! Was ff, and is now e1
15
Would you like this fuse to be changed back? [y/n] y
16
avrdude: safemode: and is now rescued
17
avrdude: safemode: Fuses OK

Wie funktioniert das?
Gast #1891810
Lesenswert?

Hallo,

Du hast beim Mega128 3 Fusebytes. Wie Du die genau schreiben musst kann 
ich Dir leider nicht sagen. Ich nutze immer AVR Studio.
Ich hoffe der Hinweis mit den 3 Fuses hilft Dir ein bisschen weiter.

Ev. mal die Bytes im AVR Studio zusammenklickern. Im unteren Fenster 
werden die Bytes dann in Hex angezeigt. Es gibt auch einen 
Offline-Modus.

Eine Registrierung ist beim Runterladen vom AVR Studio überingens nicht 
nötig. Du kannst irgendwas angeben. Es wird keine E-mail mit Link 
versendet. Sobald man alles eingeben hat kommt man zur Download Seite.

Gruß
Florian
Gast #1891955
Lesenswert?

Das ist mir schon alles klar. Es geht um die Reihenfolge. Nur mal ein 
Beispiel:

Das funktioniert
1
avrdude -pm32 -cavrisp2 -Pusb -U hfuse:w:0xc1:m -U lfuse:w:0xff:m

Das funktioniert nicht
1
avrdude -pm32 -cavrisp2 -Pusb -U lfuse:w:0xff:m -U hfuse:w:0xc1:m

Bei letzterer Zeile bekomme ich eine Fehlermeldung in der Art, wie ich 
sie oben gepostet habe.

Bei Mega128 hab ich halt drei Fusebytes, aber egal, in welcher 
Reihenfolge ich die angebe, es kommt immer wieder zu so einer 
Fehlermeldung.
Gast #1892014
Lesenswert?

Hier mal ein komplettes Beispiel. Ein fabrikneuer ATmega32, lfuse vor 
hfuse

1
$ avrdude -pm32 -cavrisp2 -Pusb -e -U lfuse:w:0xff:m -U hfuse:w:0xc1:m 
2

3
avrdude: AVR device initialized and ready to accept instructions
4

5
Reading | ################################################## | 100% 0.00s
6

7
avrdude: Device signature = 0x1e9502
8
avrdude: erasing chip
9
avrdude: reading input file "0xff"
10
avrdude: writing lfuse (1 bytes):
11

12
Writing | ################################################## | 100% 0.01s
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: 1 bytes of lfuse verified
24
avrdude: reading input file "0xc1"
25
avrdude: writing hfuse (1 bytes):
26

27
Writing |                                                    | 0% 0.00s ***failed;  
28
Writing | ################################################## | 100% 0.02s
29

30
avrdude: 1 bytes of hfuse written
31
avrdude: verifying hfuse memory against 0xc1:
32
avrdude: load data hfuse data from input file 0xc1:
33
avrdude: input file 0xc1 contains 1 bytes
34
avrdude: reading on-chip hfuse data:
35

36
Reading | ################################################## | 100% 0.00s
37

38
avrdude: verifying ...
39
avrdude: verification error, first mismatch at byte 0x0000
40
         0xc1 != 0x99
41
avrdude: verification error; content mismatch
42

43
avrdude: safemode: hfuse changed! Was c1, and is now 99
44
Would you like this fuse to be changed back? [y/n] y
45
avrdude: safemode: and is now rescued
46
avrdude: safemode: Fuses OK
47

48
avrdude done.  Thank you.


das gleiche, wenn ich lfuse und hfuse vertausche

1
$ avrdude -pm32 -cavrisp2 -Pusb -e -U hfuse:w:0xc1:m -U lfuse:w:0xff:m
2

3
avrdude: AVR device initialized and ready to accept instructions
4

5
Reading | ################################################## | 100% 0.01s
6

7
avrdude: Device signature = 0x1e9502
8
avrdude: erasing chip
9
avrdude: reading input file "0xc1"
10
avrdude: writing hfuse (1 bytes):
11

12
Writing | ################################################## | 100% 0.01s
13

14
avrdude: 1 bytes of hfuse written
15
avrdude: verifying hfuse memory against 0xc1:
16
avrdude: load data hfuse data from input file 0xc1:
17
avrdude: input file 0xc1 contains 1 bytes
18
avrdude: reading on-chip hfuse data:
19

20
Reading | ################################################## | 100% 0.00s
21

22
avrdude: verifying ...
23
avrdude: 1 bytes of hfuse verified
24
avrdude: reading input file "0xff"
25
avrdude: writing lfuse (1 bytes):
26

27
Writing | ################################################## | 100% 0.00s
28

29
avrdude: 1 bytes of lfuse written
30
avrdude: verifying lfuse memory against 0xff:
31
avrdude: load data lfuse data from input file 0xff:
32
avrdude: input file 0xff contains 1 bytes
33
avrdude: reading on-chip lfuse data:
34

35
Reading | ################################################## | 100% 0.00s
36

37
avrdude: verifying ...
38
avrdude: 1 bytes of lfuse verified
39

40
avrdude: safemode: Fuses OK
41

42
avrdude done.  Thank you.
Gast #1892313
Lesenswert?

Keiner eine Idee? Könnte es ein Timing Problem sein? Ich habe im 
Datenblatt gestöbert, aber nichts konkretes gefunden. Lediglich das 
sowohl bei paralleler Programmierung als auch bei JTAG gewartet wird, 
bis die Programmierung fertig ist.

Wie ist das bei serieller Programmierung (ISP)? Wartet avrdude, bis der 
Vorgang fertig ist?

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren