Forum: Mikrocontroller und Digitale Elektronik Fuse-Einstellungen online berechnen [URL]


von Mark H. (haemi)


Lesenswert?

Salve,

angeregt durch Falks Idee habe ich mal einen Online-Rechner für AVR
Fuses geschrieben.
Als Datenbank verwendet er seit dem Rewrite nunmehr die originalen
XML-Files von Atmel. Das hat den Vorteil, daß das Skript denkbar
einfach zu warten und zu updaten ist. Beim Testen habe ich jedoch
feststellen müssen, daß viele der Angaben in den XML-Files nicht mit
denen in den Datenblättern übereinstimmen. Außerdem fehlen bei manchen
Part-Definitionen alle oder einige Fusebits (z.B. beim Mega32 fehlen
SUT1:0, obwohl beim Mega16 vorhanden), dann sind die Defaults in den
Optionstexten und Datenblättern wieder andere als die Defaults der
einzelnen Fusebits. Alles in allem sind die XML-Files von Atmel ein
totales Chaos und völlig inkonsistent. Ich selbst verwende AVRStudio
nicht, und habe das erste Mal mit diesen Files zu tun. Sicherlich ist
dieses Chaos in Anwenderkreisen schon länger bekannt. Beim Tiny12 z.B.
konnte ich keinerlei Fuse-Definitionen finden (daher auch keine
Defaults für die einzelnen Bits!), nur die fertigen Maskenoptionen.
Falls jemand gefixte Versionen der XML-Files hat oder Korrekturen
beitragen möchte, bitte hier melden.
Das Skript selbst sollte prinzipiell funktionieren, ist nichts desto
trotz aber noch recht wenig getestet. Wer also Fehler findet (bitte -
wenn möglich - unterscheiden zwischen fehlerhaften Angaben im XML und
Programmfehlern), oder noch die eine oder andere Idee hat, bitte auch
hier posten.
Falls jemandem auffällt, daß das Programm trotz korrekter XML-Datei
fehlerhafte Ausgaben produziert, bitte ich um Hinweise und ggf.
Vorschläge, wie man die Dateien besser parsen kann.

Bei anhaltendem Interesse würde ich eine eigene Projektseite auf
SourceForge anlegen. Falls jemandem ein originellerer Name als FuseCalc
oder sowas einfällt... ich bin für Vorschläge offen.

So, und nun die momentane Adresse: http://palmavr.sf.net/fc/

Viel Spaß beim Benutzen! Das Feedback auf die erste Version war ja
schon sehr positiv. :)

Mark

von Stefan Sczekalla (Gast)


Lesenswert?

Vielen Dank !

Der Tag ist gerettet.

Grüße,

     Stefan

von xeus (Gast)


Lesenswert?

super idee!!!

von Peter D. (peda)


Lesenswert?

Also ich kann keinen Fehler am Programmer im AVR-Studio finden, da ist
nirgends nicht ein Chaos.

Die Fuses sind idiotensicher erläutert und man braucht nur die
gewünschten Optionen anzuklicken.

Was man daran noch besser machen soll, fällt mir bei bestem Willen
nicht ein.


"Ich selbst verwende AVRStudio nicht"

Na dann ist mir alles klar !
Ehe man das Fahrrad ein 2. mal erfindet, sollte man das AVR-Studio
vielleicht mal ausprobieren.


Peter

von Falk (Gast)


Lesenswert?

@Mark - Wunderbar. Das macht vieles einfacher!

@Peter: Ich verwende AVR-Studio auch nicht. Da meine Toolchain und,
besonders weitere Programme zur Hardwaresteuerung, unter Linux laufen,
ist mir das (noch) zu umständlich.
Vielleicht werde ich es mal unter vmware installieren.....

Bis dahin ist Marks Arbeit eine tolle Erleichterung.

Falk
P.S.: Ich will nicht Windows benutzen. Ich habe mich zu sehr an meine 8
unabhängigen Desktops gewöhnt. Einer alleine würde mich zu sehr
einschränken.

von Mark H. (haemi)


Lesenswert?

@Peter:

Na Du bist ja gut drauf heute. Es zwingt Dich doch niemand, dieses
Frontend zu verwenden. Mal auf die Idee gekommen, daß viele Leute
AVRStudio nicht nutzen, weil ihnen andere IDEs besser gefallen, oder
weil sie gar kein Windows verwenden, und daß diese eine Funktionalität
mehr oder weniger das einzige ist, was ihnen wirklich fehlt?

Wenn AVRStudio alle Default-Werte korrekt einstellt, dann freut mich
das für die Anwender. Aber in den XML-Files stehen nun mal
gegensätzliche Daten. Ich hab mir das nicht ausgedacht. Du kannst ja
mal aus Spaß ein paar AVR-Typen im Fuse Calculator auswählen und dann
mal kucken, ob z.B. in dem Feld mit den Clock options auch der Anhang
"; default value" steht. Falls nicht, kannst Du davon ausgehen, daß
das XML-File inkonsistent ist. Nur mal zwei Beispiele von vielen:

Beispiel ATtiny2313.xml:

  <FUSE5>
    <NAME>SUT1</NAME>
    <TEXT>Select start-up time</TEXT>
    <DEFAULT>1</DEFAULT>
  </FUSE5>
  <FUSE4>
    <NAME>SUT0</NAME>
    <TEXT>Select start-up time</TEXT>
    <DEFAULT>0</DEFAULT>
  </FUSE4>
  <FUSE3>
    <NAME>CKSEL3</NAME>
    <TEXT>Select Clock Source</TEXT>
    <DEFAULT>0</DEFAULT>
  </FUSE3>
  <FUSE2>
    <NAME>CKSEL2</NAME>
    <TEXT>Select Clock Source</TEXT>
    <DEFAULT>0</DEFAULT>
  </FUSE2>
  <FUSE1>
    <NAME>CKSEL1</NAME>
    <TEXT>Select Clock Source</TEXT>
    <DEFAULT>1</DEFAULT>
  </FUSE1>
  <FUSE0>
    <NAME>CKSEL0</NAME>
    <TEXT>Select Clock Source</TEXT>
    <DEFAULT>0</DEFAULT>
  </FUSE0>

Dazu im Widerspruch:

  <TEXT11>
    <MASK>0x3F</MASK>
    <VALUE>0x24</VALUE>
    <TEXT>Int. RC Osc. 8 MHz; Start-up time: 14 CK + 65  ms; [CKSEL=0100
SUT=10]; default value</TEXT>
  </TEXT11>


Beispiel ATmega16.xml:

  <FUSE5>
    <NAME>SUT1</NAME>
    <TEXT>Select start-up time</TEXT>
    <DEFAULT>0</DEFAULT>
  </FUSE5>
  <FUSE4>
    <NAME>SUT0</NAME>
    <TEXT>Select start-up time</TEXT>
    <DEFAULT>0</DEFAULT>
  </FUSE4>
  <FUSE3>
    <NAME>CKSEL3</NAME>
    <TEXT>Select Clock Source</TEXT>
    <DEFAULT>0</DEFAULT>
  </FUSE3>
  <FUSE2>
    <NAME>CKSEL2</NAME>
    <TEXT>Select Clock Source</TEXT>
    <DEFAULT>0</DEFAULT>
  </FUSE2>
  <FUSE1>
    <NAME>CKSEL1</NAME>
    <TEXT>Select Clock Source</TEXT>
    <DEFAULT>0</DEFAULT>
  </FUSE1>
  <FUSE0>
    <NAME>CKSEL0</NAME>
    <TEXT>Select Clock Source</TEXT>
    <DEFAULT>1</DEFAULT>
  </FUSE0>

Dazu im Widerspruch:

  <TEXT9>
    <MASK>0x3F</MASK>
    <VALUE>0x21</VALUE>
    <TEXT>Int. RC Osc. 1 MHz; Start-up time: 6 CK + 64 ms; [CKSEL=0001
SUT=10]; default value</TEXT>
  </TEXT9>


Beispiel ATmega32.xml:

Hier fehlen die Bitdefinitionen für SUT1 und SUT0 einfach. Trotz der
nahen Verwandschaft mit dem ATmega16 (in dessen XML sie drin stehen).


Daher ja meine Frage, ob es eine Möglichkeit gibt, die XML-Files besser
zu parsen, um an die gewünschten Infos ranzukommen. Ich konnte beim
Lesen nichts finden.

Auf Deine Frage, was man bei der Auswahl noch besser machen könnte:
Solch wenig hilfreiche Angaben wie "CKOPT fuse (operation dependent of
CKSEL fuses); [CKOPT=0]" lieber in die Kombination mit CKSEL/SUT
einbinden und wie im Datenblatt erläutern. Daß das einen anderen Aufbau
der XML-Files bedeuten würde, ist mir klar (weil sich die Masken dann
über mehrere Fuse-Bytes erstrecken müßten), und daß es aus diesem
Grunde nicht gemacht wurde, kann ich mir auch denken. Aber daß man -
wie Du meinst - gar nichts daran verbessern könne, so ist es ja nun
auch nicht.

Wie gesagt, meine Aussagen beziehen sich alle auf die XML-Files selbst.
Was AVRStudio draus macht, ist dessen Angelegenheit. Aber wenn ich nur
diesen Input habe, muß ich daraus das beste machen.

Ich werde nachher nochmal in AVRStudio nachsehen und konkrete Beispiele
vergleichen. Leider wird das an den m.E. fehlenden/irreführenden Angaben
in den XML-Files nichts ändern.

Mark

von Mark H. (haemi)


Lesenswert?

Salve,

habe gerade erfahren, daß die c't mein Projekt verlinkt hat,
allerdings unter der alten URL (Server haemi.dyndns.org). Dieser Server
steht hier im Flur und ist nicht hochverfügbar. Ich möchte aus diesem
Anlaß nochmal kurz darauf hinweisen (hallo, liebe c't-Leser), daß die
aktuelle URL auf sourceforge.net liegt:

http://palmavr.sf.net/fc/

Die alte Adresse war temporär für die Leser dieses Forums bestimmt (da
hat die c't den Link wohl her). Hoffe, daß die Linkliste
(http://www.heise.de/ct/ftp/projekte/ct-bot/linkliste.shtml) meiner
Bitte entsprechend bald aktualisiert wird. Vielleicht liest der
entsprechende Redakteur ja mit. :)

Mark

von luxx (Gast)


Lesenswert?

Hallo

ich habe mal eine frage zu der berechnung.
ist ein 4MHz Quarz mit 22pF beschaltung "High frequent" oder
"middle" und welche
startupzeit ist typisch?

luxx

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.