ATMega644p: Fuses Rätsel.

OP #1508688
Lesenswert?

Hallo zusammen,

nachdem man mir empfohlen hat, anstatt des ATmega32 den 644p 
einzusetznen (wegen Speicherbedarf meiner Anwendung), habe ich versucht, 
den 644p zu programmieren.

Das Programm läuft zwar, aber extrem (!) langsam. Ich habe dann die 
Fuses angeschaut:
1
avrdude: AVR device initialized and ready to accept instructions
2

3
Reading | ################################################## | 100% 0.01s
4

5
avrdude: Device signature = 0x1e960a
6
avrdude: safemode: lfuse reads as 62
7
avrdude: safemode: hfuse reads as 99
8
avrdude: safemode: efuse reads as FF

Mit dem Fuse Calculator aus http://www.engbedded.com/cgi-bin/fcx.cgi 
ergibt das, dass die interne 8-fache Taktteilung aktiv ist.

Dieses rausgenommen, ergibt die Werte Low Fuse = 0x64, High Fuse = 0x99, 
Ext. Fuse = 0xFF. Mit dem STK500v2 und AVRDUDE 5.6 habe ich nun bei zwei 
644p Chips die folgenden Ergebnisse bzw Fehler:
1
$ make writefuses
2
avrdude -F -p atmega644p -P /dev/cu.PL2303-00101324  -c stk500v2  -v   -U hfuse:w:0x99:m \
3
  -U lfuse:w:0x64:m -U efuse:w:0xfc:m && \
4
  avrdude -F -p atmega644p -P /dev/cu.PL2303-00101324  -c stk500v2  -v   -U hfuse:r:hfuse.txt \
5
  -U lfuse:r:lfuse.txt  && \
6
  echo "High Fuse Bits: \c" && od -d hfuse.txt | head -n 1 | sed -e 's/0000000 *//' | xargs -i perl -e 'tr= unpack("B32", pack("N",{})); tr =~ s/.*([01]{4})([01]{4}) /; print "tr\n";' && echo "Low Fuse Bits: \c" && od -d lfuse.txt | head -n 1 | sed -e 's/0000000 *//' | xargs -i perl -e 'tr= unpack("B32", pack("N",{})); tr =~ s/.*([01]{4})([01]{4}) /; print "tr\n";'
7

8
avrdude: Version 5.6, compiled on Apr 15 2009 at 17:54:59
9
         Copyright (c) 2000-2005 Brian Dean, http://www.bdmicro.com/
10

11
         System wide configuration file is "/usr/local/CrossPack-AVR-20090415/etc/avrdude.conf"
12
         User configuration file is "/Users/frgo/.avrduderc"
13
         User configuration file does not exist or is not a regular file, skipping
14

15
         Using Port                    : /dev/cu.PL2303-00101324
16
         Using Programmer              : stk500v2
17
         AVR Part                      : ATMEGA644P
18
         Chip Erase delay              : 9000 us
19
         PAGEL                         : PD7
20
         BS2                           : PA0
21
         RESET disposition             : dedicated
22
         RETRY pulse                   : SCK
23
         serial program mode           : yes
24
         parallel program mode         : yes
25
         Timeout                       : 200
26
         StabDelay                     : 100
27
         CmdexeDelay                   : 25
28
         SyncLoops                     : 32
29
         ByteDelay                     : 0
30
         PollIndex                     : 3
31
         PollValue                     : 0x53
32
         Memory Detail                 :
33

34
                                  Block Poll               Page                       Polled
35
           Memory Type Mode Delay Size  Indx Paged  Size   Size #Pages MinW  MaxW   ReadBack
36
           ----------- ---- ----- ----- ---- ------ ------ ---- ------ ----- ----- ---------
37
           eeprom        65    10   128    0 no       2048    8      0  9000  9000 0xff 0xff
38
           flash         33     6   256    0 yes     65536  256    256  4500  4500 0xff 0xff
39
           lock           0     0     0    0 no          1    0      0  9000  9000 0x00 0x00
40
           lfuse          0     0     0    0 no          1    0      0  9000  9000 0x00 0x00
41
           hfuse          0     0     0    0 no          1    0      0  9000  9000 0x00 0x00
42
           efuse          0     0     0    0 no          1    0      0  9000  9000 0x00 0x00
43
           signature      0     0     0    0 no          3    0      0     0     0 0x00 0x00
44
           calibration    0     0     0    0 no          1    0      0     0     0 0x00 0x00
45

46
         Programmer Type : STK500V2
47
         Description     : Atmel STK500 Version 2.x firmware
48
         Programmer Model: STK500
49
         Hardware Version: 2
50
         Firmware Version Master : 2.10
51
         Topcard         : Unknown
52
         Vtarget         : 5.2 V
53
         SCK period      : 10.9 us
54
         Varef           : 5.0 V
55
         Oscillator      : 3.686 MHz
56

57
avrdude: AVR device initialized and ready to accept instructions
58

59
Reading | ################################################## | 100% 0.01s
60

61
avrdude: Device signature = 0x1e960a
62
avrdude: safemode: lfuse reads as 62
63
avrdude: safemode: hfuse reads as 99
64
avrdude: safemode: efuse reads as FF
65
avrdude: reading input file "0x99"
66
avrdude: writing hfuse (1 bytes):
67

68
Writing | ################################################## | 100% 0.00s
69

70
avrdude: 1 bytes of hfuse written
71
avrdude: verifying hfuse memory against 0x99:
72
avrdude: load data hfuse data from input file 0x99:
73
avrdude: input file 0x99 contains 1 bytes
74
avrdude: reading on-chip hfuse data:
75

76
Reading | ################################################## | 100% 0.00s
77

78
avrdude: verifying ...
79
avrdude: 1 bytes of hfuse verified
80
avrdude: reading input file "0x64"
81
avrdude: writing lfuse (1 bytes):
82

83
Writing | ################################################## | 100% 0.02s
84

85
avrdude: 1 bytes of lfuse written
86
avrdude: verifying lfuse memory against 0x64:
87
avrdude: load data lfuse data from input file 0x64:
88
avrdude: input file 0x64 contains 1 bytes
89
avrdude: reading on-chip lfuse data:
90

91
Reading | ################################################## | 100% 0.00s
92

93
avrdude: verifying ...
94
avrdude: 1 bytes of lfuse verified
95
avrdude: reading input file "0xfc"
96
avrdude: writing efuse (1 bytes):
97

98
Writing | ################################################## | 100% 0.01s
99

100
avrdude: 1 bytes of efuse written
101
avrdude: verifying efuse memory against 0xfc:
102
avrdude: load data efuse data from input file 0xfc:
103
avrdude: input file 0xfc contains 1 bytes
104
avrdude: reading on-chip efuse data:
105

106
Reading | ################################################## | 100% 0.00s
107

108
avrdude: verifying ...
109
avrdude: 1 bytes of efuse verified
110

111
avrdude: safemode: lfuse reads as 64
112
avrdude: safemode: hfuse reads as 99
113
avrdude: safemode: efuse reads as FC
114
avrdude: safemode: Fuses OK
115

116
avrdude done.  Thank you.
117

118

119
avrdude: Version 5.6, compiled on Apr 15 2009 at 17:54:59
120
         Copyright (c) 2000-2005 Brian Dean, http://www.bdmicro.com/
121

122
         System wide configuration file is "/usr/local/CrossPack-AVR-20090415/etc/avrdude.conf"
123
         User configuration file is "/Users/frgo/.avrduderc"
124
         User configuration file does not exist or is not a regular file, skipping
125

126
         Using Port                    : /dev/cu.PL2303-00101324
127
         Using Programmer              : stk500v2
128
         AVR Part                      : ATMEGA644P
129
         Chip Erase delay              : 9000 us
130
         PAGEL                         : PD7
131
         BS2                           : PA0
132
         RESET disposition             : dedicated
133
         RETRY pulse                   : SCK
134
         serial program mode           : yes
135
         parallel program mode         : yes
136
         Timeout                       : 200
137
         StabDelay                     : 100
138
         CmdexeDelay                   : 25
139
         SyncLoops                     : 32
140
         ByteDelay                     : 0
141
         PollIndex                     : 3
142
         PollValue                     : 0x53
143
         Memory Detail                 :
144

145
                                  Block Poll               Page                       Polled
146
           Memory Type Mode Delay Size  Indx Paged  Size   Size #Pages MinW  MaxW   ReadBack
147
           ----------- ---- ----- ----- ---- ------ ------ ---- ------ ----- ----- ---------
148
           eeprom        65    10   128    0 no       2048    8      0  9000  9000 0xff 0xff
149
           flash         33     6   256    0 yes     65536  256    256  4500  4500 0xff 0xff
150
           lock           0     0     0    0 no          1    0      0  9000  9000 0x00 0x00
151
           lfuse          0     0     0    0 no          1    0      0  9000  9000 0x00 0x00
152
           hfuse          0     0     0    0 no          1    0      0  9000  9000 0x00 0x00
153
           efuse          0     0     0    0 no          1    0      0  9000  9000 0x00 0x00
154
           signature      0     0     0    0 no          3    0      0     0     0 0x00 0x00
155
           calibration    0     0     0    0 no          1    0      0     0     0 0x00 0x00
156

157
         Programmer Type : STK500V2
158
         Description     : Atmel STK500 Version 2.x firmware
159
         Programmer Model: STK500
160
         Hardware Version: 2
161
         Firmware Version Master : 2.10
162
         Topcard         : Unknown
163
         Vtarget         : 5.2 V
164
         SCK period      : 10.9 us
165
         Varef           : 5.0 V
166
         Oscillator      : 3.686 MHz
167

168
avrdude: stk500v2_command(): command failed
169
avrdude: stk500v2_recv(): checksum error
170
avrdude: stk500v2_program_enable(): bad STK600 connection status: Unknown (0x64)
171
avrdude: initialization failed, rc=-1
172
avrdude: AVR device initialized and ready to accept instructions
173
avrdude: Device signature = 0x000000
174
avrdude: Yikes!  Invalid device signature.
175
avrdude: Expected signature for ATMEGA644P is 1E 96 0A
176

177
avrdude done.  Thank you.
178

179
make: *** [writefuses] Error 1

Was mach ich bloß falsch ??? Danke für jeden Hinweis ... !

73 Frank DG1SBG
OP #1508826
Lesenswert?

Hm. Guter Punkt - was ist denn ein Low Freq. Quarz bzw. bis zu welcher 
Freq. ? Ich habe einen 8 MHz Quarz dran.

Oder, mal anders gefragt: Was muss ich tun, um den externen Quarz zu 
aktivieren - ich habe keine Fuses Kombination gefunden, die den enabled 
- nur die "Low Freq." Variante ... ???

Danke!!!!

Und: Irgendeine Chance, den "verhunzten" ATmega644p wiederzubeleben ?

Gruß,
  Frank
#1508831
Lesenswert?

Ein Ext.Low Frequenz Crystal ist ein Uhrenquarz, 32kHz
Einstellen musst du Ext.Crystal Osz. 8MHz
Einen Takt mit etwa 32kHz an XTAL1 und die Frequenz des Programmer auf 
das niedrigste einstellen, unter 1kHz da der Taktteiler auch noch aktiv 
ist. Dann kannst du die Fuses umstellen.

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren