mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik AtXmeag128A3.verfused?


Announcement: there is an English version of this forum on EmbDev.net. Posts you create there will be displayed on Mikrocontroller.net and EmbDev.net.
Autor: Holm T. (holm)
Datum:

Bewertung
0 lesenswert
nicht 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:
jtagdis:        # Disable JTAG                                                  
        avrdude -p ${MCU} -c ${PROGRAMMER} -P ${PRGINTERFACE} -u -U fuse4:w:0xff:m                                                                             
        sleep 3                                                                 
        # enable Brownout detector 3,0V                                         
        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:
$ avrdude -p atxmega128a3 -c jtag2pdi -P usb -t                                 
                                                                                
avrdude: AVR device initialized and ready to accept instructions                
                                                                                
Reading | ################################################## | 100%             
0.02s                                                                           
                                                                                
avrdude: Device signature = 0x1e9742 (probably x128a3u)                         
avrdude> d fuse0                                                                
>>> d fuse0                                                                     
0000  ff                                                |.                      
|                                                                               
                                                                                
avrdude> d fuse1                                                                
>>> d fuse1                                                                     
0000  00                                                |.                      
|                                                                               
                                                                                
avrdude> d fuse2                                                                
>>> d fuse2                                                                     
0000  ff                                                |.                      
|                                                                               
                                                                                
avrdude> d fuse3                                                                
>>> d fuse3                                                                     
"fuse3" memory type not defined for part "ATxmega128A3"                         
avrdude> d fuse4                                                                
>>> d fuse4                                                                     
0000  ff                                                |.                      
|                                                                               
                                                                                
avrdude> d fuse5                                                                
>>> d fuse5                                                                     
0000  ff                                                |.                      
|                                                                               
                                                                                
avrdude> q                                                                      
>>> q  

So weit Alles ok.

Was war denn nun los? Nochmal probiert:
$ make jtagdis                                                                  
avrdude -p atxmega128a3 -c jtag2pdi -P usb -u -U fuse4:w:0xff:m                 
                                                                                
avrdude: AVR device initialized and ready to accept instructions                
                                                                                
Reading | ################################################## | 100%             
0.02s                                                                           
                                                                                
avrdude: Device signature = 0x1e9742 (probably x128a3u)                         
avrdude: NOTE: Programmer supports page erase for Xmega devices.                
         Each page will be erased before programming it, but no chip            
erase is performed.                                                             
         To disable page erases, specify the -D option; for a                   
chip-erase, use the -e option.                                                  
avrdude: reading input file "0xff"                                              
avrdude: writing fuse4 (1 bytes):                                               
                                                                                
Writing | ################################################## | 100%             
0.01s                                                                           
                                                                                
avrdude: 1 bytes of fuse4 written                                               
avrdude: verifying fuse4 memory against 0xff:                                   
avrdude: load data fuse4 data from input file 0xff:                             
avrdude: input file 0xff contains 1 bytes                                       
avrdude: reading on-chip fuse4 data:                                            
                                                                                
Reading | ################################################## | 100%             
0.00s                                                                           
                                                                                
avrdude: verifying ...                                                          
avrdude: 1 bytes of fuse4 verified                                              
                                                                                
avrdude done.  Thank you.                                                       
                                                                                
sleep 3                                                                         
avrdude -p atxmega128a3 -c jtag2pdi -P usb -u -U fuse5:w:0xe8:m                 
                                                                                
avrdude: AVR device initialized and ready to accept instructions                
                                                                                
Reading | ################################################## | 100%             
0.02s                                                                           
                                                                                
avrdude: Device signature = 0x1e9742 (probably x128a3u)                         
avrdude: NOTE: Programmer supports page erase for Xmega devices.                
         Each page will be erased before programming it, but no chip            
erase is performed.                                                             
         To disable page erases, specify the -D option; for a                   
chip-erase, use the -e option.                                                  
avrdude: reading input file "0xe8"                                              
avrdude: writing fuse5 (1 bytes):
                                                                                
Writing | ################################################## | 100%             
0.01s                                                                           
                                                                                
avrdude: 1 bytes of fuse5 written                                               
avrdude: verifying fuse5 memory against 0xe8:                                   
avrdude: load data fuse5 data from input file 0xe8:                             
avrdude: input file 0xe8 contains 1 bytes                                       
avrdude: reading on-chip fuse5 data:                                            
                                                                                
Reading | ################################################## | 100%             
0.00s                                                                           
                                                                                
avrdude: verifying ...                                                          
avrdude: verification error, first mismatch at byte 0x0000                      
         0x00 != 0xe8                                                           
avrdude: verification error; content mismatch                                   
avrdude: jtagmkII_program_disable(): bad response to leave progmode             
command: RSP_FAILED                                                             
                                                                                
avrdude done.  Thank you.                                                       
                                                                                
*** Error code 1                                                                
                                                                                
Stop.                                                                           
make: stopped in /usr/home/holm/....O-NET/src              
$                                                                               
$ avrdude -p atxmega128a3 -c jtag2pdi -P usb -e                                 
avrdude: jtagmkII_setparm(): bad response to set parameter command:             
RSP_FAILED                                                                      
                                                                                
avrdude done.  Thank you.                                                       
                                                                                
$ 

...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

: Bearbeitet durch User
Autor: Matthias S. (Firma: matzetronics) (mschoeldgen)
Datum:

Bewertung
0 lesenswert
nicht 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
Autor: Holm T. (holm)
Datum:

Bewertung
0 lesenswert
nicht 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

: Bearbeitet durch User
Autor: Holm T. (holm)
Datum:

Bewertung
0 lesenswert
nicht 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

: Bearbeitet durch User
Autor: Jörg W. (dl8dtl) (Moderator) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht 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. :}

Autor: Holm T. (holm)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Mikki M. (mmerten)
Datum:

Bewertung
0 lesenswert
nicht lesenswert

Autor: Holm T. (holm)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Mikki M. (mmerten)
Datum:

Bewertung
0 lesenswert
nicht 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.

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.