avrdude zeigt fuses an, die nicht existieren (dürften) & programmiert falsch

OP #4548194
Hallo auch.
Die Suche liefert mir Anwendungsprobleme, wohin Ich glaube, einen echten 
avrdude-Fehler unter Ubuntu zu haben.

Bei meinem Atmega8 (auf dem Gehäuse steht "Atmega8-16PU") liest mir das 
Programm nach jedem Schreibvorgang die Fuses brav wie folgt aus:
avrdude: safemode: Fuses OK (H:FF, E:C1, L:E1)

Daraus ergeben sich eine Reihe von Problemen:
Die Seite "http://www.engbedded.com/fusecalc"; sagt, dass der Atmega8 
keine extended Fuses hat.
Wenn Ich die extended fuses mittels -U efuse:w: beschreiben will, meldet 
mir das Programm ebenfalls, dass keine efuses vorhanden sind.

Wenn Ich nun aber die low und high fuses programmieren möchte, passiert 
sowas hier:

"
root@imperator-PC:~# avrdude -c usbasp -p m8 -U hfuse:w:0xff:m

avrdude: warning: cannot set sck period. please check for usbasp 
firmware update.
avrdude: AVR device initialized and ready to accept instructions

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

avrdude: Device signature = 0x1e9307
avrdude: reading input file "0xff"
avrdude: writing hfuse (1 bytes):

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

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

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

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

avrdude: safemode: hfuse changed! Was ff, and is now df
Would you like this fuse to be changed back? [y/n] y
avrdude: safemode: and is now rescued
avrdude: safemode: Fuses OK (H:FF, E:FF, L:FF)

avrdude done.  Thank you.
"


Oder, wenn Ich nun mit -v den Auslesebefehl gebe, erscheint diese 
widersprüchliche Ausgabe:

avrdude: Device signature = 0x1e9307
avrdude: safemode: lfuse reads as E1
avrdude: safemode: hfuse reads as C1

avrdude: safemode: lfuse reads as E1
avrdude: safemode: hfuse reads as C1
avrdude: safemode: Fuses OK (H:FF, E:C1, L:E1)


Ihr seht, dass hier irgendetwas überhaupt nicht stimmen kann. 
Irgendetwas am auslesen ist völlig falsch, er zeigt mir hier die H als 
FF an und die E als C1...

edit:
Ich habs jetzt nochmal binär ausgelesen und in hex umgerechnet:
Der Verdacht liegt, wie ihr oben sehen könnt, nahe, dass er low korrekt 
ausliest, dann high ausliest und es als das extended fuse interpretiert.
Gast
Hallo Philipp,

ein paar Fragen von mir:
1. Hast du am µC genügend Abblockkondensatoren?
2. Benutzt du die aktuelle Version des avrdude?
3. Hast du beim USBASP den Jumper J3 gesetzt?
4. Sind die ISP-Pins frei oder sind Komponenten angeschlossen?
5. Versorgst du die Zielschaltung mit dem USBASP?
Gast
Fuses die nicht existieren können mit avrdude geschrieben werden, 
behalten diesen Wert aber nicht. Sie kommen als 0 zurück. Setze sie 
vorher auf 0 in der Maske und du hast dieses Problem nicht mehr.
Hi,
nimm mal eine aktuelle Version des AVRDUDE, dann tritt das Problem des 
vertauschten E und H fuses nicht mehr auf. Das ist aber nur in der 
Anzeige, also kein echtes Problem (wenn man es weiß)

Ansonsten hat leeer das eigentliche "Problem" schon beschrieben.

Kurz: Alles im  grünen Bereich.

Gruß
Andreas
Stefan U. schrieb:
> Das könnte ein Bug in der Firmware des USBASP sein.

Nein.

Der usbasp behandelt alle Fuses gleich. Genauso wie er alle Adressen im 
Flash gleich behandelt. Die verschiedenen Fuses sind am Ende auch nur 
verschiedene Adressen in einem eigenen Adreßraum.

@TE: ich empfehle dir, das Manual von avrdude zu lesen. Insbesondere den 
Teil über den Safemode und warum man den abschalten muß(!) wenn man die 
Fuses verändern will.
OP
Ist die Version aus den Paketquellen nicht die aktuellste?
Soweit Ich weiß, hat avrdude gar keine eigene Homepage.

Nichtsdestotrotz: Er vertauscht mir ja nicht nur E und H, sondern zeigt 
E an, obwohls nicht existiert, setzt die fuses aber dennoch richtig?

@Axel: Wenn Ichs richtig verstehe, scheint es ja trotz aktiviertem 
Safemode funktioniert zu haben :{
Moderator Persönliche Seite
Axel S. schrieb:
> Insbesondere den Teil über den Safemode und warum man den abschalten
> muß(!) wenn man die Fuses verändern will.

Nö, wenn man sie vorsätzlich ändert, wird das automatisch einbezogen.

Der safemode soll ja nur gegen unfreiwillige Änderungen schützen.

@TE: was passiert denn, wenn du den safemode abschaltest (-u), ist denn
die eigentliche Programmierung in Ordnung?  Kann gut sein, dass safemode
irgendwie verbuggt ist, wenn ein Controller keine efuse hat, das würde
ich mal nicht ausschließen wollen.
OP
Mag er nicht :/

/bin/bash ./ylwrap config_gram.y y.tab.c config_gram.c y.tab.h `echo 
config_gram.c | sed -e s/cc$/hh/ -e s/cpp$/hpp/ -e s/cxx$/hxx/ -e 
s/c++$/h++/ -e s/c$/h/` y.output config_gram.output -- yacc -d
./ylwrap: Zeile 111: yacc: Befehl nicht gefunden
make: *** [config_gram.c] Fehler 1
Moderator Persönliche Seite
Ja, einen yacc oder bison (und einen flex) musst du vorher installieren.
Die werden zum Parsen der Konfigurationsdatei benötigt.

Leider gibt's keine vernünftigen autoconf-Makros dafür, die dann auch
sagen, dass da was fehlt.  Die, die es gibt, können nur erkennen, ob
es yacc oder bison und flex oder lex sind und dann entsprechend
reagieren.

Antwort schreiben

Eine eigene Frage? Dieser Thread ist über 10 Jahre alt. Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.

Neuen Thread starten

Eine Lösung, Ergänzung oder Rückmeldung zu diesem Thread? Dann antworte hier.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.