Forum: Mikrocontroller und Digitale Elektronik AVR Bootloader lässt sich nicht ansprechen


von sebi707 (Gast)


Lesenswert?

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?

von Klaus W. (mfgkw)


Lesenswert?

Ich habe nie mit deinem Bootloader gearbeitet, aber aus der
Entfernung sieht das irgendwie nach einem Dauerreset aus.

Da lohnt sich viellleicht ein Blick auf Spannungsversorgung
und Resetleitung?
Zumal es um ein selbstgebasteltes Board geht...

von sebi707 (Gast)


Lesenswert?

An dem Reset Pin habe ich einen 10k Pullup Widerstand. Stromversorgung 
über einen 7805 Spannungsregler in der Standardbeschaltung aus dem AVR 
Tutorial hier. Abblockkondensatoren sind an allen VCC/GND Pärchen 
vorhanden. Ein Programm von mir läuft seit 15min ohne Reset lustig vor 
sich hin. Also ich bin mir relativ sicher, dass die Hardware in Ordnung 
ist. Allerdings bin ich mir fast genauso sicher, dass alle Einstellungen 
beim Bootloader richtig sind daher weiß ich nicht wo ich weiter nach 
Fehlern suchen soll.

von sebi707 (Gast)


Lesenswert?

So nachdem ich einen funktionierenden Bootloader von jemandem geschickt 
gekrieg habe, konnte ich diesen disassemblieren und mit dem von mir 
compilierten vergleichen. Nach Stunden langer Fehlersuche habe ich 
endlich den Fehler gefunden: Der ATmega328 ist nicht in der Device Liste 
(AVRootloader.dev), die beim Windows Tool dabei ist, eingetragen. Wohl 
aber der ATmega328P. Wenn sich der ATmega328 dann unter unbekannter 
Signatur meldet werden wohl einfach weiter Requests gesendet. Die Lösung 
besteht dann einfach darin den ATmega328 in die Liste einzutragen...

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.