Forum: Mikrocontroller und Digitale Elektronik AtXmeag128A3.verfused?


von Holm T. (Gast)


Lesenswert?

Moin,

ich habe hier eine kommerzielle "Linie" von Prototypen einer Hardware 
für die ich Firmware zu schreiben habe. Aus Elektronischer Sicht nichts 
Besonderes, es ist jeweils ein AtXMega(128A3,256BU) der ein paar 
Sensoren abfragt, rechnet und auf unterschiedliche Arten auf Displays 
was anzeigt.

Gestern habe ich einen neuen Branch der SW anfangen wollen, habe mir 
u.A.
Makefiles "um die Ecke" kopiert und modifiziert..und damit einen 
AtXMega128A3 erfolgreich "erschossen".
Ich benutze zum programmieren ein Jtag Ice MKII und avrdude 6.3.

Was hab ich gemacht? Ich habe make jtagdis eingehebelt:
1
jtagdis:        # Disable JTAG                                                  
2
        avrdude -p ${MCU} -c ${PROGRAMMER} -P ${PRGINTERFACE} -u -U fuse4:w:0xff:m                                                                             
3
        sleep 3                                                                 
4
        # enable Brownout detector 3,0V                                         
5
        avrdude -p ${MCU} -c ${PROGRAMMER} -P ${PRGINTERFACE} -u -U fuse5:w:0xe8:m

Das hat auch funktioniert..nur war hinterher der Chip tot. Ich habe über 
ein evtl. defektes FFC Kabel am Jtag Ice philosophiert, einen Xmega 
woanders runter und auf die betreffende Hardware wieder drauf gelötet. 
Danach habe ich mir die Fuses im funktionierenden Prozessor angesehen:
1
$ avrdude -p atxmega128a3 -c jtag2pdi -P usb -t                                 
2
                                                                                
3
avrdude: AVR device initialized and ready to accept instructions                
4
                                                                                
5
Reading | ################################################## | 100%             
6
0.02s                                                                           
7
                                                                                
8
avrdude: Device signature = 0x1e9742 (probably x128a3u)                         
9
avrdude> d fuse0                                                                
10
>>> d fuse0                                                                     
11
0000  ff                                                |.                      
12
|                                                                               
13
                                                                                
14
avrdude> d fuse1                                                                
15
>>> d fuse1                                                                     
16
0000  00                                                |.                      
17
|                                                                               
18
                                                                                
19
avrdude> d fuse2                                                                
20
>>> d fuse2                                                                     
21
0000  ff                                                |.                      
22
|                                                                               
23
                                                                                
24
avrdude> d fuse3                                                                
25
>>> d fuse3                                                                     
26
"fuse3" memory type not defined for part "ATxmega128A3"                         
27
avrdude> d fuse4                                                                
28
>>> d fuse4                                                                     
29
0000  ff                                                |.                      
30
|                                                                               
31
                                                                                
32
avrdude> d fuse5                                                                
33
>>> d fuse5                                                                     
34
0000  ff                                                |.                      
35
|                                                                               
36
                                                                                
37
avrdude> q                                                                      
38
>>> q

So weit Alles ok.

Was war denn nun los? Nochmal probiert:
1
$ make jtagdis                                                                  
2
avrdude -p atxmega128a3 -c jtag2pdi -P usb -u -U fuse4:w:0xff:m                 
3
                                                                                
4
avrdude: AVR device initialized and ready to accept instructions                
5
                                                                                
6
Reading | ################################################## | 100%             
7
0.02s                                                                           
8
                                                                                
9
avrdude: Device signature = 0x1e9742 (probably x128a3u)                         
10
avrdude: NOTE: Programmer supports page erase for Xmega devices.                
11
         Each page will be erased before programming it, but no chip            
12
erase is performed.                                                             
13
         To disable page erases, specify the -D option; for a                   
14
chip-erase, use the -e option.                                                  
15
avrdude: reading input file "0xff"                                              
16
avrdude: writing fuse4 (1 bytes):                                               
17
                                                                                
18
Writing | ################################################## | 100%             
19
0.01s                                                                           
20
                                                                                
21
avrdude: 1 bytes of fuse4 written                                               
22
avrdude: verifying fuse4 memory against 0xff:                                   
23
avrdude: load data fuse4 data from input file 0xff:                             
24
avrdude: input file 0xff contains 1 bytes                                       
25
avrdude: reading on-chip fuse4 data:                                            
26
                                                                                
27
Reading | ################################################## | 100%             
28
0.00s                                                                           
29
                                                                                
30
avrdude: verifying ...                                                          
31
avrdude: 1 bytes of fuse4 verified                                              
32
                                                                                
33
avrdude done.  Thank you.                                                       
34
                                                                                
35
sleep 3                                                                         
36
avrdude -p atxmega128a3 -c jtag2pdi -P usb -u -U fuse5:w:0xe8:m                 
37
                                                                                
38
avrdude: AVR device initialized and ready to accept instructions                
39
                                                                                
40
Reading | ################################################## | 100%             
41
0.02s                                                                           
42
                                                                                
43
avrdude: Device signature = 0x1e9742 (probably x128a3u)                         
44
avrdude: NOTE: Programmer supports page erase for Xmega devices.                
45
         Each page will be erased before programming it, but no chip            
46
erase is performed.                                                             
47
         To disable page erases, specify the -D option; for a                   
48
chip-erase, use the -e option.                                                  
49
avrdude: reading input file "0xe8"                                              
50
avrdude: writing fuse5 (1 bytes):
51
                                                                                
52
Writing | ################################################## | 100%             
53
0.01s                                                                           
54
                                                                                
55
avrdude: 1 bytes of fuse5 written                                               
56
avrdude: verifying fuse5 memory against 0xe8:                                   
57
avrdude: load data fuse5 data from input file 0xe8:                             
58
avrdude: input file 0xe8 contains 1 bytes                                       
59
avrdude: reading on-chip fuse5 data:                                            
60
                                                                                
61
Reading | ################################################## | 100%             
62
0.00s                                                                           
63
                                                                                
64
avrdude: verifying ...                                                          
65
avrdude: verification error, first mismatch at byte 0x0000                      
66
         0x00 != 0xe8                                                           
67
avrdude: verification error; content mismatch                                   
68
avrdude: jtagmkII_program_disable(): bad response to leave progmode             
69
command: RSP_FAILED                                                             
70
                                                                                
71
avrdude done.  Thank you.                                                       
72
                                                                                
73
*** Error code 1                                                                
74
                                                                                
75
Stop.                                                                           
76
make: stopped in /usr/home/holm/....O-NET/src              
77
$                                                                               
78
$ avrdude -p atxmega128a3 -c jtag2pdi -P usb -e                                 
79
avrdude: jtagmkII_setparm(): bad response to set parameter command:             
80
RSP_FAILED                                                                      
81
                                                                                
82
avrdude done.  Thank you.                                                       
83
                                                                                
84
$

...hmmm :-|

Ich habe damit möglicherweise als Letztes AtXmega256A3BU erfolgreich 
programmiert..aber die 128A3 kann man damit wohl abschießen.

Lt. AtXmega-A Manual ist fusebyte 5 definiert aus BODACT 
[5..4],EESAVE[3] und BODLEVEL[2..0]. Davon sollte Nichts den Prozessor 
abschießen...

Ich habe Jörg (Tm) angerufen, konnte er sich auch nicht erklären und hat 
abends experimentiert für mich:

>As Holm Tiffe wrote:
>
>> ..damit hat der sich nun auf die selbe Art und Weise abgemeldet wie
>> der Andere.
>
>Ich habe meinen hier auch erstmal tot gelegt.
>
(Sorry für das nicht authorisierte Zitat Jörg)


Was zur Hölle ist denn hier los? Probleme mit dem Kabel meines JTAG Ice 
kann ich wohl erst mal ausschließen..
Hat das Problem schon mal Jemand gesehen und weiß evtl. wie man die 
Prozessoren wieder zum Leben erweckt? Jörg wird heute probieren seinen 
Proz. mit Amtel-Studio wieder zu erwecken...ich bin gespannt.

Ich setze mit 0xe8 eigentlich nur den BOD in Betrieb und den Level auf 
3,2V ..sollte der Prozessor sich irren und die Speisung als zu niedrig 
ansehen? ...bei Jörg auch?

Gruß,

Holm

von Matthias S. (Firma: matzetronics) (mschoeldgen)


Lesenswert?

Ist dir ein Zugriff über PDI möglich? Man kann JTAG erfolgreich abhängen 
wie bei den AVR-8, PDI müsste aber weiterhin funktionieren.
Die XMega sollten bis zu 3,6V vetragen, wenn du den BOD in Verdacht 
hast.

: Bearbeitet durch User
von Holm T. (Gast)


Lesenswert?

...das Ganze lief über PDI mit dem JTAG Ice. (jtag2pdi). Ich brauche 
Port B
für andere Dinger als JTAG, deswegen auch jtag disable.
Die Betriebsspannung hoch zu nehmen war auch meine Idee, das mache ich 
als Nächstes.

Gruß,
Holm

von Holm T. (Gast)


Lesenswert?

...ab 3,8V ist meiner hier wieder erwacht.

Die Toleranzen des Brownoutdetector-Levels liegen wahrscheinlich so hoch 
das man sich bei einem Setting von 3,2V erfolgreich vor die Türe setzen 
kann und nicht mal PDI das Ding wieder zu wecken in der Lage ist. (..bei 
gemessenen 3,32V Ub)

Ich habe jetzt statt 3,2V (0xE8) 2,7V (0xEA) programmiert und der Proz 
tut wieder was er soll...

Scheiße, ich hätte mir die blöde Umlöterei kneifen können...

Gruß,

Holm

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


Lesenswert?

confirmed

Habe hier einen ATxmega256A3 auf gleiche Weise wie Holm ins Nirvana
schicken können.  Kann sein, dass er bei mir auch bei geringerer
Spannung schon wieder lebendig geworden wäre. Der Grund dafür, dass
der BOD auch dann wirksam ist, wenn er eigentlich gar nicht sein
sollte, steht im Datenblatt unter Errata #10. :(  Damit waren dann
meine 2 x LR03 zu wenig.  Habe ihn jetzt kurzzeitig mit einer 18650
malträtiert (die dürfte „ein wenig“ über dem offiziellen Limit gewesen
sein :), die Fuse zurück gesetzt, geht wieder.

Tja, und da es im Datenblatt lediglich für BOD level 0 Garantiewerte
gibt, für alle anderen nur typische, ist das sogar noch komplett in
der Spec. :}

von Holm T. (Gast)


Lesenswert?

Jörg W. schrieb:
> confirmed
>
> Habe hier einen ATxmega256A3 auf gleiche Weise wie Holm ins Nirvana
> schicken können.  Kann sein, dass er bei mir auch bei geringerer
> Spannung schon wieder lebendig geworden wäre. Der Grund dafür, dass
> der BOD auch dann wirksam ist, wenn er eigentlich gar nicht sein
> sollte, steht im Datenblatt unter Errata #10. :(
[..]

Zeig mir das mal für den AtXmega128A3 :-)) bei mir steht da nur 256 und 
192

Gruß,

Holm

von Mikki M. (mmerten)


Lesenswert?


von Holm T. (Gast)


Lesenswert?

Ja, ich habe offensichtlich hier ne andere Revision von dem PDF.

Egal. Der Fix ist interessant: "Do not set the BOD Level higher then VCC 
even if the BOD is not used."

..hab ich nicht gemacht...und das hat das Problem nicht gefixt.

Gruß,
Holm

von Mikki M. (mmerten)


Lesenswert?

die 3,2V sind ja auch nur der typische Wert, und der Hersteller schweigt 
sich geschickt über die Toleranzen aus. Ebenso spielt wohl zusätzlich 
noch die Anstiegsgeschwindigkeit der Vcc eine Rolle, da ist man 
allerdings auch sehr zurückhaltend mit entsprechenden Angaben. Zumindest 
2,4V BOD arbeitet hier bei vielen Geräten problemlos, nachdem ich auch 
mal böse auf 3,2V hereingefallen bin.

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.