Varification Error beim Rücklesen der Fuses (ATMega103)

Gast #1317699
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
Gast
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
Gast
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
Moderator Persönliche Seite
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).
Moderator Persönliche Seite
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.
Gast
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

Antwort schreiben

Eine eigene Frage? Dieser Thread ist über 17 Jahre alt. Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.

Neuen Thread starten

Eine Lösung, Ergänzung oder Rückmeldung zu diesem Thread? Dann antworte hier.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.