Atmega*U2 Chips in den Bootloader-Modus setzen

Wenn man eine Software für einen Atmega*U2 programmiert empfiehlt es sich, dort einen passenden Programmteil zu schreiben, der in den Bootloader-Sektor springt. Dieser Teil kann zB über einen Taster oder eine bestimmte Byte-Folge des USART aufgerufen werden. Abhängig von der Größe der Bootloader-Sektion muss man an die Boot-Reset-Adresse springen, diese ist in Tabelle 23-8 des Datenblattes erklärt:

BOOTSZ1 BOOTSZ2 Bootgröße Boot-Reset-Adresse
1 1 256 words 0xF00
1 0 512 words 0xE00
0 1 1024 words 0xC00
0 0 2048 words 0x800

Die Boot-Reset-Fuse kann so programmiert werden, dass der Controller nach jedem Reset in den Bootloader-Bereich springt. Diese Fuse kann nicht über ein aufgeflashtes Programm geändert werden sondern muss über die ISP-Schnittstelle programmiert werden.

BOOTRST Resetadresse
1 0x0000
0 Boot-Loader-Reset
„1“ bedeutet unprogrammiert, „0“ bedeutet programmiert

Sollte man bereits ein Programm auf den Controller gespielt haben welches keine Möglichkeit bietet, den Boot-Reset-Vector anzuspringen kann man sich über den HWB-Pin helfen. Standardmäßig ist die Fuse HWBE programmiert, dies bedeutet, dass der Bootloader mit Hilfe von PD7/HWB aktiviert werden kann. Das gelingt durch folgende Schritte:

  • PD7/HWB mit GND verbinden
  • einen Reset auslösen (RESET kurz mit GND verbinden)