Wenn es nur einmal läuft, dann liegt es warscheinlich an der Fuse
"Boot Reset Vector Enabled"
Der Bootbereich ist ja ganz hinten im Flash.
Ist der Chip leer, startet das "Programm" an Adresse 0 und irgendwann mal wird die Stelle erreicht, wo sich der Bootloder befindet, und er startet.
Ist ein Programm draufgeladen, kommt der Programmzähler logischerweise nicht mehr dahin, da ja im Programm normalerweise nicht in's Nirvana gesprungen wird, sondern immer zurück.
(Es sei denn, man hat Müll programmiert )
Ist die erwähnte Fuse gesetzt, startet der Controller an der Startadresse des Bootloaders und nicht bei 0.

Den Rücksprung auf Adresse 0 macht der Bootloader dann von sich aus, wenn das Programm fertig geflasht wurde oder der Timeout kommt.

Gruß
Christopher