Hallo,
ich versuche gerade den AVR-Bootloader von Hagen Re
(http://www.mikrocontroller.net/articles/AVR-Bootloader_mit_Verschl%C3%BCsselung_von_Hagen_Re)
auf einem ATmega328 ans laufen zu kriegen. Ich bin der Anleitung gefolgt
und habe Einstellungen hoffentlich richtig gesetzt. Das Problem ist,
dass der Bootloader auf einem ATmega8 auf dem STK500 funktioniert aber
mit einem ATmega328 auf einem eigenen Board nur teilweise angesprochen
werden kann. Mit aktivierten Debugausgaben liefert das beiligende Tool
zum flashen folgende Daten:
1 | 08.03.14-23:30:02-543 > send ident $00 00 00 00 00 00 00 00 00 0D 42 4F 4F 54
|
2 | 08.03.14-23:30:02-788 > received data $95 14 06 04 30
|
3 | 08.03.14-23:30:02-788 > send ident $00 00 00 00 00 00 00 00 00 0D 42 4F 4F 54
|
4 | 08.03.14-23:30:03-034 > received data $95 14 06 04 30
|
5 | usw...
|
Es werden also Daten vom ATmega328 empfangen aber irgendwie geht es
danach nicht weiter. Ein erfolgreicher Verbindungsversuch mit einem
ATmega8 sieht wie folgt aus:
1 | 08.03.14-23:32:23-301 > send ident $00 00 00 00 00 00 00 00 00 0D 42 4F 4F 54
|
2 | 08.03.14-23:32:23-686 > send ident $00 00 00 00 00 00 00 00 00 0D 42 4F 4F 54
|
3 | 08.03.14-23:32:24-076 > send ident $00 00 00 00 00 00 00 00 00 0D 42 4F 4F 54
|
4 | 08.03.14-23:32:24-473 > received data $93 07 06 08 30
|
5 | 08.03.14-23:32:24-477 > Timer created
|
6 | 08.03.14-23:32:24-479 > Device connected
|
7 | 08.03.14-23:32:24-741 > send keepalive
|
8 | 08.03.14-23:32:25-006 > send keepalive
|
Die BOOTSZ und BOOTRST Fuses sind entsprechend der Anleitung gesetzt.
Der ATmega328 wurde mit internem Osziallator und externem Quatz
getaktet. Außerdem habe ich diverse Baudraten im Bereich 4600-56000
getestet. Bei manchen erhalte ich zwar nicht einmal eine Anwort vom
ATmega328 aber falls ich eine Anwort erhalte sieht diese immer gleich
aus und danach folgt die Endlosschleife Request->Antwort->Request.
Als Test habe ich gerade am Anfang des Bootloaders ein paar Befehle
eingebaut, die eine LED aufblitzen lassen. Dann sehe ich etwa alle 0,5
Sekunden ein aufblitzen, dass wohl durch "BootDelay" verursacht wird.
Nachdem ich das Delay auf 5 Sekunden erhöht habe blitzte die LED auch
nur noch alle 5 Sekunden auf. Wenn ich jetzt allerdings versuche eine
Verbindung mit dem ATmega328 aufzubauen fängt die LED wieder deutlich
schneller an zu blinken und blitzt etwa passend zu jedem gesendeten
Request auf. Es scheint also so, als ob aus irgendeinem Grund der Reset
ausgelöst wird. Ich kann mir allerdings nicht erklären warum. Hat hier
jemand eine Idee warum oder was man noch probieren könnte?