Optiboot 8.0 mit Arduino Uno auf Nano brennen

Hallo Members,

mein erster Beitrag. Ich habe lange gesucht und nichts gefunden was mir weiterhelfen könnte.

Ich habe mit einem Kumpel einen Nano programmiert. Das Programm läuft. Leider braucht der Nano knappe 2sec zum Booten.

Jetzt bin ich auf die Idee gekommen, einen neuen Bootloader (Optiboot) aufzuspielen, um die Bootzeit wenigstens auf 0,5sec zu bringen.

Einen Arduino Uno habe ich über File -> Examples -> ArduinoISP pprogrammiert.
Der Bootloader mit einem Nano funktioniert. Nur weiß ich nicht, welchen Bootloader ich gebrannt habe und die Bootzeit dauert unverändert ca. 2sec.

In Preferences -> Additional boot managers -> habe ich eingetragen: https://github.com/Optiboot/optiboot/releases/download/v8.0/package_optiboot_optiboot-additional_index.json

Dann unter Tools -> Board Manager -> habe ich nach Opti gesucht und gefunden und Optiboot 8.0 installiert

Dann unter Tools -> Boards -> Arduino Nano Board ausgewählt (wenn ich unter Boards -> Optiboot -> 28 pin cpus ausgewähle, geht es nicht)
Tools -> Programmer -> Arduino as ISP
Dann Tools -> Burn Bootloader

Meine Frage: wie verkürze ich die Bootzeit des Nano und bekomme ich das mit Optiboot hin? Und wenn Optiboot die Lösung ist..........wie bewerkstellige ich dies.

Danke füs Lesen.

Michael

Mache doch den Nano zum UNO!

Eine Möglichkeit für schnelleres Starten wäre, Wenn Du Deinen Sketch , also Dein Programm, das auf den Nano soll, mittels deines Uno as ISP mit der Option : Hochladen mit Programmer auf den Nano lädst. Dies enfernt zugleich auch den Bootloader und der Nano startet prakisch ohne Verzögerung. Nur kannst Du den Nano danach nur noch über ISP flashen, solange Du nicht den Bootloader neu brennst.

Danke für Eure Antworten.
@combie: Leider habe ich keine Ahnung, was Du mir sagen möchtest.
@Deltaflyer: Das habe ich gerade ausprobiert und die Verzögerung ist immer noch da, aber der Nano startet etwas rascher. Jedenfalls rascher als zuvor. Jetzt 1,5sec geschätzt. Jetzt kann es nur noch am Sketch liegen, warum die Verzögerung eintritt?

Michael

Du kannst den UNO Bootloader auf den Nano spielen.
Und danach als UNO ansprechen.
Das schaufelt dir nebenbei sogar 1,5K Flash frei.

Verstanden combie. Danke. Wie transferriere ich den UNO Bootloader auf den Nano? Danach wird der Nano an das USB Kabel angeschlossen und ich spreche den Nano als UNO an und lade das Programm. Richtig?

Michael

Du kannst doch "Bootloader brennen",
Haste doch schon gemacht.

Nur eben hier dann nicht den Nano als Ziel auswählen, sondern einen UNO

Höchstwahrscheinlich. mit absoluter Bestimmtheit kann ich das aber nicht sagen, ohne Deinen Sketch zu sehen. Jedenfalls starten diejenigen controller, die ich bisher ohne Bootloader nutze , sofort und ohne Verzögerung. Als Controller habe ich da sowohl ATMegas (328, 644, 1284, 2560), als auch diverse ATTinys ohne Bootloader benutzt.

Beim Nano werden erstmal 2kByte Code ausgeführt, wenn man den Bootloader nach deiner Anleitung "entfernt", ohne die Fuses zu ändern.
Ja, das sind nur 1000 NOP, verplempert aber auch eben die 2K Flash

Auch den Oszillatorstart kann man noch um ein paar Takte erleichtern.

Ja, Recht Du hast, habe ich nicht mehr bedacht, da ich immer die 'nackten' Controller direkt verbaut hatte, die erst gar keinen Bootloader drauf hatten, also direkt mit nem Sketch beschrieben wurden, nachdem die Fuses gesetzt wurden, für Verwendung ohne Bootloader.

Kein UNO oder Nano Bootloader lassen sich nun brennen. Fehlermeldung: programmer not in sync resp=0/00
programmer is not responding

Michael

Hast Du am UNO den Du als ISP-Programmer nutzt, den 10 mF kondensator, nachdem Du das Program 'Arduino as ISP' auf den Uno geladen hast, zwischen RESET und GND angeschlossen? wenn nicht, hast Du nämlich das ISP Programm auf dem UNO wieder überschrieben, respektive gelöscht, und darum findet die IDE den Programmer nicht mehr. Dann einfach das ISP-Programm nochmals auf den UNO flashen (ganz normal über USB), dann zwischen RESET und GND einen 10 Mikrofarad Kondensator ('+' Anschluss des Kondensators an RESET, '-' des Kondensators an GND) anstecken , danach sollte die IDE den Arduino UNO wieder als Programmer erkennen.

Ohne Bootloader arbeiten

Den 10µF Elko habe ich zwischen Reset und GND gelötet.

@wwerner: Ohne Bootloader habe ich ja den Sketch auf den Nano gebrannt. Das hat auch funktioniert. Leider mit einer annähernd langen Bootzeit.

Fuses setzen. Aber welche und wie?

Michael

Fuses kann man per ISP oder HVPP setzen.
Siehe auch: https://www.engbedded.com/fusecalc/

Also ist der "Arduino as ISP" UNO in Ordnung und funktioniert wie gewollt.

Damit gibt es keinen erkennbaren Grund, dass du nicht nochmal einen Bootloader auf den NANO brennen kannst.

Warum lötest du auf dem UNO rum?
Verstehe ich nicht.....

Verstümmelt bis zur Unkenntlichkeit.
Zeige bitte die vollständige Meldung, incl. der AVRdude Kommandozeile.

Ich habe den Elko auf die Steckverbindungen vom UNO zu dem Nano aufgelötet. Die Boards habe ich nicht verändert.

Danke für den Link mit den Einstellungen der Fuses.

Ich gebe mir ja Mühe, aber ich denke, ich nutze all Eure Infos und mache mit meinem Kumpel gemeinsam weiter. Auf alle Fälle berichte ich wie es weitergeht. Kann ein paar Tage dauern.

Danke an Euch bis hierhin.

Michael

Hä? Der Kondensator darf NUR mit dem Reset vom UNO , keinesfals mit dem Reset vom NANO verbunden sein. Der Reset vom Nano darf auch nicht auf den Reset vom UNO geschaltet sein, sondern gehört auf Pin10 vom UNO. Lediglich der '-' Anschluss des Kondensators darf mit GND von UNO und GND von Nano verbunden sein.

Ich habe gemäß dieser Seite verkabelt:

Hier habe ich Abbildung 4 (Programmer und Target verbinden mit Kondensator) gewählt.
Dort ist der Elko tatsächlich mit dem Reset Pin des Nanos verbunden.
Bei weiterer Suche habe ich auch eine Version gefunden, bei der der Elko nur auf dem UNO Board am Reset Pin und GND sitzt.
Was ist jetzt korrekt?

MIchael

Genau das!

Dein AZ Tutorial verarscht dich.

Danke für die Info. Ich ändere das sofort.

Michael