ATMega328P Bootloader für 1 Mhz an 3 Volt

Hallo Leute,
Ich suche ein Bootloader mit 1 Mhz für denn ATMega328P. Ich sag mal was ich vor habe. Ich habe mir eine Fernbedienung mit dem ATMega328P, 16x2 LCD und 2 IR-LED's gebaut. Dieses läuft im Moment mit einem 16 Mhz ATMega328P. Wenn das Display deaktiviert ist also kein Strom bekommt(Relais). Und der Controller im Power-Down Modus ist frisst er immer noch 4,78 mA. Das ist zu viel. Mal berechnet das wenn ich ein 7805 um auf 5 V zu komme. Habe ich dort eine Leistung von 0,239 Watt die dort abfällt. Deswegen würde ich gerne denn Controller auf 1 Mhz betreiben und mit 2 AA Batterien das wäre dann 3 Volt der Controller läuft von 1.8 V bis 5.5 V bei 4 Mhz laut Datenblatt.
Ich kann aber kein 1 Mhz Bootloader finden.

Kann mir da einer helfen?
Lg. Jan.

Hallo,

die ca. 5mA zieht der µC aber nicht alleine. Im Sleep Mode mit 5V zieht der auch nur im µA Bereich. Deine restl. Schaltung müßtest du auseinander nehmen und den Strom messen.

Taktraten und damit indirekt die Möglichkeit einer geringeren Versorgungsspannung wird nicht über den Bootloader, sondern über die Fuses eingestellt. Du brauchst also einen weiteren Eintrag für einen batteriebetriebenen Atmega328 in der boards.txt.

Wenn du die Power LED runter fummelst bekommst du noch ein paar mA geschenkt…

Ansonsten:
Aber sicher…
Im Anhang eine ZIP mit einem breadboard Verzeichnis.

Datei–>> Voreinstellungen
Da siehst du wo Arduino deine Sketche speichert.

Dort findest du auch einen hardware Ordner.
Da wirfst du das breadboard Verzeichnis aus der Zip rein.

Arduino neu starten und das Boardsmenue in Werkzeuge kennt dann zusätzliche Boards.
Und in Werkzeuge kannst du dann zusätzliche Einstellungen machen

Fuses usw. werden beim Bootloader brennen auch gleich passend eingestellt.

BreadBoard.zip (5.64 KB)

sth77:
Taktraten und damit indirekt die Möglichkeit einer geringeren Versorgungsspannung wird nicht über den Bootloader, sondern über die Fuses eingestellt. Du brauchst also einen weiteren Eintrag für einen batteriebetriebenen Atmega328 in der boards.txt.

So ist es!
Leider kommt der original Bootloader dann nicht mehr mit der Baudrate hin.
Es muss auf 9600 oder besser auf 4800 runter.

Vorteil des Optiboot:
Mehr Platz für Anwendungen im Flash
Etwas schnellerer Start.

combie:
Wenn du die Power LED runter fummelst bekommst du noch ein paar mA geschenkt...

Ansonsten:
Aber sicher....
Im Anhang eine ZIP mit einem breadboard Verzeichnis.

Datei-->> Voreinstellungen
Da siehst du wo Arduino deine Sketche speichert.

Dort findest du auch einen hardware Ordner.
Da wirfst du das breadboard Verzeichnis aus der Zip rein.

Arduino neu starten und das Boardsmenue in Werkzeuge kennt dann zusätzliche Boards.
Und in Werkzeuge kannst du dann zusätzliche Einstellungen machen

Fuses usw. werden beim Bootloader brennen auch gleich passend eingestellt.

Hi combie!
Werde es ausprobieren so bald ich zuhause bin. Der Reset bleibt gleich oder?

  • ATMega328P(Der beim UNO dabei wahr hat ja 16 Mhz) aufs Board stecken
  • Arduino ISP Sketch drauf laden
  • Zweiten Controller auf Breadboard setzten.
  • SPI Interface Anschließen(RESET, MOSI, SCK, MISO)
  • Board auswählen(1 Mhz, 2,7 BOD? Oder 1,7?)
  • Bootloader brennen

Würde doch so gehen oder? Bzw. kann man ein Controller der bereits ein Bootloader hat wieder überschreiben eig. doch ja oder liege ich da falsch?

Würde doch so gehen oder? Bzw. kann man ein Controller der bereits ein Bootloader hat wieder überschreiben eig. doch ja oder liege ich da falsch?

Durch falsches setzen der Fuses kann man sich abhängen.
Dann hilft nur ein HV Programmer.
1,8V BOD sollte reichen.
Damit ist das EEProm geschützt.

  • SPI Interface Anschließen(RESET, MOSI, SCK, MISO)

10µF Kondensator am ArduinoISP-UNO fehlt noch...

Der bootloader muss für 1 MHz compiliert werden, damit er später über die Serielle Schnittstelle mit der IDE reden kann, denke ich mal.

Und ja, natürlich: Jedes erfolgreiche "Bootloader brennen" löscht den kompletten Flash und überschreibt einen evtl. vorher vorhandenen Bootloader.

combie:
Durch falsches setzen der Fuses kann man sich abhängen.
Dann hilft nur ein HV Programmer.
1,8V BOD sollte reichen.
Damit ist das EEProm geschützt.

10µF Kondensator am ArduinoISP-UNO fehlt noch...

Ähhh, Moment mal, verstehe ich nicht. Ich weis das wenn man die Fuses falsch setzt mit "HV" wahren glaubig 12V diese löschen kann. Der Kondensator ist klar. Kann man ein Controller nun überschreiben wenn bereits ein Bootloader drauf ist?

michael_x:
Arduino/hardware/arduino/avr/bootloaders/optiboot at 59b5311cdffbf239d956fc97f01091006bc4aaa3 · arduino/Arduino · GitHub

Der bootloader muss für 1 MHz compiliert werden, damit er später über die Serielle Schnittstelle mit der IDE reden kann, denke ich mal.

Und ja, natürlich: Jedes erfolgreiche "Bootloader brennen" löscht den kompletten Flash und überschreibt einen evtl. vorher vorhandenen Bootloader.

Soll ich mir da auch noch denn optiboot_atmega328.hex runterladen und diese brennen? Also in der boards.txt schreiben das er diese Brennt anstatt die andere die bei combie dabei ist?

Kann man ein Controller nun überschreiben wenn bereits ein Bootloader drauf ist?

Ja!
Klar, warum nicht!
Er darf nur nicht verfused sein!!!!

Verfusesd wäre in diesem Fall, wenn er den 16MHz Quarz braucht, der aber nicht auf deinem BrotBrett ist.
Klartext:
Wenn der µC vorher auf dem UNO gesteckt hat, dann muss auf dem UNO gebrannt werden!
Erst danach kannst du in aufs Brotbrett stecken.

anstatt die andere die bei combie dabei ist?

Was gefällt dir an dem OptiBootloader nicht, der in meiner Zip steckt?

combie:
Ja!
Klar, warum nicht!
Er darf nur nicht verfused sein!!!!

Verfusesd wäre in diesem Fall, wenn er den 16MHz Quarz braucht, der aber nicht auf deinem BrotBrett ist.
Was gefällt dir an dem OptiBootloader nicht, der in meiner Zip steckt?

Okay überschreiben geht alles klar.

Also wenn ich Controller mit 16 Mhz brenne aber kein Quarz dran hänge, dann wäre er verfused? Da ich ja ein Controller brenne der ein 16 Mhz Quarz braucht(aktuell) muss ich diesen doch dran anschließen auf dem Breadbrot. Und nachdem der 1 Mhz Bootloader drauf ist kommt der Quarz in die Tonne(nicht wortwörtlich).

"Was gefällt dir an dem OptiBootloader nicht, der in meiner Zip steckt?"
So meinte ich das nicht. Weil er geschreiben hat der muss 1 Mhz kompliert werden diesen habe ich gefragt.

Mal eine andere Herangehensweise: Wozu willst du überhaupt einen Bootloader behalten? Der Atmega läuft dann sowieso nicht auf einem Arduino-Board sondern allein auf einer Platine/Steckbrett. Ob man dort nun extra einen Schnittstellenchip USB-Seriell oder gleich einen ISP anschließt ist doch eigentlich egal. Daher als Vorschlag: Verzicht auf den Bootloader, Programmierung klassisch über einen ISP bzw. Arduino als ISP.

Verzicht auf den Bootloader, Programmierung klassisch über einen ISP bzw. Arduino als ISP.

Das wäre dann der letzte Menupunkt in meinem Zip gedöns.
Auch da muss man dann den "Bootloader brennen" Knopf drücken, um die Fuses auf "ohne Bootloader" zu setzen

Hast du denn bzw. brauchst du denn unbedingt den externen Quarz? Einfacher wäre es vielleicht, du taktest nur auf 8 MHz runter und nimmst dafür den internen Quarz.

Mein Atmega328 mit 8 MHz und BOD disabled benötigt ca. 6 µA im Ruhezustand. Ob da 1 MHz noch einen großen Unterschied macht bezweifel ich stark.

Interessanter wäre wohl eher, wieso du mit dem Stromverbrauch momentan im mA-Bereich liegst, vermutlich musst du dir die restliche Schaltung erst einmal anschauen bevor du anfängst mit den Fuses rumzuspielen. Aber der Hinweis kam ja bereits im ersten Thread von Doc_Arduino...

Hallo,

tja, kann mich nur wiederholen. Schön das ihr euch um seinen Bootloader kümmert. Aber das ist nicht sein Hauptproblem. Für mich sieht es aus als ob er den nackten µC an seiner Schaltung hängen hat und insgesamt 5mA misst im Sleep Mode. Und da ich/wir weis/wissen das der µC im Sleep Mode keine 5mA zieht, kann ich behaupten, dass sein Problem woanders liegt, nämlich in seiner restlichen Beschaltung. Dem muß er nachgehen. Sonst nützt die ganze Aktion mit dem µC runtertakten nichts.

Spexx:
Hast du denn bzw. brauchst du denn unbedingt den externen Quarz? Einfacher wäre es vielleicht, du taktest nur auf 8 MHz runter und nimmst dafür den internen Quarz.

Mein Atmega328 mit 8 MHz und BOD disabled benötigt ca. 6 µA im Ruhezustand. Ob da 1 MHz noch einen großen Unterschied macht bezweifel ich stark.

Interessanter wäre wohl eher, wieso du mit dem Stromverbrauch momentan im mA-Bereich liegst, vermutlich musst du dir die restliche Schaltung erst einmal anschauen bevor du anfängst mit den Fuses rumzuspielen. Aber der Hinweis kam ja bereits im ersten Thread von Doc_Arduino…

Okay, ich werde das dann mit 8 Mhz intern versuchen. Bei Arduino gibt es glaubig das Beispiel “ATMega on Breadbroad (Elimenting the External Clock)” Oder so. Werde ich mir mal an schauen. Also meine Fernbedienung ist so aufgebaut:

  • Mikrocontroller mit 16 Mhz Quarz(Aktuell)
  • Spannung von 9 Volt Block Batterie → Diode 1N4007(Schutz) → 100 uF Elko(buffern) → LM7805(4 Volt verbraten) → 5V(Output) → 10 uF Elko(buffern). Daher bekomme ich meine Spannung.
  • Sonst sind dort noch 7 Taster angeschlossen(Gegen Ground, Interner Pullup)
  • 2 IR-LED. Die GND über ein BC547 Transistor abfließt.

Können diese 5 mA auch vllt. auch vom LM7805(Spannungswandler) kommen? Denn Wenn ich das LCD abstecke bleiben die mA gleich. Also wenn das LCD aus ist dann zieht es auch kein Strom. Die Taster ja eh nicht. Und die IR-LED’s nur sehr kurz beim senden. Aber halt nicht wenn der Controller im Sleep Mode ist.
Also kann es doch eig. nur am Spannungswandler liegen oder? Wie könnte man das am besten messen?
Jan

Der 7805 stammt aus der Steinzeit!

Suche nach Linearreglern mit "low quiescent current"
z.B MIC5231 , TPS709
(bitte vor dem Kauf Datenblatt prüfen)

combie:
Der 7805 stammt aus der Steinzeit!

Suche nach Linearreglern mit "low quiescent current"
z.B MIC5231 , TPS709
(bitte vor dem Kauf Datenblatt prüfen)

Aha okay. Dann kann ich mir die 4 mA auch langsam erklären das ist dann wahrscheinlich der eigen verbrauch vom LM7805. Denn µC zieht dann nur extrem wenig und LCD gar nix weil keine Spannung anliegt.

//Frage würde der L4940 V5 gehen. Eingangsspannung ist 9V.
Zu denn Linearreglern. Kannst du mir da ein empfehlen für 5V? Alle die ich finde sind immer SMD oder einstellbar. Meine Schaltung ist auf einer Lochrasterplatine aufgelötet.

Hallo,

die Infos kommen ja ganz schön Häppchenweise. Der L4940 geht auch nicht. Verheizt immer noch zu viel. Wenn dir SMD zu klein ist zum löten, dann kannste das hier nehmen. Pololu 5V Step-Up Voltage Regulator NCP1402 Oder guckst dort nach Step Down Wandler für 9V -> 5V. Hat immer noch Verluste gegenüber combie seinen Link, aber um Welten besser wir die 0815 Regler.

Warum hast du nicht alle Stromzweige einzeln gemessen? Da lernt man viel mehr dabei. Du misst scheinbar immer nur bei der Einspeisung. Du müßtest in der Schaltung messen.

xJan45x:
Zu denn Linearreglern. Kannst du mir da ein empfehlen für 5V? Alle die ich finde sind immer SMD oder einstellbar. Meine Schaltung ist auf einer Lochrasterplatine aufgelötet.

Ich kann dir diese empfehlen, die brauchen sehr wenig Strom (unter 1 mA). Die gibt es auch kleiner. Must mal bei ebay schauen.

Edit:

Ja, genau, Doc war schneller und hat die kleineren gezeigt. :wink:
Der gezeigte ist allerdings ein StepUp.