Forum: Mikrocontroller und Digitale Elektronik JTAGICEmkII schreibt keine Fuses (m169)


von süppchen (Gast)


Lesenswert?

Hi,

ich bin blutiger Anfänger, was vermutlich auch die Ursache für mein 
Problem ist. Mein Ziel ist ein Heizkörperthermostat (HR20) mit der 
Firmware OpenHR20 auszustatten. Dazu habe ich mir ein AVR Lab 
geschnappt, eine JTAGICEmkII-Firmware geladen und an das Thermostat 
angeschlossen. Im ersten Moment schien keine Kommunikation möglich. Nach 
dem verdrehen von TDI und TDO konnt der Atmega169 identifiziert werden. 
Ich habe die Batterien aus dem Thermostat genommen und speise es über 
das JTAG.

So sieht meine Verkabelung aus:
1
HR20            JTAG
2
3
1 (/RESET) ---- 3 (RST)
4
2 (PE2)   
5
3 (TMS)  ------- 5 (TMS)
6
4 (TCK)  ------- 7 (SCK=TCK?)
7
5 (TDO)  ------- 9 (TDI)
8
6 (TxD)  
9
7 (RxD)  
10
8 (TDI)  ------- 1 (TDO)
11
9 (+Batt) ----- 2 (VREF)
12
10 (GND) ----- 10 (GND)

Befrage ich den m169 nach seinen Fuses erhalte ich folgende Antwort:
1
$ avrdude -p m169 -c jtagmkII -P usb -n -v
2
[...]
3
avrdude: jtagmkII_getparm(): bad response to get parameter command: RSP_ILLEGAL_PARAMETER
4
5
avrdude: jtagmkII_initialize(): warning: OCDEN fuse not programmed, single-byte EEPROM updates not possible
6
avrdude: AVR device initialized and ready to accept instructions
7
8
Reading | ################################################## | 100% 0.03s
9
10
avrdude: Device signature = 0x1e9405
11
avrdude: safemode: lfuse reads as 62
12
avrdude: safemode: hfuse reads as 91
13
avrdude: safemode: efuse reads as FD
14
15
avrdude: safemode: lfuse reads as 62
16
avrdude: safemode: hfuse reads as 91
17
avrdude: safemode: efuse reads as FD
18
avrdude: safemode: Fuses OK (E:FD, H:91, L:62)
19
20
avrdude done.  Thank you.
21
$

Der OpenHR20-Code benötigt offensichtlich folgende Konfiguration des 
Mikrocontrollers:
1
$ avrdude -p m169 -c jtagmkII -P usb -U hfuse:w:0x97:m -U lfuse:w:0x62:m -U efuse:w:0xFF:m

Leider scheint es nicht möglich zu sein an den Fuses zu rütteln:
1
avrdude: jtagmkII_initialize(): warning: OCDEN fuse not programmed, single-byte EEPROM updates not possible
2
avrdude: AVR device initialized and ready to accept instructions
3
4
Reading | ################################################## | 100% 0.03s
5
6
avrdude: Device signature = 0x1e9405
7
avrdude: reading input file "0x97"
8
avrdude: writing hfuse (1 bytes):
9
10
Writing | ################################################## | 100% 0.01s
11
12
avrdude: 1 bytes of hfuse written
13
avrdude: verifying hfuse memory against 0x97:
14
avrdude: load data hfuse data from input file 0x97:
15
avrdude: input file 0x97 contains 1 bytes
16
avrdude: reading on-chip hfuse data:
17
18
Reading | ################################################## | 100% 0.01s
19
20
avrdude: verifying ...
21
avrdude: verification error, first mismatch at byte 0x0000
22
         0x91 != 0x97
23
avrdude: verification error; content mismatch
24
25
avrdude: safemode: hfuse changed! Was 97, and is now 91
26
Would you like this fuse to be changed back? [y/n] y
27
avrdude: and COULD NOT be changed
28
avrdude: safemode: Fuses not recovered, sorry
29
30
avrdude done.  Thank you.

Auch der Parameter "-u" oder unterschiedliche Antworten auf die Frage 
"Rückgängig oder nicht?" führen dazu, dass die Konfiguration der Fuses 
unverändert bleibt.

Mache ich einen grundsätzlichen Fehler? Muss ich irgendetwas sicher 
stellen damit Fuses geändert werden dürfen? Ggf. sind sogar die Werte 
Unsinn. Es finden sich unterschiedliche im Netz:

http://www.mikrocontroller.net/articles/Heizungssteuerung_mit_Honeywell_HR20#Fuses
https://github.com/OpenHR20/OpenHR20/blob/master/rfmsrc/OpenHR20/flash_hr20.sh

Gruß süppchen

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


Lesenswert?

Hast du da (versehentlich oder absichtlich) irgendwelche Lockbits
gesetzt?  Wenn das Device gelockt ist, kann man (bis zum nächsten
chip erase) die Fuse-Konfiguration nicht mehr verändern.

von Stefan L. (timpi)


Lesenswert?

Jörg W. schrieb:
> Hast du da (versehentlich oder absichtlich) irgendwelche Lockbits
> gesetzt?

Er nich', aber Honeywell.

von süppchen (Gast)


Lesenswert?

<code>
$ avrdude -p m169 -c jtagmkII -P usb -v -U lock:r:-:b
[...]
avrdude: writing output file "<stdout>"
0b11111100
[...]
</code>

Ich versuche nun noch in Erfahrung zu bringen, was das Setup im Detail 
für Auswirkungen hat.

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


Lesenswert?

süppchen schrieb:
> Ich versuche nun noch in Erfahrung zu bringen, was das Setup im Detail
> für Auswirkungen hat.

Andere Bootsize (minimal statt maximal).

von süppchen (Gast)


Lesenswert?

1
$ avrdude -p m169 -c jtagmkII -P usb -e
hat den Controller leer geräumt und die Lockbits zurück gesetzt. Fuses 
konnten im Anschluss problemlos gesetzt werden und der Flashvorgang 
verlief fehlerfrei. Vielen Dank für die Unterstützung!

Gruß süppchen

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.