Atmega*U2 Chips in den Bootloader-Modus setzen
Sprung aus der Software
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 |
Boot-Reset-Fuse
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 |
Externe Hardware-Bedingung
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)