UNO Bootloader auf eigenes PCB brennen

Guten Tag miteinander!

Ich bastle zurzeit an einem Projekt herum welches auf dem UNO R3 basiert.

Ich habe eine eigenständige Leiterplatte mit einem Atmega328 (TQFP32) darauf.
Da das PinOut vom TQFP32 und dem MLF-Footprint identisch sind, dachte ich mir, ich brenne gleich den UNO bootloader auf
meine Platte....

Nun hab ich diesbezüglich ein paar Fragen:

-Ich habe die ISP schön sauber auf einem Stecker nach PinOut des AVR mkii. Wie kann ich nun mit dem genannten den Bootloader des UNO auf meinen Atmega brennen?

-Meine Leiterplatte läuft auf 3.3Volt. Ist das ein Problem für den bootloader?

-Kommt der Bootloader mit dem TQFP32 Footprint klar? Das PinOut von UNO und TQFP32 ist meines Wissens identisch

-Auf was sollte ich im Allgemeinen achten wenn ich den bootloader brenne? Gibt es vorarbeiten die geleistet werden müssen?

Danke euch schon mal ganz herzlich!!

Ich habe die ISP schön sauber auf einem Stecker nach PinOut des AVR mkii. Wie kann ich nun mit dem genannten den Bootloader des UNO auf meinen Atmega brennen?

z.B. mit der Arduino IDE. Unter Tools->Burn Bootloader (in Deutsch wird's so ähnlich heissen).

Meine Leiterplatte läuft auf 3.3Volt. Ist das ein Problem für den bootloader?

Nein, für den Bootloader nicht, aber vielleicht für die Fuses. Auch sollte man den ATmega328 lt. Datasheet mit 3.3V nur bis ca. 12 MHz betreiben, somit kannst Du den Bootloader für den UNO nicht nehmen, dieser ist für 16 MHz ausgelegt. All das musst Du beachten, wenn Du das richtige Board für das Brennen des Bootloaders auswählst.

Kommt der Bootloader mit dem TQFP32 Footprint klar? Das PinOut von UNO und TQFP32 ist meines Wissens identisch

Der Bootloader muss das nicht wissen, Du musst ihn nur extern richtig beschalten.

Auf was sollte ich im Allgemeinen achten wenn ich den bootloader brenne? Gibt es vorarbeiten die geleistet werden müssen?

Wie gesagt: Du musst das richtige Board auswählen, allenfalls einen neuen Eintrag im boards.txt machen, damit der richtige Bootloader (in Deinem Fall z.B. der für den Lilypad) und die richtigen Fuse-Einstellungen genommen werden.

Danke für die Antwort! Das hilft mir schon sehr!

z.B. mit der Arduino IDE. Unter Tools->Burn Bootloader (in Deutsch wird's so ähnlich heissen).

Jap, ich habe schon gesehen, dass es da einen Eintrag "Bootloader installieren" unter Tools aufgeführt ist...aber wie zum Teufel schaffe ich es, das die IDE mit meinem Programmer kommuniziert? Ich habe einiges dazu gelesen, werde aber nicht wirklich schlau daraus...

Nein, für den Bootloader nicht, aber vielleicht für die Fuses. Auch sollte man den ATmega328 lt. Datasheet mit 3.3V nur bis ca. 12 MHz betreiben, somit kannst Du den Bootloader für den UNO nicht nehmen, dieser ist für 16 MHz ausgelegt. All das musst Du beachten, wenn Du das richtige Board für das Brennen des Bootloaders auswählst.

Aha, der begriff des Bootloaders und dessen Funktion ist mir noch ein wenig schleierhaft aber gut wenn das keine Rolle spielt! Hmm...das mit den 12MHz ist mir wohl durch die Lappen...Aber das ganze auf 5V aufzubohren ist eine kleine Sache :slight_smile:

Na dann, ich versuch das mal und hoffe darauf keine Rauchzeichen zu erhalten!

Merci!

UNOMEGA:
Aha, der begriff des Bootloaders und dessen Funktion ist mir noch ein wenig schleierhaft aber gut wenn das keine Rolle spielt! Hmm...das mit den 12MHz ist mir wohl durch die Lappen...Aber das ganze auf 5V aufzubohren ist eine kleine Sache :slight_smile:

Falls es dich interessiert, ich habe einen kleinen Blogeintrag zum Bootloader geschrieben: sth77 | Arduino Blog: Der Bootloader und die Schnittstelle zum PC
Bei weiteren Fragen und Anregungen einfach hier melden. :wink:

der begriff des Bootloaders und dessen Funktion ist mir noch ein wenig schleierhaft

Da kann ich dich vielleicht ein wenig verwirren :wink: : Wenn du eh einen Programmer verwendest und nicht über die serielle Schnittstelle "andauernd" neue sketches laden willst, brauchst du gar keinen Bootloader.

Sodala...

Den Bootloader hab ich draufgebracht ohne das was abgeraucht ist...

Danke an sth77 für den Link. Jetzt wird mir einiges klar!

und zum Thema ob mit oder ohne BL:

Ich muss nicht andauernd neue Firmware draufklatschen aber doch ab und an...

Jetzt stellt sich mir aber ein anderes Problem:

Wenn ich über die IDE etwas uploaden möchte kommt immer folgende fehlermeldung:

"avrdude: stk500_getsync(): not in sync: resp=0x00"

alles was es im Internet dazu gibt, hab ich schon gelesen und bin nicht schlauer als zuvor... Weiss jemand was ich falsch mache?

Kurz noch zur Config:

Win7 Enterprise (bin Lokal Admin), 64Bit
Arduino IDE 1.0.2
Arduino UNO R3 -> respektive einen Atmega328AU (ja, ich hab die Checksumme für den Dude umgestellt im Config ^^)

es hängt eigentlich nichts am Pozi ausser Quarz und ein paar C's...
An den SPI leitungen sind Schieberegister dran, alles unbelastet...

Dank euch schon mal!

Den Bootloader hab ich draufgebracht ohne das was abgeraucht ist...

Welchen Bootloader? Welchen Quartz verwendest Du (Frequenz)? Wie sieht die Stromversorgung aus (am besten komplettes Schaltbild)?

Bis zum ersten erfolgreichen Upload mit einem DIY-Arduino hatte ich auch etwas zu kämpfen. Bei mir wurden die Probleme hauptsächlich von der Stromversorgung verursacht (Flash-Programmierung braucht mehr Strom als der Betrieb).

Salute!

Ich hab einfach den Bootloader draufgeknallt, welcher in der IDE hinterlegt ist. Ich nehme stark an, dass das der richtige für den 328 sein wird...

Folgendes weiss ich unterdessen:

Auf dem UNO ist ein 328P verbaut und ich hab den "normalen" 328 (also nicht PicoPower/automotive)

Den Bootloader hab ich draufgekriegt in dem ich im AVRDude die DiviceSignature an den "Normalen" angepasst habe (letzter Block von 0x0F auf 0x14)...soweit so gut.

Wenn ich jetzt aber versuche Software zu uploaden, kommt immer der gleiche Fehler: "avrdude: stk500_getsync(): not in sync: resp=0x00"

Was die Beschaltung anbelangt, habe ich mich schön ans datenblatt von atmel gehalten: Stütz-C, 16MHz Osci von SYWARD mit zwei mal 22pF-Cs. Die Spannungsversorgung erfolgt direkt vom Regler her (5V fix -> gemessen mit kalibriertem Messmittel (RUAG ^^) 4.981V, der Regler kann 3A pumpen...) welcher noch mit 10uF/22uF gestützt bzw. gefiltert ist.

Schaltungsmässig ist aus meiner Warte alles i.O -- oder seht ihr das anders?

Wie stellst du die Verbindung zwischen uC und PC her? COM-Port->MAX232 oder USB->UART Adapter? Damit der Bootloader funktioniert, muss der Auto-Reset der Arduino-IDE funktionieren oder du musst manuell den Reset-Button drücken (das soll gehen, aber das Timing habe ich persönlich noch nicht hinbekommen). Für den Auto-Reset wird die DTR-Leitung der seriellen Schnittstelle verwendet ( http://arduino.cc/en/uploads/Main/Arduino_Uno_Rev3-schematic.pdf ). Die CPU-Frequenzen lassen sich übrigens in der boards.txt einstellen bzw. du legst für deine Schaltung ein neues board an.

das soll gehen, aber das Timing habe ich persönlich noch nicht hinbekommen

Während des kompilierens RESET Taster gedrückt halten, und sobald die IDE Upload anzeigt, loslassen.

Eventuell auch in den Einstellungen "Ausführliche Ausgaben" anhaken.

Eine LED am Arduino Rx Pin könnte auch helfen ( aber da kann man auch gleich besser Auto-Reset: das DTR Signal über einen Kondensator an Reset anschliessen )

Danke für die Antworten!

Wie stellst du die Verbindung zwischen uC und PC her?

USB -> AVR MKII -> ISP

Damit der Bootloader funktioniert, muss der Auto-Reset der Arduino-IDE funktionieren

Wo seh ich ob das tutet? :astonished:

Für den Auto-Reset wird die DTR-Leitung der seriellen Schnittstelle verwendet

Ich geh via ISP aufs Brett...da gibts keine DTR (also ich hab da einfach MISO/MOSI/SCK/GND/VCC/RESET ?!)
oder peil ich da was nicht?

Die CPU-Frequenzen lassen sich übrigens in der boards.txt einstellen bzw. du legst für deine Schaltung ein neues board an.

Ja fürs UNO liegt die bei 16MHz (hab ich auch so aufm PCB) und die Baud ist auf 115k2...das sollt ja alles passen...oder sehe ich was falsch?

Wenn ich die ausführliche Ausgabe aktiviert habe sieht das Folgendermassen aus:

avrdude: Version 5.11, compiled on Sep  2 2011 at 19:38:36
         Copyright (c) 2000-2005 Brian Dean, http://www.bdmicro.com/
         Copyright (c) 2007-2009 Joerg Wunsch

         System wide configuration file is "X:\X\arduino-1.0.2-windows\arduino-1.0.2\hardware/tools/avr/etc/avrdude.conf"

         Using Port                    : \\.\COM3
         Using Programmer              : arduino
         Overriding Baud Rate          : 115200
avrdude: Send: 0 [30]   [20] 
avrdude: Send: 0 [30]   [20] 
avrdude: Send: 0 [30]   [20] 
avrdude: Recv: 
avrdude: stk500_getsync(): not in sync: resp=0x00

avrdude done.  Thank you.

Ich blick es einfach nicht...das muss geh :drooling_face:

Dank euch für die super Antworten...hier wird einem geholfen! Echt toll!

USB -> AVR MKII -> ISP

Dafür brauchst Du aber keinen Bootloader. Wählst Du dann auch "Upload using Programmer" und nicht einfach "Upload" an?

Sodala...jetzt funktioniert alles wie es sollte...

Hatte wohl nur den falschen Knopf erwischt in der IDE peinlichpeinlich

Danke euch allen ganz dick. Das ist mal ein Forum wo einem noch konstruktiv geholfen wird!
Macht weiter so, ihr seit TOP!

Cheers ond än schöne hiecht ^^

UNOMEGA