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!
Wie ist die genaue Bezeichnung des AtMega (was steht auf dem Chip) und wie rufst Du avrdude auf?
Hallo! Es steht ATMEL 0803I ATMEGA8L-8PU auf dem Chip. avrdude habe ich mit dem Befehl avrdude -c avr911 -P/dev/ttyUSB0 -p m8 -U lfuse:w:0x3F:m -U hfuse:w:0xD9:m aufgerufen.
uC schrieb: > Habe dann auch den avrdude aus der Kommandozeile ausprobiert, auch der > konnte es nicht beschreiben. uC schrieb: > avrdude habe ich mit dem Befehl > > avrdude -c avr911 -P/dev/ttyUSB0 -p m8 -U lfuse:w:0x3F:m -U > hfuse:w:0xD9:m Und die genaue Ausgabe von avrdude war wie? Besser noch ein -vv anhängen, für mehr Infos.
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.
Ich habe am Anfang auch probiert bei "Would you like this fuse to be changed back? [y/n]" y einzugeben. Dann hat er gar nichts mehr gemacht. Ist einfach hängengeblieben. Musste mit Strg+C abbrechen.
Und so:
1 | "avrdude -c avr911 -P/dev/ttyUSB0 -p m8 -U hfuse:w:0xD9:m -U lfuse:w:0x3F:m"
|
?
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.
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.
Mit welchem Takt läuft der Atmega8?
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?
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!
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?
Draco schrieb: > Externer HF Crystal/Oszi > sitzt? Nehme schon an, immerhin funktioniert ja das eingespielte Programm tadellos. Draco schrieb: > Schonmal die ISP Geschwindigkeit runtergesetzt? Was meinst du damit? Wie geht das? Draco schrieb: > Und eventuell mal den Safemode ausschalten: -s Geht auch nicht...
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.)
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.
avrdude: verifying ...
avrdude: verification error, first mismatch at byte 0x0000
0xff != 0x3f
avrdude: verification error; content mismatch
Irgendwas am Bootloader geändert, Falsche Bootloader Size in den Fuses?
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.
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.
Mit den AVR PRogrammern kenne ich mich nicht aus wegen den avrdude optionen, Schon probiert? Beitrag "ATMEGA8 mit avrdude flashen macht Probleme" Zitat: hab jetzt mal versucht die Delays sukzessive zu vergrößern und siehe da: bei -i [50..70] läuft die Kiste.
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.
Leider brachte auch -i nichts. Habe mehrere Werte probiert, von klein bis groß. Wie schon Alexander S. schrieb, stammt das Beispiel von ihm. Ich habe nur diesen einen Programmer, den MKII.
P.S.: Habe auch die Option -u probiert, also den Safemode komplett ausgeschalten. Funktioniert leider auch nicht.
bei bascom ist der flash-Teil sehr komfortabel. Man kann damit fuses sehr gut auslesen wie auch setzen. ich hatte neulich ein Problem mit fuses. ging dann aber auch mit avrdude: Beitrag "avrdude fuse-bits"
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
uC schrieb: > avrdude: Version 6.1, compiled on Nov 23 2014 at 21:15:32 Elena schrieb: > 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. Interessant. Allerdings hat uC die Version 6.1 von avrdude verwendet.
Da ist irgendwie auch kein Zusammenhang. 0xff= 1111 1111 0x3f= 0011 1111 Dann müsste der Progger allerdings eine 0x38 00111000 oder ein ähnliches Muster als Mismatch zurückgeben. EDIT: Ich habe mit Fuses und dem Atmega8 übrigens null Probleme.
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....
Noch ein UPDATE: Ich habe versucht, die Firmware vom MK2 upzudaten. Hat (von Win 7 aus) auch geklappt. Die Fusebits können leider dennoch nach wie vor nicht gelesen und nicht geschrieben werden.
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 ...
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
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.
UPDATE: Leider besteht mein Problem immer noch. Bin weiterhin für eure Ideen dankbar!
Einfach mal nen 3€ USBasp als vergleich kaufen? Bzw. schonmal als Test versucht einen Bootloader mit den Fuses und Lockbits zu flashen?
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.