mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik ATMega644p: Fuses Rätsel.


Autor: Frank Goenninger (dg1sbg)
Datum:

Bewertung
0 lesenswert
nicht 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:
avrdude: AVR device initialized and ready to accept instructions

Reading | ################################################## | 100% 0.01s

avrdude: Device signature = 0x1e960a
avrdude: safemode: lfuse reads as 62
avrdude: safemode: hfuse reads as 99
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:
$ make writefuses
avrdude -F -p atmega644p -P /dev/cu.PL2303-00101324  -c stk500v2  -v   -U hfuse:w:0x99:m \
  -U lfuse:w:0x64:m -U efuse:w:0xfc:m && \
  avrdude -F -p atmega644p -P /dev/cu.PL2303-00101324  -c stk500v2  -v   -U hfuse:r:hfuse.txt \
  -U lfuse:r:lfuse.txt  && \
  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";'

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

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

         Using Port                    : /dev/cu.PL2303-00101324
         Using Programmer              : stk500v2
         AVR Part                      : ATMEGA644P
         Chip Erase delay              : 9000 us
         PAGEL                         : PD7
         BS2                           : PA0
         RESET disposition             : dedicated
         RETRY pulse                   : SCK
         serial program mode           : yes
         parallel program mode         : yes
         Timeout                       : 200
         StabDelay                     : 100
         CmdexeDelay                   : 25
         SyncLoops                     : 32
         ByteDelay                     : 0
         PollIndex                     : 3
         PollValue                     : 0x53
         Memory Detail                 :

                                  Block Poll               Page                       Polled
           Memory Type Mode Delay Size  Indx Paged  Size   Size #Pages MinW  MaxW   ReadBack
           ----------- ---- ----- ----- ---- ------ ------ ---- ------ ----- ----- ---------
           eeprom        65    10   128    0 no       2048    8      0  9000  9000 0xff 0xff
           flash         33     6   256    0 yes     65536  256    256  4500  4500 0xff 0xff
           lock           0     0     0    0 no          1    0      0  9000  9000 0x00 0x00
           lfuse          0     0     0    0 no          1    0      0  9000  9000 0x00 0x00
           hfuse          0     0     0    0 no          1    0      0  9000  9000 0x00 0x00
           efuse          0     0     0    0 no          1    0      0  9000  9000 0x00 0x00
           signature      0     0     0    0 no          3    0      0     0     0 0x00 0x00
           calibration    0     0     0    0 no          1    0      0     0     0 0x00 0x00

         Programmer Type : STK500V2
         Description     : Atmel STK500 Version 2.x firmware
         Programmer Model: STK500
         Hardware Version: 2
         Firmware Version Master : 2.10
         Topcard         : Unknown
         Vtarget         : 5.2 V
         SCK period      : 10.9 us
         Varef           : 5.0 V
         Oscillator      : 3.686 MHz

avrdude: AVR device initialized and ready to accept instructions

Reading | ################################################## | 100% 0.01s

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

Writing | ################################################## | 100% 0.00s

avrdude: 1 bytes of hfuse written
avrdude: verifying hfuse memory against 0x99:
avrdude: load data hfuse data from input file 0x99:
avrdude: input file 0x99 contains 1 bytes
avrdude: reading on-chip hfuse data:

Reading | ################################################## | 100% 0.00s

avrdude: verifying ...
avrdude: 1 bytes of hfuse verified
avrdude: reading input file "0x64"
avrdude: writing lfuse (1 bytes):

Writing | ################################################## | 100% 0.02s

avrdude: 1 bytes of lfuse written
avrdude: verifying lfuse memory against 0x64:
avrdude: load data lfuse data from input file 0x64:
avrdude: input file 0x64 contains 1 bytes
avrdude: reading on-chip lfuse data:

Reading | ################################################## | 100% 0.00s

avrdude: verifying ...
avrdude: 1 bytes of lfuse verified
avrdude: reading input file "0xfc"
avrdude: writing efuse (1 bytes):

Writing | ################################################## | 100% 0.01s

avrdude: 1 bytes of efuse written
avrdude: verifying efuse memory against 0xfc:
avrdude: load data efuse data from input file 0xfc:
avrdude: input file 0xfc contains 1 bytes
avrdude: reading on-chip efuse data:

Reading | ################################################## | 100% 0.00s

avrdude: verifying ...
avrdude: 1 bytes of efuse verified

avrdude: safemode: lfuse reads as 64
avrdude: safemode: hfuse reads as 99
avrdude: safemode: efuse reads as FC
avrdude: safemode: Fuses OK

avrdude done.  Thank you.


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

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

         Using Port                    : /dev/cu.PL2303-00101324
         Using Programmer              : stk500v2
         AVR Part                      : ATMEGA644P
         Chip Erase delay              : 9000 us
         PAGEL                         : PD7
         BS2                           : PA0
         RESET disposition             : dedicated
         RETRY pulse                   : SCK
         serial program mode           : yes
         parallel program mode         : yes
         Timeout                       : 200
         StabDelay                     : 100
         CmdexeDelay                   : 25
         SyncLoops                     : 32
         ByteDelay                     : 0
         PollIndex                     : 3
         PollValue                     : 0x53
         Memory Detail                 :

                                  Block Poll               Page                       Polled
           Memory Type Mode Delay Size  Indx Paged  Size   Size #Pages MinW  MaxW   ReadBack
           ----------- ---- ----- ----- ---- ------ ------ ---- ------ ----- ----- ---------
           eeprom        65    10   128    0 no       2048    8      0  9000  9000 0xff 0xff
           flash         33     6   256    0 yes     65536  256    256  4500  4500 0xff 0xff
           lock           0     0     0    0 no          1    0      0  9000  9000 0x00 0x00
           lfuse          0     0     0    0 no          1    0      0  9000  9000 0x00 0x00
           hfuse          0     0     0    0 no          1    0      0  9000  9000 0x00 0x00
           efuse          0     0     0    0 no          1    0      0  9000  9000 0x00 0x00
           signature      0     0     0    0 no          3    0      0     0     0 0x00 0x00
           calibration    0     0     0    0 no          1    0      0     0     0 0x00 0x00

         Programmer Type : STK500V2
         Description     : Atmel STK500 Version 2.x firmware
         Programmer Model: STK500
         Hardware Version: 2
         Firmware Version Master : 2.10
         Topcard         : Unknown
         Vtarget         : 5.2 V
         SCK period      : 10.9 us
         Varef           : 5.0 V
         Oscillator      : 3.686 MHz

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

avrdude done.  Thank you.

make: *** [writefuses] Error 1

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

73 Frank DG1SBG

Autor: Hubert G. (hubertg)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Du hast nicht den ClockDiv herausgenommen sondern auf 
Ext.Lowfrequ.crystal gestellt.

Autor: Frank Goenninger (dg1sbg)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hubert G. schrieb:
> Du hast nicht den ClockDiv herausgenommen sondern auf
> Ext.Lowfrequ.crystal gestellt.

Ja, aber dss sollte nicht dazu führen, dass ich den ATmega644p nach dem 
Schreiben der Fuses nicht mehr ansprechen kann ...

Gruß,
  Frank

Autor: Hubert G. (hubertg)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Wenn du keinen Quarz dran hast, kannst du ihn nicht mehr ansprechen.

Autor: Frank Goenninger (dg1sbg)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hubert G. schrieb:
> Wenn du keinen Quarz dran hast, kannst du ihn nicht mehr ansprechen.

;-)

Quarz dran !  (Mini-Mega-Board aus Elektor)

Gruß,
  Frank

Autor: Hubert G. (hubertg)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Aber sicher kein Low Frequenz Quarz.

Autor: Frank Goenninger (dg1sbg)
Datum:

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

Autor: Hubert G. (hubertg)
Datum:

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

Autor: vaaaaa (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
eventuell kann das helfen !?!?
http://www.larsen-b.com/Article/260.html

Autor: Frank Goenninger (dg1sbg)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Heureka!

Danke! Das hat geholfen ... Kaum macht man's richtig, schon 
funktioniert's. ;-)

Und jetzt zurück in den Emacs zum Programmieren ...

Grüsse

   Frank

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.