Forum: Mikrocontroller und Digitale Elektronik ATmega328 stand alone Gedanksekunde nach Reset eliminieren


von Ardur (Gast)


Lesenswert?

Ich habe einen ATmega328 stand alone mit einem Mini-Sketch auf einer 
Lochrasterplatine am Laufen.

Ich hatte zuvor den Standard-Bootloader und den Sketch mit der aktuellen 
IDE über einen zweiten Arduino Uno mit "ArduinISP" hochgeladen.

Nun vergehen nach einem Hardware-Reset ein paar Sekunden, in denen auf 
PIN 13 einiges passiert (vermutlich die Suche nach einem neuen Sketch 
durch den Bootloader).

Wenn ich ohne Bootloader die Sketches direkt schreiben würde, würde dann 
diese "Gedenksekunde" verschwinden?

Und muss ich dann irgendetwas anderes beachten (z.B. Fuses)?

von Flip B. (frickelfreak)


Lesenswert?

es gibt auch Bootlader ohne wartezeit. Ja, ohne BL wird die auch weg 
sein. Ja, die Fuse für den bl muss umgeschrieben werden.

von Stefan F. (Gast)


Lesenswert?

Ardur schrieb:
> Wenn ich ohne Bootloader die Sketches direkt schreiben würde, würde dann
> diese "Gedenksekunde" verschwinden?

Ja. Dazu brauchst du einen ISP Programmieradapter. Damit wird die IDE 
auch gleich die Fuses richtig einstellen (glaube ich jedenfalls). 
Ansonsten ist offensichtlich, welche Fuse zu ändern ist (BOOTRST).

von Ardur (Gast)


Lesenswert?

Ich habe von den Fuses ehrlich gesagt überhaupt keine Ahnung. Wie 
schaffe ich mir das schnell drauf?

Und wo bekomme ich andere Bootloader?

von Stefan F. (Gast)


Lesenswert?

Ardur schrieb:
> Ich habe von den Fuses ehrlich gesagt überhaupt keine Ahnung. Wie
> schaffe ich mir das schnell drauf?

Vergiss das mit dem "schnell" besser, denn es gibt da einige 
Fallstricke. Lies dir besser die Erklärungen im Datenblatt durch. Und 
zusätzlich dies: http://stefanfrings.de/avr_verfused/index.html , denn 
es ist nur eine Frage der Zeit, wann dieses Thema akut wird.

Für avrdude (das in Arduino enthalten ist) gibt es eine nette GUI namens 
Arv8-Burn-O-Mat. Und schau Dir diese Webseite an: 
https://www.engbedded.com/fusecalc/

Das alles kann aber nicht die Lektüre des Datenblattes ersetzen.

> Und wo bekomme ich andere Bootloader?

Du willst wohl Bootloader verwenden, die zu Arduino kompatibel sind. 
Diese befinden sich direkt in der IDE. Wobei (ich hoffe das ist noch 
aktuell) der neue Bootloader vom Arduino Uno kleiner und schneller ist, 
als der ältere Bootloader vom Arduino Nano. Sie sind aber beide 
untereinander austauschbar, da die Boards zueinander kompatibel sind.

von Philipp K. (philipp_k59)


Lesenswert?

Man kann den Arduino optiboot Bootoader umkompilieren..

Zum Beispiel mit Pin aktivierbar. Da gab es  auch mal in den Sources ein 
Beispiel.
Kommt drauf an wie Zeitkritisch das ist. Dann wartet der wenigstens 
nicht mehr auf Uart Befehle.

von Ardur (Gast)


Lesenswert?

Mein ISP Programmieradapter ist ein Arduino UNO mit "ArduinoISP".

Dann kann man in der IDE aber nur "Bootloader brennen" als einzigen 
Menüpunkt auswählen, eine Auswahl für verschiedene Bootloader gibt es 
nicht. Und von wo der dann gebrannte Bootloader im Verzeichnisbaum 
genommen wird, ist mir auch nicht klar.

@Stefan ⛄ F. (stefanus)
Danke für die wertvollen Links. Ja, schnell geht das nicht, aber jetzt 
habe ich immerhin schon eine Vorstellung.

Ich habe ein 16 MHz-Quartz mit seinen beiden Cs an XTAL1 und 2 fest 
angelötet. Insofern würde ich nicht durch 8 teilen wollen/müssen?

Aber die Fuses kann ich eh in der Arduino IDE nicht einstellen. Wo 
müsste ich das machen?

von Stefan F. (Gast)


Lesenswert?

Ardur schrieb:
> Dann kann man in der IDE aber nur "Bootloader brennen" als einzigen
> Menüpunkt auswählen, eine Auswahl für verschiedene Bootloader gibt es
> nicht.

Die ergibt auch aus dem ausgewählten Board. Falls dein Ziel-Board ein 
Arduino Nano oder Uno ist, kannst du wahlweise Arduino Nano oder Uno 
einstellen. Das sind wie gesagt zwei unterschiedliche aber kompatible 
Bootloader.

Alternative (nicht originale) Bootloader findest du natürlich nicht in 
der IDE sondern via Google. Dann musst du halt den Anleitungen des 
jeweiligen Autors folgen. Ich würde mir das aber nur antun, wenn ich 
einen guten Grund dazu habe. Unter Arduino reicht mir die Wahl mit oder 
ohne Bootloader zu arbeiten.

von Ardur (Gast)


Lesenswert?

OK, wenn ich es nun ohne Bootloader versuchen möchte, wähle ich dann 
einfach nur meinen Sketch aus und alles läuft wie vorher, alle Fuses 
sind richtig gesetzt, nichts wird versaut?

von Philipp K. (philipp_k59)


Lesenswert?

Ardur schrieb:
> Mein ISP Programmieradapter ist ein Arduino UNO mit "ArduinoISP"
Dann benötigst Du garkeinen Bootloader, den Bootloader brauch man beim 
Arduino nur zum hochladen ohne einen ISP Adapter.

Dann müsste man den nur löschen und die Boards.txt anpassen.. z.B. 
ungeprüft so:
https://forum.arduino.cc/index.php?topic=657971.0

von Stefan F. (Gast)


Lesenswert?

Ardur schrieb:
> OK, wenn ich es nun ohne Bootloader versuchen möchte, wähle ich dann
> einfach nur meinen Sketch aus und alles läuft wie vorher, alle Fuses
> sind richtig gesetzt, nichts wird versaut?

Ja, so kenne ich das jedenfalls.

von Stefan F. (Gast)


Lesenswert?

Philipp K. schrieb:
> und die Boards.txt anpassen

Das ist nicht einmal nötig. Man kann auch ohne diese Änderung einfach 
per ISP Programmieradapter hochladen.

von Ardur (Gast)


Lesenswert?

OK, funktioniert!

Vielen Dank für die Hilfe an Stefan ⛄ F. (stefanus), Philipp K. 
(philipp_k59) und Flip B. (frickelfreak)!

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.