Atmega 328 und Stromverbrauch

Ich wollte jetzt den Bootloader für den internal Clock 8Mhz brennen.

Vorgegangen bin ich nach folgender Anleitung:

https://www.arduino.cc/en/Tutorial/ArduinoToBreadboard

Leider funktioniert es nicht. Wenn ich den Bootloader ganz normal mit 16Mhz Quarz aufspielen möchte funktioniert es.

Ich habe die Datei " breadboard-1-6-x.zip" geladen und im Ordner hardware abgelegt. Das Board wird entsprechend nach einem SW Neustart angezeigt. Den externen Quarz entferne ich gemäß der Zeichnung auf dem Link und versuche den Bootloader zu brennen.

avrdude: Yikes! Invalid device signature.
Double check connections and try again, or use -F to override
this check.

Fehler beim Brennen des Bootloaders.

Die Verbindungen müsste passen, da ich davor den Standardbootloader brennen konnte.

Kann es daran liegen, das meine Version von Arduino 1.8.10 ist und die Datei nicht kompatibel?

Download this hardware configuration archive: breadboard-1-6-x.zip, Breadboard1-5-x.zip or Breadboard1-0-x.zip depending on which IDE you use.

Leider funktioniert es nicht.
Wenn ich den Bootloader ganz normal mit 16Mhz Quarz aufspielen möchte funktioniert es.

Also funktioniert es!

Spiele den Bootloader für den internen Takt MIT angeschlossenen Quarz auf.

Danach kannst du ihn entfernen.

Merke:
Ohne Takt kein ISP.

Klasse, funktioniert. Danke. Dann ist das Bild allerdings etwas verwirrend, denn dort ist der nicht angeschlossen.

Bekomme beim Brennen allerdings einen Fehler, den ich nicht deuten kann.

***failed;
avrdude: WARNING: invalid value for unused bits in fuse "efuse", should be set to 1 according to datasheet
This behaviour is deprecated and will result in an error in future version
You probably want to use 0xfd instead of 0x05 (double check with your datasheet first).

Tja....

Da kann ich nur den Tipp geben, kundig machen was Fuses sind, und in der Boardefinition dann die richtigen einzutragen.

Und ... Schwupps ... ist die Meldung weg.

Na die Boarddefinition ist nur aus der Doku geklaut und da möchte ich nicht zu viel rumspielen, weil ich mir sonst sicherlich aus Unwissenheit den Controller zerschieße. Deswegen bitte ich um kompetente Hilfe :slight_smile:

Hier die Board.txt

##############################################################

atmega328bb.name=ATmega328 on a breadboard (8 MHz internal clock)

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.file=atmega/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:arduino
atmega328bb.build.variant=arduino:standard


atmega328bb.bootloader.tool=arduino:avrdude
atmega328bb.upload.tool=arduino:avrdude

Das fängt in diesem Fall damit an, dass du die Meldung aufmerksam liest und der dortigen Aufforderung folge leistest.

Hier noch mal der Originaltext:

You probably want to use 0xfd instead of 0x05 (double check with your datasheet first).


Ganz ehrlich?
Wenn du solche Manipulationen vor hast, wie z.B. Stomverbrauchsminimierung, Spielereien mit dem Takt, dann solltest du auch deine Angst überwinden, und dich kundig machen.

Sowieso: Das Datenblatt auswendig lernen!

Suchtipp: "AVR Fuse Calculator"

Na in den hab ich das schon eingegeben, da kommt allerdings etwas anderes raus als was in der board.txt steht.

-U lfuse:w:0xe2:m -U hfuse:w:0xd9:m -U efuse:w:0xfd:m

Und ich habe im Calculator sogar versucht rückwärts zu suchen und als Extended 0x05 einzutragen. Hilft allerdings nicht.

Na in den hab ich das schon eingegeben, da kommt allerdings etwas anderes raus als was in der board.txt steht.

Häää...

Was du oben eingibst, kommt hinten auch raus, sieht dann nur anders aus.

hfuse:w:0xd9:m
hfuse:w:0xda:m

Da wirst du doch wohl den Unterschied sehen können.
Benenne ihn, dann wirds auch klar, was du meinst.

combie:
Benenne ihn, dann wirds auch klar, was du meinst.

So dann hilf mir mal bitte weiter: Brown out Detection disabled BODLEVEL:111

Was heißt das und wofür steht das? Hat wohl etwas mit der Startup Time zu tun für internen RC.

Wird gesetzt über die SUT1...0 Fuses.

Die Brown out Detection hat ein eigenes Kapitel im Datenblatt.
Schon gelesen?

Ja, allerdings nix verstanden :slight_smile: Irgendwie ist das ein Schaltkreis der die Versorgungsspannung während irgendwelchen Operationen aufzeichnet? Wozu brauch ich das?

Steh im Übrigen auf Seite 58, falls du mir wieder nicht glaubst.

Die Brown out Detection Einheit hält den Prozessor im Stillstand, bis die notwendige Spannung anliegt.

Der Grund:
Fehlfunktion verhindern.
Zuverlässigen Betrieb sicherstellen.

Habe ich das schön vorgelesen?

Nein, aber nett übersetzt und erklärt. Und was ist deine Empfehlung bezüglich 0xFD oder 0x05 als Extended Byte?

1111 1101 vs. 0000 0101 ? Speilt doch eigentlich nur eine Rolle wenn die Bits vorher eine Rolle haben. Steht sicherlich irgendwo im Datenblatt unter Extended Byte?

Ok Ergänzung: Table 28-6.: Bit 7 - 3 nicht belegt. Also 1 oder 0?

Hach...

Im Datenblatt steht recht klar:
Ungesetzte Fuses sind 1 und gesetzte Fuses sind 0 .

Also kann die Frage nur lauten:
Welche Fuses muss ich auf 0 setzen, damit ich mein Ziel erreiche?
Den Rest lässt du natürlich auf 1.

Ganz so, wie es dir in der Meldung vorgeschlagen wird.
Warum glaubst du der Meldung nicht?

Ja macht Sinn, wenn man das so interpretiert. Danke dir. Das hat mir gut geholfen.

Kann ich das jetzt in der Art und Weise für alle anderen möglichen Clocks machen, die der Atmega hergibt?
Board.txt entsprechend ändern und dann einfach Bootloader drauf brennen?
Wahrscheinlich schon

Ich empfinde eine Unterhaltung mit dir als etwas "schwierig", unter Anderem, weil schon besprochene Dinge wieder in Frage gestellt werden.

Ich weiß nicht, was dein logisches Denken so beeinflusst....

Aber einen Tipp kann ich dir geben:

Technische Probleme fordern in der Regel eine ganz andere Herangehensweise, als soziale oder Sozialisierungsprobleme.

Technische Probleme:
-Problem analysieren
-Lösung erarbeiten
-Lösung durchsetzen.

Soziale Probleme:
Darüber muss man reden.
Solange reden, bis sich das Problem verändert,
oder sich die Einstellung zum Problem verändert.
(was beides aufs gleiche hinaus läuft)

Verwechselt man die beiden Lösungsstrategien, dann landet man bei sozialen Problemen ganz schnell zu Lösungen wie der elektrischen Stuhl, oder ähnlichen Gerätschaften.

Und auch macht es wenig Sinn einen ATMega328p bequatschen zu wollen, wenn er nicht das tut, was man von ihm will. Der Versuch wird ins leere gehen.

petzlrun:
Klasse, funktioniert. Danke. Dann ist das Bild allerdings etwas verwirrend, denn dort ist der nicht angeschlossen.

Nein, ist es nicht!
Die Verwirrung machst du dir selber.

Denn der Auslieferungszustand eines ATMega328P ist mit aktiviertem internen 1MHz Takt.
So steht es im Datenblatt.
So ist es auch.
Und so funktioniert das dann auch.

Aber das hast du dir selber kaputt gemacht, als du den 16MHz Bootloader aufgespielt hast.

Zusätzlich:
Dem Bild fehlen die 2 Abblockkondensatoren.
Die solltest du nachrüsten.
Sonst kann/wird es Probleme geben.

combie:
Ich empfinde eine Unterhaltung mit dir als etwas "schwierig", unter Anderem, weil schon besprochene Dinge wieder in Frage gestellt werden.

Ich weiß nicht, was dein logisches Denken so beeinflusst....

Wenn das hier eine Unterhaltung für dich ist, dann tust du mir sehr leid. Gewöhnlich führe ich meine Unterhaltungen verbal.

Diesen Post hättest du dir einfach sparen sollen, denn ich hatte dich zu keiner "professionellen" Meinung zu meiner Person gefragt.

Ich weiß nicht, was dein soziales Denken so beeinflusst....

Mehr gibt es von mir nicht zu sagen.

Wer welchen Inhalt postet, hast Du mit Sicherheit nicht zu entscheiden.
Du musst hier ja nicht mitlesen, wenn es Dir nicht passt.

Gruß Tommy

Hach...
Kritik schmeckt dir wohl nicht so....
Dann wird es aggressiv...

Armes Menschlein, damit wirst du sicherlich noch viele Probleme bekommen.