mikrocontroller.net

Forum: Compiler & IDEs Howto set/reset AVR Fuses ( mit Winavr ) ?


Autor: Stefan Sczekalla (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi,

ich bitte das "halb englische" Subject zu entschuldigen, denke aber
das der Betreff die Frage am besten beschreibt:

ich bin beim lesen in den FAQ's verschiedentlich darüber gestolpert,
das das enablen der JTAG Funktionalität bestimmte Pins in ihrer
Funktion überschreibt.

... oder man den falschen Oszilatro wählen kann ...

Bisher hab ich wohl Glück gehabt - aber - wo kann ich den "Vorgeben"
welche Fuses gesetzt bzw. gelöscht sein sollen ?

ich sitz jetzt gerade nicht vor meinem Entwicklungsrechner - kann mich
aber auch nicht erinnern, z.B. im MFile Editor irgendwas in Richtung
Fuses gesehen zu haben - was dann Parameter für avrdude setzen würde.

Ich sehe nur das beim Programmieren wohl die Fuses "gesichert" und
hinterher wieder geschrieben werden...

Bitte erleuchtet mich :-)

Grüße,

     Stefan

Autor: Jörg Wunsch (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Datenblatt lesen, die hexadezimalen Fuse-Werte zusammenrechnen, dann
"avrdude -t" benutzen.

Autor: Daniel (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Also die Fuses enablest du total easy wenn du bspw. Ponyprog used und
dann auf den einen Knopf pressed um die Fuses zu setten. Aber
Attention: Wenn du Blasenschwäche hast pass auf, dass du dich nicht
verpissed...

Autor: Jörg Wunsch (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Oh, "ponyprog" und "total easy"?  Das erinnert mich an die vielen
Berichte über ATmega8 mit versehentlich gesetzten RSTDSBL-Fuses (ganz
zu schweigen von den noch mehr Berichten über falsche Oszillator-
Fuses, aber das ist wenigstens nicht völlig tödlich).

Autor: Stefan Sczekalla (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@ Jörg:

Ok. -

Wäre es möglich und - wuerde es Sinn machen - das in MFile zu
integrieren ?

@ Daniel:

Thanx für this altenative Ich will have a blick on it ;-)

Grüsse,

         Stefan

Autor: Jörg Wunsch (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Nein, Mfile ist nicht der geeignete Ort dafür.  Die Fusebits muss man
ja nur einmal setzen, nicht bei jedem `make program'.

Das avrdude-gui wäre dafür der geeignete Ort, aber das ist noch
ziemlich alpha derzeit.

Autor: Wener Boellmann (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Mir würde ja schon helfen wenn irgendwo stehen würde (sinngemaess)

   Wenn die fuse X gebrannt werden soll
   (Zustand vorher="1", Zustand nachher="0")
   dann muss das entspechendende Bit im zu
   programmierenden "Byte" gesetzt/gelöscht sein.

   avrdude ... -U lfuse:w:"Byte"

Zum ausprobieren (und evtl. vernichten) sind mir die AVRs eigentlich zu
schade.

Autor: Jörg Wunsch (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Komisch, ich habe es mit Datenblatt lesen bislang immer noch
verstanden, was man als Fuse programmieren muss.  Klar, man liest sich
das dreimal durch -- aber im Gegensatz zum Geklicker von Ponyprog ist
man sich danach auch sicher, was man tut.

Autor: mthomas (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Es steht wirklich im Datenblatt. Abschnitt memory programming. Im
Zweifel einfach im terminal-mode avrdude ... -t die aktuellen fuses
eines neuen AVR auslesen (dump lfuse, dump hfuse....) und mit dem
Default-Werten laut Datenblatt vergleichen, das bringt etwas
"Gefuehl" fuer die Angaben und klärt auch die Verwirrung zwischen
0/1, gesetzt/nicht-gesetzt und programmiert/nicht-programmiert. Bei
aktuellem avrdude (cvs-Version aus WinAVR 2/05) zum schreiben von
fuses/locks sicherstellen, dass der "safemode" ausgeschaltet ist
(Option -u).

Autor: Werner Boellmann (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Anders ausgedrückt:

Wenn ich z.B den Wert 55 als Wert für eine fuse mit avrdude
programmiere, lese ich nachher 55 aus oder AA?
Ich habe da schlechte erfahrungen gemacht :(

Autor: Jörg Wunsch (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Wenn du 55 schreibst, liest du auch 55.  Allerdings bemühst du dann
das Datenblatt um herauszufinden, was die 55 genau bedeutet.

Autor: Stefan Sczekalla (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo Jörg,

... hm - ich denke schon, das die Info zum Projekt gehört.

Du hast insofern recht, das man sie nicht jedesmal setzten muss - man
könnte ja erst mal die Fuses lesen - und sie nur setzten wenn sie
"falsch" sind.

Es hätte aber den Vorteil, dass wenn man ein Projekt "später" mal
wieder öffnet, - man jedoch einen neuen Chip gleichen Typs benutzt (
und per isp programmieren möchte ) - man so auch "automatisch" die
Fuses für das Projekt korrekt gesetzt bekäme.

Sonst muss man das irgendwo händisch Verwalten.

Grüße, Stefan

Autor: Jörg Wunsch (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ich hatte schon einmal die Idee, ob man sie nicht irgendwie im
C-Quellcode mit verwalten könnte, so in der Art

FUSES(0x42, 0x33, 0x88);

wobei sich die Werte natürlich auch symbolisch setzen lassen könnten.
Sollte über den C-Präprozessor machbar sein.  Günstig wäre natürlich
eine von Atmel nominierte Syntax dafür, die dann jeder
Compilerhersteller umsetzen kann.

Autor: Stefan Sczekalla (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo Jörg,

> (...)

Ja so in etwa oder eben auch per #define Fuse_Jtag active

Grüße,

Stefan

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.