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