Atmega 8 --- Bootloader --- Standalone

Also, ich möchte (aus Kosten- und Platzgründen) ein sehr kleines Arduino nachbauen.

Das Ganze soll dann zum Schluss fix verbaut werden, dass heißt es (wenn der Sketch einmal so funktioniert, wie er soll) wird alles auf eine Platine verlötet und arbeitet dann die nächsten 20 Jahre so wie es soll!

Auf der Platine soll sich befinden:

  • Ein Atmega 8
  • Ein 5v Spannungsregler

Ja, und das wars auch schon. Ich würde gerne den internen Oscillator vom Atmega 8 verwenden, da ich keine sehr genauen Zeitmessungen brazche.

Ich habe mich hier schon etwas eingelesen: http://arduino.cc/en/Tutorial/ArduinoISP Und mir ist klar, dass ich den Bootloader irgendwie auf den Atmega 8 bekommen muss. (Wenn das geschehen ist, uploade ich die Sketches wie aufs Arduino MIini mit dem Sparkfun ftdi board).

Aber, wie bekomme ich nun den Bootloader auf den Atmega 8 ??? Welche Arduino Boards (oder sonstige ISPs) benötige ich, um den Atmega auf dem Steckbrett zu bootloaden??? Welchen Bootloader soll ich überhaupt verwenden und wo bekomme ich diesen her? Wie bringe ich es auf die Reihe, dass ich mir den Quarz spare??? Muss ich um den Bootloader zu brennen einen Quarz kaufen, oder kann ich da auch schon den internen Osc vom Atmega 8 verwenden???

Bin etwas verwirrt durch die vielen verschiedenen Anleitungen im Internet! Wäre seehr dankbar für eine Schritt-für-Schritt Anleitung oder gute Links!

Wenn Du einen ISP hast brauchst Du keinen Bootloader mehr. Wenn Du einen Bootloader auf den Chip kriegen willst brauchst Du einen ISP. --> Lass den Bootloader doch gleich weg. Wenn Du den Chip nackt kaufst ist normalerweise kein Bootloader drauf und der Chip ist auf 8 Mhz internen Oszillator mit Vorteiler 8 eingestellt. D.h. er läuft dann mit 1 MHz. (Weshalb Du den ISP maximal auf 250 kHz hochdrehen kannst).

Die Fragen die Dich interessieren sind super bei http://www.mikrocontroller.net/articles/AVR-Tutorial abgedeckt.

Die Arduino IDE braucht übrigens auch keinen Bootloader. Der Bootloader meldet sich eh wie ein AVRISPmkII. D.h. sobald Du einen ISP hast kann die IDE den auch direkt verwenden. Sind nur ein oder zwei Konfigurationseinträge und dann geht das alles auch direkt.

Das einzige Problem welches Du bekommst, ist dass das Timing nicht mehr stimmt falls Du nicht aufpasst. D.h. Delay usw. wird zu langsam.

Gut, ich hätte einen Atmega8 frisch aus der Packung herumliegen, aber keinen ISP! An Arduino Boards hätte ich:

  • Arduino Pro Mini 5v
  • Arduino Duelimanove mit Atmega 168 SMD-version

Aber von diesen kann ich keins als ISP verwenden, oder doch?

Wenn nicht: Ist es einfacher und schneller einfach einmal einen bootloader zu brennen oder immer direkt drauf? Ist es einfacher und schneller ein ISP zu kaufen, und den zu verwenden, oder ein Arduino mit Arduino als ISP? Kann ich (z.B. mit AVR ISP mkII) direkt: PC -> USB -> ISP -> Steckbrett -> Atmega8? Oder muss ich: PC -> USB -> ISP -> Arduino Duelimanove ICSP -> Atmega8?

Weil ich hab nämlich kein Duelimanove, wo ich den Atmega rausnehmen kann!

Mit dem ISP kannst du direkt auf einen Mikrocontroller schreiben, also trifft deine Variante 1 (PC -> USB -> ISP -> Steckbrett -> Atmega8) zu. An dieser Stelle ist es aber mit der Arduino-Einfachheit vorbei. Nun musst du peinlichst genau darauf achten, wie die Fuses eingestellt sind.

Vielleicht hat Udo mal Lust, einen passenden Artikel für den Playground zu schreiben? ;)

@STH77: ich schreib grad was, aber nicht zu ISPs und auch nicht für den Playground und auch nicht auf Deutsch. Wird aber trotzdem cool. Warte mal bis morgen ;)

Da ich die "Arduino-Einfachheit" irgendwie doch gerne beibehalten würde, werde ich versuchen, einen Bootloader auf den Atmega 8 zu bekommen. Aber wie nun?

Hat vielleicht irgendwer für mich Tips: Welchen Bootloader für internal oscilator? Woher den Bootloader nehmen? Wie den Bootloader brennen?

Der Arduino kann auch als ISP verwendet werden. Das es bei der Verwendung eines ISPs mit der Arduino Einfachheit vorbei ist stimmt nur bedingt. Die Hardwareseite ist tatsächlich einen Tick komplizierter. Immerhin braucht man ja einen ISP und muß den korrekt anschliessen. Auf der Softwareseite sind es zwei Konfigurationseinträge und dann geht es genauso wie ohne ISP. Und wenn man einen guten ISP hat dann geht es danach sogar deutlich besser ;)

P.S. Im Dezember hätte ich vieleicht mal Zeit so ein Tutorial zu schreiben. Im November eher nicht.

Gut, ich werde mir mal entweder ein Arduino 2009 mit atmega 328 kaufen oder ein ISP, was ich schneller und billiger herkrieg! Dann werde ich mal einen Bootloder brutzeln. Hab was gefunden, ist das für einen only-atmega-8-Arduino der richtige Bootloader: http://todbot.com/blog/2009/05/26/minimal-arduino-with-atmega8/ ????

Das richtige Verbinden werd ich auch noch auf die reihe bekommen. Wenns dann so weit ist, werde ich wenn ich dann viel Zeit hab ein paar Fotos davon machen und das ganze dann hier hochladen, dann kann man die fotos ja auch ins Tutorial dazugeben.

Naja, ich werd mich mal umsehen, wo ich die Bauteile herzaubere!

Zwei Fragen bleiben aber noch: Brauch ich jetzt um den Bootloader zu brennen einen 16Mhz Quarz oder kann ich da auch schon internen nutzen? Ist der Bootloader oben (Link) was brauchbares für meine Zwecke?

Bitte um Antwort, TAER

Du brauchst einen Quarz. Grüße Uwe

Zum Flashen braucht es keinen Quarz. Nur sobald die Standardfuses eingestellt sind braucht man einen Quarz. Ohne Quarz wird der Bootloader im Zweifelsfall auch nicht oder nicht zuverlässig funktionieren. Aber zum Flashen braucht man ihn definitiv nicht. Hab ich schon öfters ohne gemacht.

Zusammenfassend: Ein fabrik neuer ATmega braucht keinen Quarz zum flashen, einer bei dem ein externer Takt mittels Fuse eingestellt ist (zb ein Atmega eines Arduino) braucht einen Quarz? Grüße Uwe

Die Wahrheit ist etwas komplizierter und steht im Datenblatt ;)

Fabrikneu braucht keinen Quarz --> richtig.

Tatsächlich gibt es aber jede Menge verschiedene Einstellungen:

Interner RC Oszillator, interner WDT Oszillator, Quarz, Resonator, Externer Takt. Alles noch in Kombination mit verschiedenen Startupzeiten.

Wenn "extern" eingestellt ist braucht man einen externen Takt. Bei "Quarz" braucht man einen Quarz oder Resonator. Und bei intern braucht man keine Hilfsmittel für den Takt.

Man kann grundsätzlich mit einem normalen ISP bis höchstens 1/4 Taktfrequenz flashen. Deshalb darf der ISP nicht zu schnell eingestellt sein. Wenn man WDT (oder noch schlimmer WDT plus Vorteiler) eingestellt hat müssen die meissten ISPs passen. Dann hilft nur noch ein "High Voltage Programmer".

Ich glaube ich schreibe im Dezember wirklich mal ein Tutorial.

Danke Udo für die genaue Erklährung Grüße Uwe

Nochmal zu einem günstigen Programmer. Ich habe diesen hier und nutze den auch ist auch recht einfach in die IDE zu integrieren und man hat noch 2k mehr Speicherplatz. Hier bekommt man den für 16€ also ein ordentliches Preis Leistungsverhältnis.

http://shop.myavr.de/Programmer/mySmartUSB%20light.htm?sp=article.sp.php&artID=200006

Ok, habe mir gerade ein Arduino 2009 mit abnehmbaren Atmega328 bestellt :D :D :D

Was ich nun vorhabe:

laut dieser Anleitung einen Bootloader auf einen Fabriksneuen Atmega 8 brennen: http://arduino.cc/en/Tutorial/ArduinoToBreadboard Den Bootloader, den ich verwenden werde ist ein veränderter, den original ein Arduino NG verwendet hätte, aber ich hab ne Seite gefunden, da kann man sich den veränderten herunterladen: http://todbot.com/blog/2009/05/26/minimal-arduino-with-atmega8/

Das ist mir nun in der Theorie alles klar! Wieder mal ein aber Angenommen, es funktioniert alles wunderbar (natürlich nur eine Annahme :~ :|) und der Bootloader ist auf dem Atmega8, den Sketch hab ich (hoffentlich :cold_sweat:) mit dem sparkfun ftdi breakout board hochgeladen. http://www.sparkfun.com/products/9716![](http://dlnmh9ip6v2uc.cloudfront.net/images/products/09716-_00_i_ma.jpg)

Ja und dann??? Wenn ich jetzt den Standart-Blink-Sketch hernehme, welcher pin ist denn [u]pin 13[/u]???

Ich bin mir sicher einer hier im forum hat das schon mal ausprobiert (muss nicht unbedingt mit dem atmega 8 gewesen sein). Aber könnte mir jemand verraten, wie ich die pins herausfinden kann? oder muss ich einfach probieren? Oder geht das gar anders?

Edit://Könnte sein, dass PD7 pin 13 ist??? Ach ja: Gibt es irgentwelche funktionen, die man nicht verwenden kann mit dem atmega 8 minimal board? analogRead (z.b. spannungsteiler); PWM (analogWrite); Serial.print(natürlich mit ftdi board) --- Funktionieren diese?

Und dann => schaust du hier: http://www.arduino.cc/en/Hacking/PinMapping

Wow, danke, das ist genau wonach ich gesucht habe! werde das jetzt ausprobieren und dann wieder berichten.

Vielen dank an alle, die mir so schnell und gut geholfen haben.

Ok, was mache ich jetzt schon wieder falsch???? Ich habe mir ein 2009 mit ATmega328 gekauft. Und auch einen frischen Atmega 8.

AA)Habe mich an diese Anleitung gehalten: http://arduino.cc/en/Tutorial/ArduinoToBreadboard BB)Und diesen bootloader verwendet: http://todbot.com/blog/2009/05/26/minimal-arduino-with-atmega8/

Was ich gemacht habe: 1)Also, habe den order von Link BB) nach arduino-0022\hardware\arduino\bootloaders kopiert 2)Habe in die arduino-0022\hardware\arduino in der boards.txt das eingefügt:

atmega8noxtal.name=ATmega8-noxtal @8MHz

atmega8noxtal.upload.protocol=stk500 atmega8noxtal.upload.maximum_size=7168 atmega8noxtal.upload.speed=38400

atmega8noxtal.bootloader.low_fuses=0xe4 atmega8noxtal.bootloader.high_fuses=0xc4 atmega8noxtal.bootloader.path=atmega8_noxtal atmega8noxtal.bootloader.file=ATmegaBOOT.hex atmega8noxtal.bootloader.unlock_bits=0x3F atmega8noxtal.bootloader.lock_bits=0x0F

atmega8noxtal.build.mcu=atmega8 atmega8noxtal.build.f_cpu=8000000L atmega8noxtal.build.core=arduino

3)Habe auf das 2009 den ISP-Sketch geladen. 4)Habe alles verkabelt nur die Quarz-Stecker weggelassen 5)Habe das Board auf Atmega8-noxtal umgestellt 6)Habe auf Tools>Burn Bootloader>Arduino as ISP gedrückt 7)Habe die Fehlermeldung bekommen: avrdude: stk500_getsync(): not in sync: resp=0x15

Was hab ich falsch gemacht??? Sollte doch eigentlich so gehen mit dem internen quarz... (und allem anderen) Bin am verzweifeln, BITTE UM HILFE

Also, habe auf das 2009 den ISP Sketch geladen.

Hallo, da ich einen "blanken" fabriksneuen Atmega2560-Chip kriegen sollte, befasse ich mich nun auch mit dem Brennen des Bootloaders. Es sind aber noch ziemliche Unklarheiten vorhanden... Bitte bestätigt bzw korrigiert meine Aussagen:

Ich kann mit einem beliebigen Arduino Board (in meinem Fall ein Atmega 2560 mit fix verlötetem Chip) einen Bootloader auf einen nackten Chip brennen. Es werden nur folgende Pins (vom zu beschreibenden 2560er) dazu gebraucht: MISO MOSI SCK RESET OSC1 OSC2 div GND und VCC Anschliessend kann ich mit einem FTDI-Board die Sketches direkt auft den Chip bringen.

Danke im Voraus für Eure Hilfe Gruß Reinhard

@beide: Von euch beiden sind die Einstellungen korrekt.

Die Arduino IDE ist, was die Bootloader anbelangt, zerballert. Da ist irgendwo nen Fehler drin.. Ich kann seit V.19 keine Bootloader mehr brennen. Weder Parralell, noch STK500 noch ArdunioISP.

GGf. also mal probieren, den Ardunio von hand mit avrdude zu bespielen. http://www.youtube.com/watch?v=IRjEqaDbwXs

Gruß, Tobias