Bootloader bei Attiny

Kurz zur Erklärung, der Bootloader hat eigentlich mit der ganzen Sache nix zu tun. Das ist leider etwas verwirrend. Die Arduino IDE kann beim "normalen" Programmieren keine Fuses setzen. Auch nicht, wenn man einen Programmer (in diesem Fall den Arduino Mega) verwendet. Die Fuses legen aber u.a. fest mit welche Taktrate der Tiny betrieben wird und ob er den internen Oszillator oder einen externen Taktgeber verwenden soll.
Beim Vorgang "Bootloader installieren" werden die gemäß ausgewählten Eintrag aus der boards.txt festgelegten Fuses aber gesetzt, da das Tool "avrdude" dann mit den entsprechenden Parametern von der IDE aufgerufen wird. Der Bootloader selbst wird dabei nicht installiert, zumindest nicht auf den ATTinys. Zumal die meisten davon gar keine serielle Schnittstelle in Hardware haben und daher ein Bootloader nicht viel bringen würde. Wenn der RAM überhaupt ausreicht.

Zu dem Effekt mit den Zeiten. In der boards.txt sind diverse Basisdaten gespeichert. Unter anderem auch der entsprechende Grundtakt mit dem der ATTiny dann mit den Einstellungen (Fuses) betrieben werden soll. Aus diesem Wert, der nur eine reine Festlegung ist und erstmal nichts mit dem tatsächlich verwendeten Takt zu tun hat, werden dann alle möglichen Timings abgeleitet. Z.B. wieviele Takte ein delay(xxx) dauert.

Die meisten ATTinys sind im "Rohzustand" auf 1 MHz Taktfrequenz mit dem internen Oszillator eingestellt. Demzufolge wird eine im Sketch festgelegte Taktfrqeunz von 16 MHz (oder bei Dir 20 MHz) dazu führen, das alle Timings so berechnet werden, als ob der Tiny mit 20 MHz laufen würde. Läuft er aber nur mit 1 MHz, dann stimmt diese Zuordnung nicht und ein delay(1000) dauert 20 Mal so lange, also 20 Sekunden.
Die Angabe bei den ATTinys von 20Mhz, 16MHz oder 10 MHz bezieht sich auf die maximale Taktfrequenz mit der man den Chip betreiben kann, ohne das es Probleme gibt. Mit dem internen Oszillator sind aber maximal (wie oben schon geschrieben) 8MHz möglich und die sind auch noch ziemlich ungenau.

Ich hoffe das bringt ein wenig Licht ins Dunkle :slight_smile:

Mario.