Wie Fuses bei Arduino Mega 2560 lesen/schreiben?

Hallo zusammen,

ich habe mal ein paar Fragen zu meinem neuen Original Arduino Mega 2560 Board:

  1. Weiß jemand, welche Fuses bei einem frisch ausgelieferten Board gesetzt sind (und teilt mir und den anderen das auch mit)?
  2. Besteht die Möglichkeit, die Fuses selbst zu lesen (ohne speziellen Hardware-Programmer wie z.B. AVR ISP II)? Kann AVRDUDE das mit dem Arduino Bootloader?
  3. Welche Möglichkeit gibt es, ohne ISP die Fuses zu schreiben (beim Mega 2560 Arduino Board)?

Danke im Voraus für die Antworten.
Wolfgang

Hallo Wolfgang
Ich habe bescheidene Kenntnisse auf dem Gebiet, versuche aber teilweise zu antworten:

  1. müßte im IDE irgendwo geschrieben sein, da man den Bootloader durch das IDE aufspielen kann und dann auch die FUSE richtig gesetzt werden müssen. Wahrscheinlich aber nicht in leicht verständlicher Form sondern als Programmierungskomandos zum Setzen.
  2. Du brauchst einen Programmierer oder einen Zweckentfremdeten Arduino (ISP-Arduino) Einfache Programmierer kosten nicht viel oder kannst Du selbst bauen. Über den Bootloader geht das nicht.
  3. Ich glaube das ist nicht möglich.

Bitte korrigiert jemand meine Fehler.

Grüße Uwe

Wie Uwefed richtig bemerkt: man braucht zwingend einen ISP um Fuses zu setzen. Wenn Du sowas noch nie gemacht hast und auch keinen kennst der das gemacht hat, dann ist ein "richtiger" ISP das Mittel der Wahl. Wenn Du nicht weisst ob der ISP oder die Ansteuerung an Problemen schuld ist, dann kannst Du ewig suchen.

Ich empfehle immer den AVR ISP MK II. Kostet bei RS nicht soviel und ist in 2 Tagen geliefert.

Wenn Du genug Erfahrung hast um nicht mehr fragen zu müssen kannst Du auf einfachere/billige Teile ausweichen oder auch Selbstbau versuchen. Ich habe hier 3 ISPs und den AVR benutze ich bevorzugt. Die Gründe kein MKII zu nehmen sind:

  1. Du hast viel Zeit und sehr wenig Geld
  2. Du hast bereits einen anderen ISP und kannst damit umgehen
  3. Du glaubst man würde auf die "harte Tour" mehr lernen

Und mir ist bekannt, daß beim Arduino ein ISP sketch dabei ist.

Gruß, Udo

uwefed:

  1. müßte im IDE irgendwo geschrieben sein, da man den Bootloader durch das IDE aufspielen kann und dann auch die FUSE richtig gesetzt werden müssen. Wahrscheinlich aber nicht in leicht verständlicher Form sondern als Programmierungskomandos zum Setzen.

Die IDE ruft ja wohl dabei AVRDude auf, aber zum Bootloader-Schreiben muss ein Hardware-Programmer angeschlossen sein (den ich nicht habe). Und ob man den Aufruf von AVRDude sehen kann (wie bei Upload Programm+Shift-Taste) weiss ich nicht.

  1. Du brauchst einen Programmierer oder einen Zweckentfremdeten Arduino (ISP-Arduino) Einfache Programmierer kosten nicht viel oder kannst Du selbst bauen. Über den Bootloader geht das nicht.
  2. Ich glaube das ist nicht möglich.

Ich habe es schon befürchtet. Im Augenblick besteht ja wohl nicht die Notwendigkeit, aber ich bin halt manchmal neugierig (oder sollte man misstrauisch sagen).

Danke.
Wolfgang

Ja, hab ich auch schon gesehen. 28,53 + MwSt.

Wenn Du genug Erfahrung hast um nicht mehr fragen zu müssen kannst Du auf einfachere/billige Teile ausweichen oder auch Selbstbau versuchen. Ich habe hier 3 ISPs und den AVR benutze ich bevorzugt. Die Gründe kein MKII zu nehmen sind:

  1. Du hast viel Zeit und sehr wenig Geld
  2. Du hast bereits einen anderen ISP und kannst damit umgehen
  3. Du glaubst man würde auf die "harte Tour" mehr lernen

Ihr wollt ja nur nicht mit weiteren Fragen "belästigt" werden! Hast mich ja schon fast überredet...

Wolfgang

Hallo voithian

Ihr wollt ja nur nicht mit weiteren Fragen "belästigt" werden!

Keine Angst, man kann Dich auch ignorieren ( ich scherze!!!)

Mit falschen Fuse gesetzt kann der Controller unbrauchbar werden ( zerschossen werden ) und nicht mehr programmiert werden. Dann gibt es noch eine "Hochspannungsprogrammierung" die ihn wiederbelebt aber das ist glaube ich keine Erfahrung die Du machen willst und alleine durchführen willst.

Manchmal ist etwas mehr Geld ausgeben im Endeffekt billiger, schont die Nerven und spart Zeit.

Frage gerne weiter. :slight_smile:

Grüße Uwe

Hallo Wolfgang
wie die Fuses bei Benutzung des Bootloaders gesetzt werden soll(t)en steht im File boards.txt im Verzeichnis hardware/arduino. (diese Angabe bezieht sich auf die Linux Version).
In diesem File steht:

mega2560.bootloader.low_fuses=0xFF
mega2560.bootloader.high_fuses=0xD8
mega2560.bootloader.extended_fuses=0xFD

Ich habe bei meinem 2560er Board mal die Fuses gelesen und bei mir ist die high_fuse=0xD0. Das müsste bei mir der Auslieferungszustand sein, weil ich nichts geändert habe. Da muss man doch schnell mal nachsehen, was den Unterschied ausmacht. Meine Standardseite dafür: AVR® Fuse Calculator – The Engbedded Blog. high_fuse=D0 -> Preserve EEPROM memory through the Chip Erase cycle; [EESAVE=0] (Aha!).
Ich nutze als Programmer den mySmartUSBlight vom myavr http://shop.myavr.de/Programmer/mySmartUSB%20light.htm?sp=article.sp.php&artID=200006. Das Teil ist sehr preiswert und funktioniert bei mir unter avrdude sehr zuverlässig.
Gruß, Reinhard

Danke für die bisherigen Antworten. Doch da kommt schon wieder eine Frage:

Wenn ich mir tatsächlich einen AVR ISP MK II kaufen sollte und damit einen jungfräulichen/'nackten' ATMega irgendwas flashen will (nicht den auf meinem Arduino Board), welche 'Hardware' brauche ich dann im Umfeld des Prozessors noch (natürlich nur fürs Flashen, nicht für den späteren Betrieb!)?
Nur die 6 Pins von der ISP-Pfostenleiste an die betreffenden Pins des ATMega irgendwas führen und ab geht die Post? Und die 5V kommen vom 6poligen Stecker des AVR ISP MK II?

Wolfgang

Ich habe diesen Programmer auch, und zwar aus der Zeit, als ich noch mit Bascom arbeitete. Der Stecker hat zwar einen 5V-Anschluss, dieser ist jedoch kein Ausgang zur Versorgung des Mikrocontrollers, sondern als Eingang vorgesehen. Somit kann man den Programmiervorgang nur starten, wenn der Mikrocontroller extern an einer Versorgungsspannung liegt. Im AVR-Studio kann man dann diese Versorgungsspannung über den MKII auslesen.

sth77:
Der Stecker hat zwar einen 5V-Anschluss, dieser ist jedoch kein Ausgang zur Versorgung des Mikrocontrollers, sondern als Eingang vorgesehen. Somit kann man den Programmiervorgang nur starten, wenn der Mikrocontroller extern an einer Versorgungsspannung liegt. Im AVR-Studio kann man dann diese Versorgungsspannung über den MKII auslesen.

OK, reicht es denn, wenn zusätzlich noch eine externe 5V-Spannung an den zu flashenden Mikrocontroller angeschlossen wird, aber sonst keine weiteren Bauteile? Naja, 'nen Abblockkondensator würde ich ihm auch noch geben.

Den Takt kann der Controller ja wohl mit den Default-Fuses (CKSEL = "0010", SUT = "10", CKDIV8 = "0") ohne Quarz o.ä. selber machen, oder? Aber was ist, wenn die Fuses für den Takt irgendwann mal auf Quarz oder ext. Takt gesetzt wurden? Dann müsste er doch beim nächsten Flashen den entsprechenden Clock bekommen? Dann bräuchte ich doch wieder einen angeschlossenen Quarz o.ä.?

Oder sollte die Antwort hier lauten: Stell dich nicht so an und flashe doch in der Zielhardware? Da haste alles!

Hallo sth77,

Der Stecker hat zwar einen 5V-Anschluss, dieser ist jedoch kein Ausgang zur Versorgung des Mikrocontrollers, sondern als Eingang vorgesehen.

das ist nicht richtig, jedenfalls nicht bei der aktuellen Version. Ich kann die Versorgungsspannung sogar auf 3,3V per SW umstellen. Damit flashe ich z.B. einen Attiny13 ohne jedes weitere zusätzliche Bauteil.

@voithian,
ich habe bisher Atmega8/168 und Attiny13 geflasht, die waren alle im Auslieferungszustand auf internen Takt gefused. Wenn du einmal die Fuses auf externen Takt umgestellt hast, benötigst du zum Flashen dann auch einen externen Takt.
Ich finde es einfacher in der Zielhardware zu flashen, also hier auf jeden Fall den 6-poligen ISP Stecker vorsehen.

das ist nicht richtig, jedenfalls nicht bei der aktuellen Version. Ich kann die Versorgungsspannung sogar auf 3,3V per SW umstellen. Damit flashe ich z.B. einen Attiny13 ohne jedes weitere zusätzliche Bauteil.

Mit welchem Programm geht das denn? Im AVR-Studio? Ich schue mir das heute abend mal in Ruhe an...

erni-berni:
Hallo sth77,

Der Stecker hat zwar einen 5V-Anschluss, dieser ist jedoch kein Ausgang zur Versorgung des Mikrocontrollers, sondern als Eingang vorgesehen.

das ist nicht richtig, jedenfalls nicht bei der aktuellen Version. Ich kann die Versorgungsspannung sogar auf 3,3V per SW umstellen. Damit flashe ich z.B. einen Attiny13 ohne jedes weitere zusätzliche Bauteil.

@erni-berni
Ist das beim aktuellen AVRISP MKII so? Ich hab mir im Internet das Manual von Atmel zum AVRISP MKII downgeloaded, aber dort wollte man immer eine VTarget vom Zielsystem haben, damit die Sache läuft. Aber vielleicht habe ich ja auch noch nicht das aktuelle Manual gefunden.

Ich suche mal weiter...

Also mein MK II versorgt das Ziel nicht mit Spannung. Da ich normalerweise aber eh in der Schaltung flashe ist das kein Problem. Im Gegenteil: ich muß dann auch nicht nachdenken ob ich gerade 3.3 oder 5V eingestellt habe. 5V kriegt man aber sowieso immer leicht irgendwo her. Zur Not aus dem USB Port. Allerdings sollte man dann einen Hub dazwischen haben. Einen habe ich dabei schon mal gegrillt :frowning:

Udo

Ich hab mal geschaut: es scheint da wohl "MKII-kompatible" Nachbauten zu geben, die das Zielsystem mit Saft versorgen können.

Oder gibt es da ein Missverständnis und erni-berni spricht in Reply #10 nicht von einem AVR ISP MKII sondern von seinem mySmartUSBlight-Programmer von myavr (siehe Reply #6)?

So einen Nachbau hatte ich auch gekauft. Nach langen verzweifelten Stunden habe ich dann doch den MK II gekauft. Nach über 1 Jahr Erfahrung mit dem MK II habe ich dann rausgekriegt an was es lag. Wenn Du Glück hast, dann klappt es sofort, wenn Du wie ich Pech hast kaufst Du zweimal. Gelegentlich benutze ich den Nachbau auch. Aber der MK II hat den ganz großen Vorteil, daß er mit Standardeinstellungen funktioniert. Der Nachbau nicht. Weiterhin kann der MK II mehr als die meissten Nachbauten. Das merkst Du dann wenn den ISP Takt mal absenken willst.

Kann bei anderen Nachbauten aber anders sein.

Udo

Hallo Alle

Wenn ich mir einen Brennadapter bauen würde würde ich mir einen Quarz oder Oszillator, eine Spannungversorgung einen ZIF-Sockel und den obligatorischen ISP-Stiftleisten draufbauen.
Sicher ist der Vorschlag den Controller im Zielsystem zu brennen nicht zu vernachlässigen. :slight_smile:

Diese Erfahrung muß ich noch machen :wink:

Grüße Uwe

uwefed:
Wenn ich mir einen Brennadapter bauen würde würde ich mir einen Quarz oder Oszillator, eine Spannungversorgung einen ZIF-Sockel und den obligatorischen ISP-Stiftleisten draufbauen.

Schluss mit der Diskussion :wink:
So wie uwefed geschrieben hat, werde ich es machen und der original AVR ISP MKII ist auch schon bestellt...

Frohes und erfolgreiches Schaffen und Danke für die Tipps
Wolfgang

@Uwefed: die Erfahrung mit dem flashen im Zielsystem kann man bequemerweise auch mit dem Arduino machen. Den Arduino per MK II zu flashen geht deutlich schneller als mit dem Bootloader :wink:

Gruß, Udo

Hallo Udo

Das fleisig Antworten hält mich ein wenig vom Programieren ab. :wink:
Aber wie so vieles im Leben, das MK II flashen geht schneller aber bis es soweit ist, daß ich verstanden habe wie das praktich geht dauert es länger und ich bleibe mal beim IDE.

Grüße Uwe