Forum: Mikrocontroller und Digitale Elektronik Falsche Adresse beim Auslesen der Fuses mit AVRDUDE


von Johannes (Gast)


Lesenswert?

Hallo,
ich habe gerade zum ersten mal eine Platine selber mit einem Atmega328P 
und einen 8MHZ quarz erstellt. Der Controller läuft mit 3,3V
Jetzt habe ich mit avrdude die fuses ausgelesen
avrdude -c stk500v2 -P com7 -p m328p -n -v
und folgendes erhalten
        System wide configuration file is "H:\Apps\AVRdude\avrdude.conf"

         Using Port                    : com7
         Using Programmer              : stk500v2
         AVR Part                      : ATmega328P
         Chip Erase delay              : 9000 us
         PAGEL                         : PD7
         BS2                           : PC2
         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    20     4    0 no       1024    4      0 
3600  3600 0xff 0xff
           flash         65     6   128    0 yes     32768  128    256 
4500  4500 0xff 0xff
           lfuse          0     0     0    0 no          1    0      0 
4500  4500 0x00 0x00
           hfuse          0     0     0    0 no          1    0      0 
4500  4500 0x00 0x00
           efuse          0     0     0    0 no          1    0      0 
4500  4500 0x00 0x00
           lock           0     0     0    0 no          1    0      0 
4500  4500 0x00 0x00
           calibration    0     0     0    0 no          1    0      0 
0     0 0x00 0x00
           signature      0     0     0    0 no          3    0      0 
0     0 0x00 0x00

         Programmer Type : STK500V2
         Description     : Atmel STK500 Version 2.x firmware
         Programmer Model: STK500
         Hardware Version: 10
         Firmware Version Master : 2.10
avrdude: stk500v2_command(): command failed
avrdude: stk500v2_getparm(): failed to get parameter 0x9a
         Topcard         : Unknown
         Vtarget         : 5.0 V
         SCK period      : 17.4 us
         Varef           : 5.0 V
         Oscillator      : Off

avrdude: AVR device initialized and ready to accept instructions

Reading | ################################################## | 100% 
0.03s

avrdude: Device signature = 0x1e95ff
avrdude: Expected signature for ATmega328P is 1E 95 0F
         Double check chip, or use -F to override this check.

avrdude done.  Thank you.

Wovon ist die signatur 0x1e95ff? Erwartet wurde ja 0x1e950f
Da er aber eine Signatur bekommen hat, ist die Verbindung richtig? Oder 
holt der sich diese irgendwo anders her?

und woran kann es liegen, dass zwischendrinn was failt?
avrdude: stk500v2_command(): command failed
avrdude: stk500v2_getparm(): failed to get parameter 0x9a

Habe die Platine durchgemssen. Verbindungen und Spannung ist überall da.

von c-hater (Gast)


Lesenswert?

Johannes schrieb:

> avrdude: Device signature = 0x1e95ff
> avrdude: Expected signature for ATmega328P is 1E 95 0F

> Wovon ist die signatur 0x1e95ff?

Wackelkontakt/miese Lötstelle.

> Da er aber eine Signatur bekommen hat, ist die Verbindung richtig?

Ja, sehr wahrscheinlich, da zumindest Teile erwartungsgemäß sind.

> und woran kann es liegen, dass zwischendrinn was failt?

Wenn Wackelkontakt, dann wirkt der natürlich nicht nur beim Auslesen der 
Device-ID.

von Christian H. (netzwanze) Benutzerseite


Lesenswert?

Ist die id immer gleich? Falls ja, ist es ein sehr beständiger 
Wackelkontakt.

von Johannes (Gast)


Lesenswert?

Christian H. schrieb:
> Ist die id immer gleich?

Nein, die ist immer unterschiedlich.
Auch die Meldung ist unterschiedlich (meistens jedoch eine andere Id)

Manchmal erhalte ich auch
avrdude: Device signature = 0x1e950f
avrdude: safemode: Verify error - unable to read lfuse properly. 
Programmer may not be reliable.
avrdude: safemode: To protect your AVR the programming will be aborted

oder

avrdude: stk500v2_command(): command failed
avrdude: initialization failed, rc=-1
         Double check connections and try again, or use -F to override
         this check.

von Einer K. (Gast)


Lesenswert?

Johannes schrieb:
> Double check connections and try again,
Glaube das!

Prüfe Verkabelung und Versorgung.

Könnte auch ein grenzwertiger Takt sein
Avrdude kennt den -B Parameter

von c-hater (Gast)


Lesenswert?

Arduino Fanboy D. schrieb:

> Könnte auch ein grenzwertiger Takt sein

Eher unwahrscheinlich, das sieht dann anders aus. Da sind dann höchstens 
einzelne Bits gekippt und dann die die nachfolgenden verschoben. Kommt 
aber auch vor, dass nur Verschiebungen zu sehen sind, wenn halt das 
ausgelassene Bit mitten in einer Folge gleicher Bits liegt.

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


Lesenswert?

Johannes schrieb:
> ich habe gerade zum ersten mal eine Platine selber mit einem Atmega328P
> und einen 8MHZ quarz erstellt.

Zeig die doch mal her.

Fehlende Abblockkondensatoren? Schlechte GND-Führung?

von Johannes (Gast)


Lesenswert?

Arduino Fanboy D. schrieb:
> Könnte auch ein grenzwertiger Takt sein
> Avrdude kennt den -B Parameter

Ja, das war es.

habe einmal mit -B 200 gemacht, dann hat er es gefunden und ich kann 
auch immer flashen.

von c-hater (Gast)


Lesenswert?

Johannes schrieb:

> habe einmal mit -B 200 gemacht, dann hat er es gefunden und ich kann
> auch immer flashen.

Dann hast du nachweislich einen ziemlich beschissenen Programmer.

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


Lesenswert?

c-hater schrieb:
> Dann hast du nachweislich einen ziemlich beschissenen Programmer.

Oder einen schlechten Aufbau.

von Alexander S. (alesi)


Lesenswert?

Johannes schrieb:
> habe einmal mit -B 200 gemacht, dann hat er es gefunden

Hast Du auch einmal kleinere Werte, z.B. -B 10, ausprobiert oder geht es 
nur ab -B 200?

von c-hater (Gast)


Lesenswert?

Jörg W. schrieb:

> Oder einen schlechten Aufbau.

Wäre auch denkbar, ja.

von Johannes (Gast)


Lesenswert?

Alexander S. schrieb:
> Hast Du auch einmal kleinere Werte, z.B. -B 10, ausprobiert oder geht es
> nur ab -B 200?

Ja, mit -B 10 geht es auch.
Jetzt geht es auch komplett ohne -B (auch nach neustart).
Wird da irgendwie der letzte Wert irgendwo gespeichert?

Beitrag #6317972 wurde von einem Moderator gelöscht.
von Jörg W. (dl8dtl) (Moderator) Benutzerseite


Lesenswert?

Johannes schrieb:
> Wird da irgendwie der letzte Wert irgendwo gespeichert?

Ja, wenn es ein originaler STK500 ist, wird der Wert gespeichert.

Wenn du durch das Setzen der Fuses im AVR einen schnelleren Takt 
produzierst als vorher (bspw. durch Löschen der CKDIV8-Fuse), dann 
kannst du danach auch mit einem schnelleren ISP-Takt arbeiten. Käme als 
potenzielle Ursache auch in Frage.

Beitrag #6318001 wurde von einem Moderator gelöscht.
Beitrag #6318003 wurde von einem Moderator gelöscht.
Beitrag #6318005 wurde von einem Moderator gelöscht.
Beitrag #6318006 wurde von einem Moderator gelöscht.
Beitrag #6318025 wurde von einem Moderator gelöscht.
Beitrag #6318026 wurde von einem Moderator gelöscht.
Beitrag #6318027 wurde von einem Moderator gelöscht.
Beitrag #6318028 wurde von einem Moderator gelöscht.
von Neugieriger (Gast)


Lesenswert?

Hallo

Johannes schrieb:
> und folgendes erhalten
>         System wide configuration file is "H:\Apps\AVRdude\avrdude.conf"
>
>          Using Port                    : com7
>          Using Programmer              : stk500v2
>          AVR Part                      : ATmega328P
>          Chip Erase delay              : 9000 us
>          PAGEL                         : PD7
...

Wo kann ich eigentlich Nachschauen was alle diese Ausgaben bedeuten?

Manches ist ja mehr oder weniger selbsterklärend, vieles aber nicht bzw. 
wäre es interessant zu wissen warum bestimmte Werte "gewählt" wurden?

Google findet zumindest mit "Erklärung AVRDude Ausgabe" und ähnlichen 
Suchbegriffen nicht wirklich was brauchbares.

Neugieriger

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


Lesenswert?

Neugieriger schrieb:
> Manches ist ja mehr oder weniger selbsterklärend, vieles aber nicht bzw.
> wäre es interessant zu wissen warum bestimmte Werte "gewählt" wurden?

Die kommen, sofern es nicht voreingestellte Werte sind, aus der 
avrdude.conf.

Beitrag #6318063 wurde von einem Moderator gelöscht.
Beitrag #6318064 wurde von einem Moderator gelöscht.
Beitrag #6318065 wurde von einem Moderator gelöscht.
von Neugieriger (Gast)


Lesenswert?

Hallo

Jörg W. schrieb:
> Die kommen, sofern es nicht voreingestellte Werte sind, aus der
> avrdude.conf.

Danke

Aber auch die Werte wurden ja nicht ausgewürfelt oder sind vom "Himmel 
gefallen" sondern haben ihre Ursache.
Und die ist wohl im Datenblatt des jeweiligen µC (Meist wohl ein AVR) 
hinterlegt - aber wo?
Irgendwelche Pin Zuordnungen wie PAGEL und PC2 ist ja recht leicht 
erkennbar und für "unsereins" ;-) hoffentlich klar.

Aber woher "kommen"  denn die Werte für z.B. Chip Erase Delay - 
überhaupt die ganzen delays - wo finde ich das im Datenblatt (auch des 
ursprünglichen Programmers STK500?).
Unter den diversen Loops kann ich mir gar nichts vorstellen - außer das 
es halt irgendwelche Schleifen sind was letztendlich soviel aussagt als 
das es tagsüber Hell ist, was nur für einen andauernden Höhlenbewohner 
eine Neuigkeit wäre - wir hier sind aber (hoffentlich) keine 
Höhlenbewohner ;-)

von Andreas B. (bitverdreher)


Lesenswert?

Johannes schrieb:
> Alexander S. schrieb:
>> Hast Du auch einmal kleinere Werte, z.B. -B 10, ausprobiert oder geht es
>> nur ab -B 200?
>
> Ja, mit -B 10 geht es auch.
> Jetzt geht es auch komplett ohne -B (auch nach neustart).
> Wird da irgendwie der letzte Wert irgendwo gespeichert?

Ich behaupte jetzt einfach mal, daß Du einen neuen AVR hattest, der noch 
auf 1MHz int RC gefust war.
Hier braucht es -B, damit der dude nicht zu schnell flasht.
Da der fuse jetzt vermutlich auf den Quarz steht, ist der AVR jetzt 
schnell genug zum flashen ohne -B.

Neugieriger schrieb:
> Wo kann ich eigentlich Nachschauen was alle diese Ausgaben bedeuten?

Im Manual z.B.?
http://download-mirror.savannah.gnu.org/releases/avrdude/avrdude-doc-6.3.pdf

: Bearbeitet durch User
von Johannes (Gast)


Lesenswert?

Andreas B. schrieb:
> Ich behaupte jetzt einfach mal, daß Du einen neuen AVR hattest, der noch
> auf 1MHz int RC gefust war.

Ja, der war auch neu

Andreas B. schrieb:
> Hier braucht es -B, damit der dude nicht zu schnell flasht.
> Da der fuse jetzt vermutlich auf den Quarz steht, ist der AVR jetzt
> schnell genug zum flashen ohne -B.

OK, nett zu wissen :)

Danke

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


Lesenswert?

Neugieriger schrieb:
> Aber auch die Werte wurden ja nicht ausgewürfelt oder sind vom "Himmel
> gefallen" sondern haben ihre Ursache.

In vielen Fälllen sind das Werte, die für avrdude "opaque" sind, da er 
sie 1:1 an die Firmware von STK500 & Co weiterreicht. Sie stammen aus 
den Atmel-XML-Dateien – wo auch die Atmel-Studio-Tools sie her nehmen.

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.