Arduino / Adafruit Board soll sofort starten

Hallo,

ich bin relativ neu in diesem Bereich, aktuell beschäftigt mich eine Frage, kann man die Bootsequenz eines Arduino / Adafruit Board überspringen?

Zumindest ist das mit meinem Adafruit Trinket so, dieser wartet erst eine gewisse Zeit bis er den eigentlichen Code ausführt. Ist das bei den Arduino Boards auch so?

In meinem Fall soll ein Arduino / Adafruit Board ein LED-Streifen ansteuern, dass Problem ist nur, das dass Board wird nicht permanent mit Strom versorgt, aber sobald Strom anliegt soll sofort der LED-Streifen angesteuert werden.

Gruß
Andreas

Tja...
Runter mit dem Bootloader.
Die Fuses auch richtig einstellen.

Das alles mit einem ISP Programmer.
Geht auch aus der Arduino IDE heraus.

combie:
Tja...
Runter mit dem Bootloader.
Die Fuses auch richtig einstellen.

Das alles mit einem ISP Programmer.
Geht auch aus der Arduino IDE heraus.

Ich nutze den Arduino IDE, hat das was mit dem "Bootloader Brennen" zu tun?

Wenn der Bootloader nicht mehr existiert, ist es dann noch möglich das Board zu programmieren, sprich etwas zu ändern?

Welche Sicherungen muss man da richtig einstellen? Gibt es zu dem ganzen evtl. eine Best Practice?

Gruß
Andreas

Hi

Der Arduino lässt Sich so leicht programmieren, weil Da auf dem µC bereits ein Programm auf Deinen Sketch wartet - der Bootloader.
Ohne Diesen musst Du den µC 'ganz normal brennen' - eben per ISP.
Der Bootloader hat also die Aufgabe, ein neues Programm (Deinen Sketch) entgegen zu nehmen, nicht mehr, nicht weniger.
Diese Einfachheit wird dadurch erkauft, daß der Bootloader etwas Platz braucht und nach einem Reset die eine oder andere Millisekunde auf einen neuen Download wartet.
Wenn Das ein 'nogo' ist, muß der Bootloader runter und das Programm (die HEX-Datei) per ISP gebrannt werden.
Das ist die gleiche HEX-Datei, Die auch von der Arduino-IDE erstellt wird, der Bootloader kümmert sich 'nur' darum, daß das Hochladen einfacher ist - und, wenn Nichts hochzuladen ist, wird das vorhandene Programm angesprungen und ausgeführt.

Wie die Fuses eingestellt sein müssen, kommt auf dem verwendeten µC an - Welche Sich je nach Arduino unterscheiden.

Theoretisch müsste 'Arduino as ISP' auch auf 'Arduinos' funktionieren, hatte aber bisher noch keinen Grund, Das auszuprobieren.

MfG

Hallo,

Keine Hilfe ... ein paar Gedanken.

also in der Grundeinstellung wartet der Arduino bei mir vielleicht eine Sekunde? Ausser ich habe im Setup etwas das mit Delay() anfängt. Das sollte aber partu vermieden werden. Oder aber es werden massiv Berechnungen angestellt. Dann könnte noch die Initialisierung Externe Hardware für Verzögerung sorgen.
Aber ohne den Sketsh und den zugrunde liegenden Schaltplan, ist schwer was dazu zu sagen.

Grüsse Temucin

Pauschal ist zu sagen, wie aber bereits geschrieben, Sketch per ISP mit Programmiergerät hochladen und die Startverzögerung, die durch den Bootlader verursacht wird, ist weg.
Ein Arduino lässt sich als Programmiergerät für einen anderen Arduino programmieren, fehlt nur noch ein Kondensator und es kann losgehen. Stichwort „Arduino als ISP“

Sketch per ISP mit Programmiergerät hochladen und die Startverzögerung, die durch den Bootlader verursacht wird, ist weg.

Die Bootloader Fuses nicht vergessen....!
Denn 2000 (überflüssig) durchlaufene NOP sind auch eine Startverzögerung.

Auch möchte man ja nicht sinnfrei/freiwillig auf 2k Flash verzichten.
Denn wenn der User Code in den Bootloader Bereich ragt, scheppert es auch.
Dann versagt es.

Darum:

Die Bootloader Fuses nicht vergessen....!

Attack44:
Zumindest ist das mit meinem Adafruit Trinket so, ...

Da hast Du einen, sagen wir mal unglücklichen Ansatz gewählt. Du kaufst Dir ein normales Auto und flext das Dach weg, obwohl es auch ein Kabrio gegeben hätte.

Der Adafruit Trinket beherbergt einen ATtiny85 als µC, den es auch als "nacktes" IC ohne Bootloader gibt.

Anleitung: Atmel ATtiny 85 mit Arduino (ArduinoISP) flashen und programmieren (Arduino IDE 1.6.4)

Attack44:
Welche Sicherungen muss man da richtig einstellen? Gibt es zu dem ganzen evtl. eine Best Practice?

Die IDE faßt das Brennen des Bootloaders und das Setzen der Fuses zusammen. Die Auswahl geht über "Werkzeuge/Platine/ATtiny85 @ 8 MHz no bootloader". Der Text hängt von der verwendeten ATtiny-Erweiterung für die IDE ab.

Mögliche Erweiterung: SpenceKonde ATTinyCore

SpenceKonde ATTinyCore.png

SpenceKonde ATTinyCore.png

Vielen Dank für die ausführlichen Antworten, diese helfen mir auf jeden Fall weiter. :slight_smile:

agmue:
Da hast Du einen, sagen wir mal unglücklichen Ansatz gewählt. Du kaufst Dir ein normales Auto und flext das Dach weg, obwohl es auch ein Kabrio gegeben hätte.

Der Adafruit Trinket beherbergt einen ATtiny85 als µC, den es auch als "nacktes" IC ohne Bootloader gibt.

Darüber habe ich mir beim Kauf keine Gedanken gemacht, beim Kauf war für der ausschlaggebende Punkt die Größe (da ich sehr wenig Platz habe) und das ich damit ein LED-Strip ansteuern kann.

Gruß,
Andreas

Attack44:
Vielen Dank für die ausführlichen Antworten, diese helfen mir auf jeden Fall weiter. :slight_smile:

Darüber habe ich mir beim Kauf keine Gedanken gemacht, beim Kauf war für der ausschlaggebende Punkt die Größe (da ich sehr wenig Platz habe) und das ich damit ein LED-Strip ansteuern kann.

Was für einen Stripe verwendest du denn ?
Und ein "nackter" ATtiny85 ist auch noch kleiner.
Der muss dann allerdings immer per ISP geflasht werden.
Das wurde hier ja auch schon angesprochen.

Attack44:
Darüber habe ich mir beim Kauf keine Gedanken gemacht, ...

Passiert schon mal, sollte kein Vorwurf sein :slight_smile:

HotSystems:
Was für einen Stripe verwendest du denn ?

Ich habe ein WS2812B Stripe angeschlossen.

agmue:
Passiert schon mal, sollte kein Vorwurf sein :slight_smile:

Das dachte ich mir schon. Man lernt ja aus eigenen Fehler am Besten. :slight_smile:

Na, dann funktioniert das ja zusammen.
Du musst nur mit einen Arduino (z.B. Uno) den per ISP umprogrammieren.

es kommt darauf an was für dich sofort ist.
Über die USB-Schnittstelle wartet die Arduino sehr lange bis es startet, über die normale Stromversorgung startet fast sofort.
Vielleicht reicht es dir?

cateyes:
es kommt darauf an was für dich sofort ist.
Über die USB-Schnittstelle wartet die Arduino sehr lange bis es startet, über die normale Stromversorgung startet fast sofort.
Vielleicht reicht es dir?

Aus welchem Grund sollte das so passieren ?
Beide Spannungsversorgungen haben die selbe Auswirkung.

HotSystems:
Aus welchem Grund sollte das so passieren ?
Beide Spannungsversorgungen haben die selbe Auswirkung.

Das ist nicht ganz richtig!

Je nach Arduino, oder besser Bootloader, kann das so, oder so sein.

Es gibt schon Bootloader, welche ihr Verhalten davon abhängig machen, ob das ein Normaler Reset war, oder ein PowerOnReset. Selbst ein WDT Reset bekommt eine Extrawurst.
Das kommt natürlich auch beim Betrieb an USB zum tragen.
Da haben wir dann einen PowerOnReset und u.U. viele normale Resets.
Unterschiede fallen einem dann auf.

Aber wie schon gesagt, das kann man nicht verallgemeinern, sondern muss dann über einen konkreten Bootloader sprechen.

Und eine Startverzögerung, ist der Bootloader immer!

combie:
Das ist nicht ganz richtig!

Je nach Arduino, oder besser Bootloader, kann das so, oder so sein.

OK, da gebe ich dir Recht, was den Arduino betrifft.

Hier geht es aber um den Ardafruit Trinket, da geht die Spannung (USB oder direkt) gemeinsam über einen Regler in einen gemeinsamen VCC-Pin des ATtiny85.

Da kann ich keinen Unterschied erkennen.

Hier geht es aber um den Ardafruit Trinket,

Ja.
Das ist sowieso eine andere Baustelle.

Vor allen Dingen gehts hier darum, dass der Bootloader keine Zeit brauche/beanspruchen soll/darf.
Darum muss er weg.

bei mir nicht! Wenn ich (am Rechner) über USB anschließe, blinkt erst Pin 13 für einige Sekunden bis der Sketch startet. Über die Spannungsversorgung nicht...

cateyes:
bei mir nicht! Wenn ich (am Rechner) über USB anschließe, blinkt erst Pin 13 für einige Sekunden bis der Sketch startet. Über die Spannungsversorgung nicht...

Das ist aber kein Bootloader Problem.
Sondern Sache deines Betriebssystems.

Es hängt eher damit zusammen, dass dein Windows auf dem COM Port rum reitet, wenn du USB einstöpselst.
Stöpsel das USB Kabel mal in eine PowerBank, oder einen Händi Lader.
Dann ist ende mit wild blinken.


Und noch wichtiger:
Du sprichst über einen üblichen Arduino(kompatiblen).
Hier geht es aber um einen Adafruit Trinket.