Go Down

Topic: Wie Fuses bei Arduino Mega 2560 lesen/schreiben? (Read 3457 times) previous topic - next topic

voithian

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


uwefed

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

Udo Klein

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
Check out my experiments http://blog.blinkenlight.net

voithian


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.

Quote


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.

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

voithian


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

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


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

uwefed

Hallo voithian
Quote

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.  :)

Grüße Uwe



erni-berni

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:
Code: [Select]
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: http://www.engbedded.com/fusecalc/. 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

voithian

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

sth77

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.
Mein Arduino-Blog: http://www.sth77.de/ - letzte Einträge: Teensy 3.0 - Teensyduino unter Window 7 - Teensyduino unter Windows 8

voithian


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!

erni-berni

Hallo sth77,
Quote
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.

sth77

Quote
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...
Mein Arduino-Blog: http://www.sth77.de/ - letzte Einträge: Teensy 3.0 - Teensyduino unter Window 7 - Teensyduino unter Windows 8

voithian


Hallo sth77,
Quote
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...

Udo Klein

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 :(

Udo
Check out my experiments http://blog.blinkenlight.net

voithian

#14
Feb 04, 2011, 05:31 pm Last Edit: Feb 04, 2011, 05:39 pm by voithian Reason: 1
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)?



Go Up