ATtiny24A: kann Fusebits nicht schreiben (c,gcc, avrdude, usbasp)

OP #6070352
Lesenswert?
• ▲
▼
Hallo,

ATtiny24A,linux, avr-gcc, avrdude, usbasp

Mit dieser Kombination brenne ich sonst Atmegas, jetzt beim ATtiny24A 
bekomme ich die Fusebits nicht in den Controller.
Wenn ich mit avrdude brennen möchte wird zwar das Programm 
rübergeschoben und läuft auch, die Fusebits werden aber nicht 
geschrieben.
Fehlermeldung:
...
...
...
avrdude done.  Thank you.
U efuse:w:0xff:m -U lfuse:w:0x62:m -U hfuse:w:0xdf:m
sh: 1: U: not found
#
make: [makefile:342: program] Fehler 127 (ignoriert)
#
Kompilierung erfolgreich beendet.

Kennt jemand diesen Fehler?
Anbei das Makefile.

Jens
Angehängte Dateien:
Moderator Persönliche Seite #6070379
Lesenswert?
• ▲
▼
jens schrieb:
> Jörg W. schrieb:
>> Fällt dir an der zweiten Zeile im Vergleich zur ersten was auf?
>
> Ja: in der zweiten Zeile fehlt das einleitende "$(AVRDUDE)"

Sowie die $(AVRDUDE_FLAGS).

>> oder am ersten U im Vergleich zum zweiten und dritten?
>
> Die Bindestriche vor den Us sind im Makefile alle vorhanden.

Daher schrieb ich ja, dass man die Wirkungsweise von "make" schon recht 
gut verstanden haben muss, um zu verstehen, warum er in der Ausgabe 
verschwunden ist. Ein Kommando, dem ein Bindestrich vorangestellt ist, 
zeigt dem "make" an, dass der Rückkehrwert dieses Kommandos ignoriert 
werden soll. Normalerweise würde ja bei einem fehlerhaft beendeten 
Kommando die Sequenz abgebrochen. Da all diese AVRDUDE_FOO-Dinge nur 
Makros sind, deren Text dann stur ersetzt wird, und da du das 
eigentliche avrdude-Kommando weggelassen hast, wanderte nun das "-U" an 
den Anfang einer Kommandozeile und wird dort interpretiert als: "Das 
Kommando heißt `U', der Fehlercode wird ignoriert."
Gast #6070393
Lesenswert?
• ▲
▼
Jörg W. schrieb:
>> Jörg W. schrieb:
>>> Fällt dir an der zweiten Zeile im Vergleich zur ersten was auf?
>>
>> Ja: in der zweiten Zeile fehlt das einleitende "$(AVRDUDE)"
>
> Sowie die $(AVRDUDE_FLAGS).

Habe mal beides auch vor die zweite Zeile geschrieben (der Zeilenumbruch 
findet im Makefile nicht statt):

$(AVRDUDE) $(AVRDUDE_FLAGS) $(AVRDUDE_WRITE_EFUSE) 
$(AVRDUDE_WRITE_LFUSE) $(AVRDUDE_WRITE_HFUSE)

Jetzt funktioniert es, ich kann die Fusebits schreiben!

Warum ging das mit diesem Makefile (ausser Controller und Takt) für die 
Atmegas auch ohne voranngestelltes "$(AVRDUDE) $(AVRDUDE_FLAGS)" ?

Jens
Moderator Persönliche Seite #6070396
Lesenswert?
• ▲
▼
jens schrieb:
> Warum ging das mit diesem Makefile (ausser Controller und Takt) für die
> Atmegas auch ohne voranngestelltes "$(AVRDUDE) $(AVRDUDE_FLAGS)" ?

Ging garantiert nicht. Vermutlich war früher nach der ersten Zeile noch 
ein Backslash, der beide Zeilen logisch verbunden hat. Der ist dann 
irgendwie unter den Tisch gefallen, sodass du auf der zweiten Zeile ein 
neues Kommando stehen hast.

Mit ATmega vs. ATtiny hat das jedenfalls absolut nichts zu tun.

Antwort schreiben

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.

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.