Forum: Mikrocontroller und Digitale Elektronik Varification Error beim Rücklesen der Fuses (ATMega103)


von GundelGaukeley (Gast)


Lesenswert?

Hallo Zusammen,

Ihr werdet euch sicherlich Fragen, was ich mit so einem alten Schätzchen 
mache. Eigendlich garnicht derzeit verwende ich einen Mega128 für das 
Projekt. Ich muss aber Leider abwärtskompatible bleiben und da kommt 
jetzt der 103'er ins Spiel.

Programmieren mit anschließender Verifikation von Flash und EEPROM
Klappt bestens (mkII mit skt500.exe)

jetzt Programmiere ich die Fuse

stk500.exe -cUSB -dATMEGA103 -peDF -veDF

beim Verify bricht das Programm mit einem Fehler ab.

Lese ich jetzt die Fuse durch -q aus erhalte ich mal 0x1F 0xCF 0x0F
als Antwort vom mkII zurück.

Kann sich jemand vorstellen warum dieses so ist

Gruß

GundelGaukeley

P.S. Die Lockbit sind 0xFF

von Stefan B. (stefan) Benutzerseite


Lesenswert?

Welche Bits der Extended Fuse sind valid, alle?

von Jörg W. (dl8dtl) (Moderator) Benutzerseite


Lesenswert?

Ohne nachzugucken: ich glaube mich zu erinnern, dass der ATmega103
gar keine efuse hat.

von GundelGaukeley (Gast)


Lesenswert?

Richtig

ich Programmiere ja auch keine eFuses die würden Programmiert mit -E und 
Verifiziert mit -G

Ok ein Problem (Vermutung) könnte es sein das der Parameter -f und -F 
ein 16-bit hex value erwartet ich Ihn aber nur ein 8-bit hex value 
schicke?

Aber der 103 hat nur eim Fuse Byte also 8 Bit


Gruß

GundelGaukeley

von Jörg W. (dl8dtl) (Moderator) Benutzerseite


Lesenswert?

Sorry, zu stk500.exe kann ich dir nichts sagen.  Wenn du's mit
avrdude probieren willst, kann ich dir ggf. Hinweise geben.

von GundelGaukeley (Gast)


Lesenswert?

Wie verhält sich der Mega103 bei avrdude?
wenn du dort experte bist.

Kannst Du die Bits dort lesen und Verifizieren?

Gruß

GundelGaukeley

von GundelGaukeley (Gast)


Lesenswert?

Mit dem experten bitte nicht falsch verstehen
--> Ist zu heiß heute und das mit meinem Problem nervt

Sorry --> So nochmal Ohne Zynismus


Kannst Du mit avrDude die Kontroller Fuses Fehlerfrei immer Lesen.

Gruß

GundelGaukeley

von Jörg W. (dl8dtl) (Moderator) Benutzerseite


Lesenswert?

GundelGaukeley schrieb:
> Wie verhält sich der Mega103 bei avrdude?

Kann ich dir erst sagen, wenn ich zu Hause bin.  Ich glaube, ich habe
noch einen ATmega103 irgendwo in der Kiste liegen, den könnte ich
mal in einen STK501 reinlegen.  Ping mich mal heute abend (gern auch
per email).

von GundelGaukeley (Gast)


Lesenswert?

Sorry hatte keine Zeit hast Du es jetzt mal Ausprobiert was AVRDude mit 
nem 103 macht. ?

von Jörg W. (dl8dtl) (Moderator) Benutzerseite


Lesenswert?

Hatte auch gerade wieder dran gedacht.
1
% avrdude -c stk500v2 -P /dev/cuad0 -p m103 -U fuse:r:-:h
2
3
avrdude: AVR device initialized and ready to accept instructions
4
5
Reading | ################################################## | 100% 0.01s
6
7
avrdude: Device signature = 0x1e9701
8
avrdude: reading fuse memory:
9
10
Reading | ################################################## | 100% 0.00s
11
12
avrdude: writing output file "<stdout>"
13
0xb
14
15
avrdude: safemode: Fuses OK
16
17
avrdude done.  Thank you.

Wird also offenbar als 0x0B ausgelesen.  AVRDUDE maskiert dabei die
nicht definierten Bits 2, 5, 7 und 8 aus, Bit 6 ist SPIEN, die natürlich
gesetzt ist.  EESAVE (Bit 3), SUT1 (Bit 1) und SUT0 (Bit 0) sind alle
gelöscht.  Ein Versuch, EESAVE zu setzen, sieht erfolgreich aus:
1
% avrdude -c stk500v2 -P /dev/cuad0 -p m103 -U fuse:w:0x03:m
2
3
avrdude: AVR device initialized and ready to accept instructions
4
5
Reading | ################################################## | 100% 0.01s
6
7
avrdude: Device signature = 0x1e9701
8
avrdude: reading input file "0x03"
9
avrdude: writing fuse (1 bytes):
10
11
Writing | ################################################## | 100% 0.02s
12
13
avrdude: 1 bytes of fuse written
14
avrdude: verifying fuse memory against 0x03:
15
avrdude: load data fuse data from input file 0x03:
16
avrdude: input file 0x03 contains 1 bytes
17
avrdude: reading on-chip fuse data:
18
19
Reading | ################################################## | 100% 0.00s
20
21
avrdude: verifying ...
22
avrdude: 1 bytes of fuse verified
23
24
avrdude: safemode: Fuses OK
25
26
avrdude done.  Thank you.
27
28
% avrdude -c stk500v2 -P /dev/cuad0 -p m103 -U fuse:r:-:h
29
30
avrdude: AVR device initialized and ready to accept instructions
31
32
Reading | ################################################## | 100% 0.01s
33
34
avrdude: Device signature = 0x1e9701
35
avrdude: reading fuse memory:
36
37
Reading | ################################################## | 100% 0.00s
38
39
avrdude: writing output file "<stdout>"
40
0x3
41
42
avrdude: safemode: Fuses OK
43
44
avrdude done.  Thank you.

Sieht also alles in Ordnung aus, denke ich.

von GundelGaukeley (Gast)


Lesenswert?

Hallo Jörg,

Es sieht so aus als ob AVRDude etwas cleverer ist als die stk500.exe die 
List bei der Verifikation des Fuse Byte das komplett Byte aus, erkennt 
aber nicht das nur das Low Nibble im Byte die für den Kontroller 
wichtigen Informationen enthält. Ich habe das ganze jetzt über eine 
Batch Datei geregelt. Um das Fuse Byte zu Kontrollieren Lese ich mit -q 
das Byte und Frage dann mittels einer FOR operation in der Commando Line 
die ausgabe des STK500.exe ab. Das heißt ist das Low Nibble = 0xF  ist 
meine Fuse richtig programmiert.
1
FOR /F "skip=2 delims=() tokens=2" %%A in ('STK500.exe -cUSB -dATMEGA103 -q') do ( usw... )

Ich hab nur ganz selten einen Mega103 und deshalb auf AVRDude 
umzusteigen Lohnt sich nicht

Vielen Danke nochmals für deine Hilfe

Gruß

GundelGaukeley

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.