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
Welche Bits der Extended Fuse sind valid, alle?
Ohne nachzugucken: ich glaube mich zu erinnern, dass der ATmega103 gar keine efuse hat.
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
Sorry, zu stk500.exe kann ich dir nichts sagen. Wenn du's mit avrdude probieren willst, kann ich dir ggf. Hinweise geben.
Wie verhält sich der Mega103 bei avrdude? wenn du dort experte bist. Kannst Du die Bits dort lesen und Verifizieren? Gruß GundelGaukeley
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
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).
Sorry hatte keine Zeit hast Du es jetzt mal Ausprobiert was AVRDude mit nem 103 macht. ?
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.
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.