Bootloader brennen mit 8Mhz Quarz

Hi,
Wollte gerade auf meine atmega 328p über einen arduino uno den Bootloader brennen. Wie so oft fehlt ein Bauteil, nämlich ein 16Mhz Quarz. Hab nur noch 8Mhz Quarze da. Würde das gehen, wenn ich die serielle Geschwindigkeit runter drehe?

Gruß Mutscheid1

Für 8 MHz kannste auch den internen Oszillator nehmen, sparste den Quarz ganz :slight_smile:

Funktioniert es denn? Muss ich irgendwas ändern in dem isp Sketch?

Du musst halt die Fuses richtig setzen.

Kuck mal , das macht das Leben leichter.
Ändern im Sketch musst Du dann nichts.

Ich kann die Aussage von Klaus_ww auf jeden Fall bestätigen: Im ISP Sketch muss nichts geändert werden und ein 328P-PU läuft auf jeden Fall ohne Quarz mit den internen 8 MHz (ob er damit "genau" läuft ist ein anderes Thema).

Allerdings habe ich dies mit den aktuelleren IDEs noch nicht getestet, wie dort die Fuses eingestellt werden müssen. Für solche "speziellen" Fälle halte ich mir noch die IDE 1.0.6 in der Hinterhand und initialisiere im Zweifelsfall den 328P-PU mit den entsprechend hinterlegten Einstellungen: In der "Boards.txt" unterhalb von Hardware/Arduino habe ich dazu folgenden Code hinzugefügt:

atmega328bb.name=Uno BB-8 (intern, 8 MHz, DIP-28, 328P-PU)

atmega328bb.upload.protocol=arduino
atmega328bb.upload.maximum_size=30720
atmega328bb.upload.speed=57600

atmega328bb.bootloader.low_fuses=0xE2
atmega328bb.bootloader.high_fuses=0xDA
atmega328bb.bootloader.extended_fuses=0x05
atmega328bb.bootloader.path=atmega
atmega328bb.bootloader.file=ATmegaBOOT_168_atmega328_pro_8MHz.hex
atmega328bb.bootloader.unlock_bits=0x3F
atmega328bb.bootloader.lock_bits=0x0F

atmega328bb.build.mcu=atmega328p
atmega328bb.build.f_cpu=8000000L
atmega328bb.build.core=arduino
atmega328bb.build.variant=standard

Wie es bei den moderneren IDE einzustellen geht - da wäre ich für entsprechende Tipps ebenso dankbar.
Rudi

Wenn man den Atmega später aus Energiespargründen nur mit 8Mhz betreibt, muss oder sollte man dann den Bootloader auch mit 8Mhz brennen?
Oder spart man damit gar keine Energie? Er soll später mit Batterien betrieben werden und wenn er nichts zu tun hat schlafen gelegen werden. Die Zeit, in denen er Wach ist, ist sehr gering.

Ich schätze mal (und Nick Gammon bestätigt das hier), du sparst Energie, einerseits weil er bei kleinererTaktrate weniger braucht, andererseits, weil du bei 8MHz (oder 1MHz) auch mit weniger als 5V auskommst und der atmega mit 3V weniger Strom verbraucht.

In dem verlinkten Artikel sind übrigens noch viele andere Energierspar-Tips.

Und ja sicher, falls du einen bootloader verwenden willst, muss der zum jeweiligen Takt passen, da er asynchron über die serielle Schnittstelle arbeitet.

Aber wenn du nicht sowieso einen USB-Seriell Adapter brauchst, kannst du zum Programmieren statt des Seriell-Adapters und Bootloader doch auch gleich einen USBTiny / usbasp o.ä. hernehmen.

Mutscheid1:
Oder spart man damit gar keine Energie? Er soll später mit Batterien betrieben werden und wenn er nichts zu tun hat schlafen gelegen werden. Die Zeit, in denen er Wach ist, ist sehr gering.

Ein mit 8Mhz betriebener 328 läuft mit 2,7-5,5V. Du hast also ein recht breites Spannungsfenster in dem sich deine Spannung bewegen kann. Z.B. 3 Alkalines AA-Bettrien haben Anfangs bei geringer Belastung ca. 4,8V, sie können bis 2,7V geleert werden. Dabei hast du keinen zusätzlichen Verbrauch von Spannungsregler/-Converter. Bei viel Schlaf, ist jahrelanger Betrieb möglich. Dagegen schaltet ein 16Mhz 328 schon bei 4,5V(?) ab. Verträgt aber auch nur maximal 5,5V. Die Batterien würden kaum effektiv genutzt oder du verwendest einen Spannungswandler, der aber selber wahrscheinlich mehr als der 328 verbraucht.

Das LilyPad-Board läuft übrigens mit internem Oszillator mit 8MHz und mit verschiedenen Controllern (AtMega168, 328, 32u4).
Da könnten die Fuses und der Bootloader schon passen.

Danke für die interessante Seite über die Stromsparmodie. Da ich den Atmega mit 3,3V betreiben möchte, bleibt ja nur die 8Mhz Variante. Ich bin derzeit im Internet einen Bootloader für den Atmega 328p mit externen 8Mhz Oszillator am suchen, finde aber nur welche mit interner Clock.

Ich habe gerade im englischen Teil des Forums folgenden Beitrag gefunden:
http://forum.arduino.cc/index.php?topic=89988.0
So wie es ausschaut, muss Upload Speed dafür reduziert werden. Vielleicht hilft dieser Beitrag?

Hab ein wenig recherchiert und rausgefunden, dass ich den bootloader für den Arduino pro 8mhz amega328 nehmen sollte.
Gesagt getan. Es kommt aber leider folgende Fehlermeldung:

avrdude: verification error, first mismatch at byte 0x7800
0x00 != 0x0c
avrdude: verification error; content mismatch
Fehler beim Brennen des Bootloaders.

Liegt es vielleicht daran, dass ich einen Atmega328p-pu habe?
Den Atmega habe ich an die 3.3V des Uno´s angeschlossen.

Ich hab´s geschaft. Hab meine boards.txt um folgenden Text ergänzt:

pro328.name=Arduino Pro or Pro Mini (3.3V, 8 MHz extern) w/ ATmega328

pro328.upload.tool=avrdude
pro328.upload.protocol=arduino

pro328.bootloader.tool=avrdude
pro328.bootloader.unlock_bits=0x3F
pro328.bootloader.lock_bits=0x0F

pro328.build.board=AVR_PRO
pro328.build.core=arduino
pro328.build.variant=eightanaloginputs

pro328.upload.maximum_size=32256
pro328.upload.speed=57600

pro328.bootloader.low_fuses=0xFF
pro328.bootloader.high_fuses=0xDE
pro328.bootloader.extended_fuses=0x05
pro328.bootloader.file=optiboot/optiboot_atmega328_pro_8MHz.hex
pro328.bootloader.unlock_bits=0x3F
pro328.bootloader.lock_bits=0x0F

pro328.build.mcu=atmega328p
pro328.build.f_cpu=8000000L
pro328.build.core=arduino

Bootloader brennen mit 3.3V funktioniert nicht, nur mit 5V. Danach Blink Sketch draufgeladen und die LED blinkt. ;D

Bootloader brennen mit 3.3V funktioniert nicht, nur mit 5V

Die ISP Signale MISO / MOSI /SCK / RESET sind 5V-Level (?) , der atmega sollte dann auch mit 5V versorgt werden, denke ich.

Super, immerhin klappt es ja nun schon mal bei 5V. Nun kannst du ja deinen Sketch entwickeln und anschließend testen, ob alles "ohne UNO" bei 3,3V noch läuft. Interessant ist es auf jeden Fall, da ich den 328P-PU bisher nur mit 16MHz-Quarz bzw. 8MHz intern und bei 5V betrieben habe.