avrdude schreibt keine Fuses bei ATmega8

Gast #4673835
Lesenswert?

Hallo!

Habe ein Problem:

Ich kann auf mein ATmega8 keine Fuses schreiben. Habe 2 verschiedene 
ATmega8 (eine Fabrikneu, eine bereits in Benutzung) verwendet, bei 
keinem geht es.

Zuerst probierte ich es mit dem AVR-burn-o-mat, der konnte die Fuses 
zwar auslesen, meldete jedoch einen Fehler, als ich die neuen Fuses 
schreiben wollte.

Wenn ich die Fuses gleich lasse, und auf schreiben klicke, meldet er 
Erfolg.

Habe dann auch den avrdude aus der Kommandozeile ausprobiert, auch der 
konnte es nicht beschreiben.

Verwende eine Experimentierplatine von myAVR.de und den Programmer MK2.

Ein normales Programm kann man problemlos übertragen. (Ebenfalls mit 
avrdude)

Was kann da nicht stimmen?

Danke im Voraus!
Gast #4673864
Lesenswert?

avrdude -c avr911 -P/dev/ttyUSB0 -p m8 -U lfuse:w:0x3F:m -U 
hfuse:w:0xD9:m -vv

avrdude: Version 6.1, compiled on Nov 23 2014 at 21:15:32
         Copyright (c) 2000-2005 Brian Dean, http://www.bdmicro.com/
         Copyright (c) 2007-2014 Joerg Wunsch

         System wide configuration file is "/etc/avrdude.conf"
         User configuration file is 
"/home/USERNAMEANONYMISIERT/.avrduderc"
         User configuration file does not exist or is not a regular 
file, skipping

         Using Port                    : /dev/ttyUSB0
         Using Programmer              : avr911
         AVR Part                      : ATmega8
         Chip Erase delay              : 10000 us
         PAGEL                         : PD7
         BS2                           : PC2
         RESET disposition             : dedicated
         RETRY pulse                   : SCK
         serial program mode           : yes
         parallel program mode         : yes
         Timeout                       : 200
         StabDelay                     : 100
         CmdexeDelay                   : 25
         SyncLoops                     : 32
         ByteDelay                     : 0
         PollIndex                     : 3
         PollValue                     : 0x53
         Memory Detail                 :

                                  Block Poll               Page 
Polled
           Memory Type Mode Delay Size  Indx Paged  Size   Size #Pages 
MinW  MaxW   ReadBack
           ----------- ---- ----- ----- ---- ------ ------ ---- ------ 
----- ----- ---------
           eeprom         4    20   128    0 no        512    4      0 
9000  9000 0xff 0xff
           flash         33    10    64    0 yes      8192   64    128 
4500  4500 0xff 0x00
           lfuse          0     0     0    0 no          1    0      0 
2000  2000 0x00 0x00
           hfuse          0     0     0    0 no          1    0      0 
2000  2000 0x00 0x00
           lock           0     0     0    0 no          1    0      0 
2000  2000 0x00 0x00
           calibration    0     0     0    0 no          4    0      0 
0     0 0x00 0x00
           signature      0     0     0    0 no          3    0      0 
0     0 0x00 0x00

         Programmer Type : butterfly
         Description     : Atmel AppNote AVR911 AVROSP

Connecting to programmer: .
Found programmer: Id = "AVR ISP"; type = S
    Software Version = 2.5; Hardware Version = 2.0
Programmer supports auto addr increment.
Programmer supports buffered memory access with buffersize=512 bytes.

Programmer supports the following devices:
    Device code: 0x01
    Device code: 0x02
    Device code: 0x03
    Device code: 0x04
    Device code: 0x05
    Device code: 0x06
    Device code: 0x07
    Device code: 0x08
    Device code: 0x09
    Device code: 0x0a
    Device code: 0x0b
    Device code: 0x0c
    Device code: 0x0d
    Device code: 0x0e
    Device code: 0x0f
    Device code: 0x10
    Device code: 0x11
    Device code: 0x12
    Device code: 0x13
    Device code: 0x14
    Device code: 0x15
    Device code: 0x16
    Device code: 0x17
    Device code: 0x18
    Device code: 0x19
    Device code: 0x1a
    Device code: 0x1b
    Device code: 0x1c
    Device code: 0x1d
    Device code: 0x1e
    Device code: 0x1f
    Device code: 0x20
    Device code: 0x21
    Device code: 0x22
    Device code: 0x23
    Device code: 0x24
    Device code: 0x25
    Device code: 0x26
    Device code: 0x27
    Device code: 0x28
    Device code: 0x29
    Device code: 0x2a
    Device code: 0x2b
    Device code: 0x2c
    Device code: 0x2d
    Device code: 0x2e
    Device code: 0x2f
    Device code: 0x30
    Device code: 0x31
    Device code: 0x32
    Device code: 0x33
    Device code: 0x34
    Device code: 0x35
    Device code: 0x36
    Device code: 0x37
    Device code: 0x38
    Device code: 0x39
    Device code: 0x3a
    Device code: 0x3b
    Device code: 0x3c
    Device code: 0x3d
    Device code: 0x3e
    Device code: 0x3f
    Device code: 0x40
    Device code: 0x41
    Device code: 0x42
    Device code: 0x43
    Device code: 0x44
    Device code: 0x45
    Device code: 0x46
    Device code: 0x47
    Device code: 0x48
    Device code: 0x49
    Device code: 0x4a
    Device code: 0x4b
    Device code: 0x4c
    Device code: 0x4d
    Device code: 0x4e
    Device code: 0x4f
    Device code: 0x50
    Device code: 0x51
    Device code: 0x52
    Device code: 0x53
    Device code: 0x54
    Device code: 0x55
    Device code: 0x56
    Device code: 0x57
    Device code: 0x58
    Device code: 0x59
    Device code: 0x5a
    Device code: 0x5b
    Device code: 0x5c
    Device code: 0x5d
    Device code: 0x5e
    Device code: 0x5f
    Device code: 0x60
    Device code: 0x61
    Device code: 0x62
    Device code: 0x63
    Device code: 0x64
    Device code: 0x65
    Device code: 0x66
    Device code: 0x67
    Device code: 0x68
    Device code: 0x69
    Device code: 0x6a
    Device code: 0x6b
    Device code: 0x6c
    Device code: 0x6d
    Device code: 0x6e
    Device code: 0x6f
    Device code: 0x70
    Device code: 0x71
    Device code: 0x72
    Device code: 0x73
    Device code: 0x74
    Device code: 0x75
    Device code: 0x76
    Device code: 0x77
    Device code: 0x78
    Device code: 0x79
    Device code: 0x7a
    Device code: 0x7b
    Device code: 0x7c
    Device code: 0x7d
    Device code: 0x7e
    Device code: 0x7f

avrdude: devcode selected: 0x01
avrdude: AVR device initialized and ready to accept instructions

Reading | ################################################## | 100% 
0.05s

avrdude: Device signature = 0x1e9307
avrdude: safemode: lfuse reads as FF
avrdude: safemode: hfuse reads as D9
avrdude: reading input file "0x3F"
avrdude: writing lfuse (1 bytes):

Writing |                                                    | 0% 0.00s 
***failed;
Writing | ################################################## | 100% 
0.00s

avrdude: 1 bytes of lfuse written
avrdude: verifying lfuse memory against 0x3F:
avrdude: load data lfuse data from input file 0x3F:
avrdude: input file 0x3F contains 1 bytes
avrdude: reading on-chip lfuse data:

Reading | ################################################## | 100% 
0.00s

avrdude: verifying ...
avrdude: verification error, first mismatch at byte 0x0000
         0xff != 0x3f
avrdude: verification error; content mismatch

avrdude: safemode: lfuse reads as FF
avrdude: safemode: hfuse reads as D9
avrdude: safemode: lfuse changed! Was 3f, and is now ff
Would you like this fuse to be changed back? [y/n] n
avrdude: safemode: Fuses OK (E:FF, H:D9, L:3F)

avrdude done.  Thank you.
#4673908
Lesenswert?

Hallo,

nur zum Vergleich als Referenz habe ich gerade bei einem Atmega8-16PU
mit dem STK500 die eingestellten Fuses noch einmal geschrieben:

$> avrdude -p m8 -c stk500v2 -B 8 -vv -U lfuse:w:0x24:m -U 
hfuse:w:0xD9:m

avrdude: Version 6.1, compiled on Sep 11 2014 at 20:00:34
         Copyright (c) 2000-2005 Brian Dean, http://www.bdmicro.com/
         Copyright (c) 2007-2014 Joerg Wunsch

         System wide configuration file is "/etc/avrdude.conf"
         User configuration file is "/home/xxx/.avrduderc"
         User configuration file does not exist or is not a regular 
file, skipping

         Using Port                    : /dev/ttyS0
         Using Programmer              : stk500v2
         Setting bit clk period        : 8.0
         AVR Part                      : ATmega8
         Chip Erase delay              : 10000 us
         PAGEL                         : PD7
         BS2                           : PC2
         RESET disposition             : dedicated
         RETRY pulse                   : SCK
         serial program mode           : yes
         parallel program mode         : yes
         Timeout                       : 200
         StabDelay                     : 100
         CmdexeDelay                   : 25
         SyncLoops                     : 32
         ByteDelay                     : 0
         PollIndex                     : 3
         PollValue                     : 0x53
         Memory Detail                 :

                                  Block Poll               Page 
Polled
           Memory Type Mode Delay Size  Indx Paged  Size   Size #Pages 
MinW  MaxW   ReadBack
           ----------- ---- ----- ----- ---- ------ ------ ---- ------ 
----- ----- ---------
           eeprom         4    20   128    0 no        512    4      0 
9000  9000 0xff 0xff
           flash         33    10    64    0 yes      8192   64    128 
4500  4500 0xff 0x00
           lfuse          0     0     0    0 no          1    0      0 
2000  2000 0x00 0x00
           hfuse          0     0     0    0 no          1    0      0 
2000  2000 0x00 0x00
           lock           0     0     0    0 no          1    0      0 
2000  2000 0x00 0x00
           calibration    0     0     0    0 no          4    0      0 
0     0 0x00 0x00
           signature      0     0     0    0 no          3    0      0 
0     0 0x00 0x00

         Programmer Type : STK500V2
         Description     : Atmel STK500 Version 2.x firmware
         Programmer Model: STK500
         Hardware Version: 2
         Firmware Version Master : 2.10
         Topcard         : Unknown
         Vtarget         : 5.1 V
         SCK period      : 8.7 us
         Varef           : 5.0 V
         Oscillator      : 14.400 kHz

avrdude: AVR device initialized and ready to accept instructions

Reading | ################################################## | 100% 
0.01s

avrdude: Device signature = 0x1e9307
avrdude: safemode: lfuse reads as 24
avrdude: safemode: hfuse reads as D9
avrdude: reading input file "0x24"
avrdude: writing lfuse (1 bytes):

Writing | ################################################## | 100% 
0.00s

avrdude: 1 bytes of lfuse written
avrdude: verifying lfuse memory against 0x24:
avrdude: load data lfuse data from input file 0x24:
avrdude: input file 0x24 contains 1 bytes
avrdude: reading on-chip lfuse data:

Reading | ################################################## | 100% 
0.00s

avrdude: verifying ...
avrdude: 1 bytes of lfuse verified
avrdude: reading input file "0xD9"
avrdude: writing hfuse (1 bytes):

Writing | ################################################## | 100% 
0.00s

avrdude: 1 bytes of hfuse written
avrdude: verifying hfuse memory against 0xD9:
avrdude: load data hfuse data from input file 0xD9:
avrdude: input file 0xD9 contains 1 bytes
avrdude: reading on-chip hfuse data:

Reading | ################################################## | 100% 
0.00s

avrdude: verifying ...
avrdude: 1 bytes of hfuse verified

avrdude: safemode: lfuse reads as 24
avrdude: safemode: hfuse reads as D9
avrdude: safemode: Fuses OK (E:FF, H:D9, L:24)

avrdude done.  Thank you.
Gast #4674022
Lesenswert?

Hallo!

Danke für die vielen Antworten!

Marc V. schrieb:
> Und so: "avrdude -c avr911 -P/dev/ttyUSB0 -p m8 -U hfuse:w:0xD9:m -U
> lfuse:w:0x3F:m"
>
>  ?

geht auch nicht.

grundschüler schrieb:
> uC schrieb:
>> [y/n]
>
> probier mal 'z' ->englische Tastatur

geht auch nicht. (Außerdem ist meine Tastatur Deutsch)

Alexander S. schrieb:
> Probiere evtl. auch mal die Option -B mit verschiedenen Werten:
>
>  -B bitclock
>     Specify the bit clock period for the JTAG interface or the ISP clock
>     (JTAG ICE only).  The value is a floating-point number in
>     microseconds.

Habe 1, 4, 8, 10 und 50 probiert. Geht alles nicht.

Alexander S. schrieb:
> Mit welchem Takt läuft der Atmega8?

3,6864MHz

Alexander S. schrieb:
> Laut fuse calculator entspricht
>
>  lfuse 0xFF Brown-out detection level at VCC = 2.7 V
>  lfuse 0x3F Brown-out detection level at VCC = 4.0 V
>
> Welches Vtarget liegt an?

Die Betriebsspannung ist 5V.

Danke für alle weiteren Tipps im Voraus!
Gast #4674031
Lesenswert?

Alexander S. schrieb:
> Laut fuse calculator entspricht
>
>  lfuse 0xFF Brown-out detection level at VCC = 2.7 V
>  lfuse 0x3F Brown-out detection level at VCC = 4.0 V
>
> Welches Vtarget liegt an?

Weder noch, bei 0xff oder 0xf3 ist BODEN = 1 also disabled.


Schonmal die ISP Geschwindigkeit runtergesetzt? Externer HF Crystal/Oszi 
sitzt?
#4674164
Lesenswert?

Draco schrieb:
> Alexander S. schrieb:
>> Laut fuse calculator entspricht
>>
>>  lfuse 0xFF Brown-out detection level at VCC = 2.7 V
>>  lfuse 0x3F Brown-out detection level at VCC = 4.0 V
>>
>> Welches Vtarget liegt an?
>
> Weder noch, bei 0xff oder 0xf3 ist BODEN = 1 also disabled.

Wenn man unter http://www.engbedded.com/fusecalc
den ATmega8 auswählt und unten
low 0xFF  high 0xD9 eingibt und "Apply values" anklickt sagt er
Brown-out detection enabled; [BODEN=0]
Brown-out detection level at VCC = 2.7 V;[BODLEVEL=1]

bei
low 0x3F  high 0xD9 sagt er
Brown-out detection enabled; [BODEN=0]
Brown-out detection level at VCC = 4.0 V;[BODLEVEL=0]

0x3F, nicht 0xF3 (s.o.)
Gast #4674169
Lesenswert?

Ahh... Ja, ich hab 0xf3 gerechnet :-D Aber bei 0xff is die Brown-Out 
aber deaktiviert (BODEN = 1) weil ja das ganze Register auf 0b11111111 
steht. Muss ja dann.

@uC:

Aber normal beschreiben kann, also Flash und EEPROM, kannst du ihn?! 
Dann bleibt ja eigentlich bloß der Safemode noch übrig, weil er schreibt 
ja dann auf "Heck oder Verreck" die Fuses ins Register. Sehr komisch.
Gast #4674389
Lesenswert?

Draco schrieb:
> Aber normal beschreiben kann, also Flash und EEPROM, kannst du ihn?!
> Dann bleibt ja eigentlich bloß der Safemode noch übrig, weil er schreibt
> ja dann auf "Heck oder Verreck" die Fuses ins Register. Sehr komisch.

Ja, man kann normal ins Flash schreiben und man kann die Fuses auch 
auslesen.

Den Safemode habe ich auch probiert auszuschalten, indem ich ein -s 
angefügt habe. (Ist das richtig so?)

Ich habe auch schon an das Mäuseklavier am MK2 gedacht.
Soweit ich weiß, muss der aber einfach in der selben Stellung sein, wie 
beim Flash-Programmieren. Und so ist er ja auch eingestellt.
(Firma: Vescomp) #4674402
Lesenswert?

uC schrieb:
>> Und so: "avrdude -c avr911 -P/dev/ttyUSB0 -p m8 -U hfuse:w:0xD9:m -U
>> lfuse:w:0x3F:m"
>>
>>  ?
>
> geht auch nicht.

Alexander S. schrieb:
> $> avrdude -p m8 -c stk500v2 -B 8 -vv -U lfuse:w:0x24:m -U
> hfuse:w:0xD9:m

 ???
 Mal ist es avr911, mal stk500v2.
 Probiere ganz einfach die Reihenfolge der Fuses umzudrehen, also zuerst
 die hfuse und dann die lfuse.
#4674421
Lesenswert?

Marc V. schrieb:
> Mal ist es avr911, mal stk500v2.
>  Probiere ganz einfach die Reihenfolge der Fuses umzudrehen, also zuerst
>  die hfuse und dann die lfuse.

Das mit dem stk500v2 war zum Vergleich ein Beispiel von mir, nicht von
uC. Habe ich auch deutlich geschrieben:
"nur zum Vergleich als Referenz habe ich gerade bei einem Atmega8-16PU
mit dem STK500 die eingestellten Fuses noch einmal geschrieben:"
Beitrag "Re: avrdude schreibt keine Fuses bei ATmega8"

Die Reihenfolge der Fuses umzudrehen wurde hier
Beitrag "Re: avrdude schreibt keine Fuses bei ATmega8"
schon vorgeschlagen und hier
Beitrag "Re: avrdude schreibt keine Fuses bei ATmega8"
beantwortet.
Gast #4675764
Lesenswert?

Hi, habe genau den gleichen Fehler mit dem USBasp und arduino Uno 
(328p).
Das flashen deines Programmes geht noch, aber Fuses setzen bzw den 
Bootloader neu schreiben geht nicht. Das ganze Elend fing an nachdem ich 
Avrdude von 6.1 auf Version 6.3 und die Arduino IDE von 1.6.8 auf 
Version 1.6.10 geupdated habe. Ich bekomme folgende Fehlermeldung:
"avrdude: verification error, first mismatch at byte 0x0000
 0xfd != 0x05" Im Internet hab ich die Ursache gefunden. Bei der efuse 
werden nur 3 Bits geschrieben, aber anschliessend wird das ganze Byte 
ausgelesen und mit dem zu schreibenden Wert verglichen. Abhilfe soll ein 
patch für die avrdude.conf schaffen. Leider hat das patchen auf meinem 
Ubunturechner nicht richtig geklappt.
Hoffe ich habe euch ein bisschen helfen können und den Fehler etwas 
eingrenzen können. Wenn einer von euch es zum laufen bekommt, sagt doch 
bitte hier bescheit.
liebe Grüsse Elena
Gast #4677294
Lesenswert?

Hallo!

Habe nun von myAVR das myAVR-ProgTool heruntergeladen und auf Windows 7 
versucht die Fusebits zu schreiben. Es hat tatsächlich geklappt.

Das Programm kann die Fusebits aber nicht auslesen, deshalb wollte ich 
mit Burn-o-mat überprüfen, ob sie wirklich übernommen wurde. Auslesen 
hat ja bislang immer geklappt.

Jedoch siehe da: nun kann Burn-o-mat, aber auch avrdude selbst per 
Kommandozeile die Fusebits nicht mal mehr lesen.

Ich weiß nun wirklich nicht mehr, was da los ist....
#4678701
Lesenswert?

uC schrieb:
> Habe nun von myAVR das myAVR-ProgTool heruntergeladen und auf Windows 7
> versucht die Fusebits zu schreiben. Es hat tatsächlich geklappt.

Das ist eine sehr mutige Annahme. Mur weil du keine Fehlermeldung 
bekommen hast (sagst du zwar nicht, nehme ich aber an) heißt das nicht, 
daß es auch geklappt hat. Denn:

> Das Programm kann die Fusebits aber nicht auslesen

du hast das Ergebnis ja nicht kontrolliert.

> deshalb wollte ich
> mit Burn-o-mat überprüfen, ob sie wirklich übernommen wurde. Auslesen
> hat ja bislang immer geklappt.
>
> Jedoch siehe da: nun kann Burn-o-mat, aber auch avrdude selbst per
> Kommandozeile die Fusebits nicht mal mehr lesen.
>
> Ich weiß nun wirklich nicht mehr, was da los ist....

Es gibt einige Fuse-Einstellungen, bei denen anschließend der Zugriff 
über ISP nicht mehr funktioniert. Z.B. wenn du den Reset-Pin deaktivert 
hast oder wenn eine nicht vorhandene Taktquelle eingestellt ist. 
Höchstwahrscheinlich hat das komische Tool deine Fuses in einen solchen 
Zustand versetzt. Jetzt brauchst du erstmal einen HV-Programmer ...
Gast #4678725
Lesenswert?

Axel S. schrieb:
> Es gibt einige Fuse-Einstellungen, bei denen anschließend der Zugriff
> über ISP nicht mehr funktioniert. Z.B. wenn du den Reset-Pin deaktivert
> hast oder wenn eine nicht vorhandene Taktquelle eingestellt ist.
> Höchstwahrscheinlich hat das komische Tool deine Fuses in einen solchen
> Zustand versetzt. Jetzt brauchst du erstmal einen HV-Programmer ...

Den Flash und das EEPROM kann er ja beschreiben und lesen. Also so war 
der letzte Stand :-D
Gast #4679875
Lesenswert?

Hallo!

Genau. Flashen geht auch nach dem myAVR-Prog-Ausflug problemlos.

Dass es geklappt hat, schließe ich daraus, dass der fabrikneue ATmega8 
nun mit dem externen Quarz läuft und nicht mehr mit dem internen 
RC-Oszillator.

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