Forum: Mikrocontroller und Digitale Elektronik Firmwareupload auf ATMEGA8 mit usbasp-Bootloader nur einmal möglich!?


von Julian S. (Firma: Student) (jschw)


Lesenswert?

Hallo!

Ich habe mir ein Metaboard (https://metalab.at/wiki/Metaboard) 
nachgebaut, mit dem Ziel, die Arduino-IDE zum Programmieren zu 
verwenden.
Habe gerade allerdings noch etwas Startschwierigkeiten, ich beschreibe 
einfach mal mein Vorgehen:

- mithilfe eines Arduinos habe ich den Bootloader 
http://www.obdev.at/products/vusb/usbasploader.html auf den ATMEGA8 
gebrannt.

in meiner "boards.txt" habe ich folgendes ergänzt:
1
##############################################################
2
metaboard.name=Metaboard w/ ATMega8
3
metaboard.upload.protocol=avrisp
4
metaboard.upload.maximum_size=7168
5
metaboard.upload.speed=19200
6
 
7
metaboard.build.mcu=atmega8
8
metaboard.build.f_cpu=16000000L
9
metaboard.build.core=arduino
10
 
11
metaboard.bootloader.low_fuses=0xef
12
metaboard.bootloader.high_fuses=0xc9
13
metaboard.bootloader.path=metaboard
14
metaboard.bootloader.file=mega8_16mhz.hex
15
metaboard.bootloader.unlock_bits=0x3F
16
metaboard.bootloader.lock_bits=0x0F
17
 
18
metaboard.upload.disable_flushing=true

- danach habe ich das Metaboard per USB mit dem PC verbunden, den 
Reset-Taster gedrückt - dann wurde ein neues Gerät "USBasp" erkannt, und 
ich konnte den Treiber installieren.

- dann wurde ein Programm mittels der ArduinoIDE hochgeladen 
(metaboard.upload.protocol=avrisp zwischenzeitlich geändert auf 
metaboard.upload.protocol=usbasp). Die Sketch wird fehlerfrei 
hochgeladen und es funktioniert alles wie es soll. Sobald der Atmega 
Saft hat, läuft das aufgspielte Programm.

- dann wollte ich eine neue Sketch hochladen - arduino kann aber das 
Gerät "USBasp" nicht mehr finden. Das Gerät taucht auch im Gerätemanager 
nur als "unknown device" auf. Auch ein Druck auf den Resettaster hilft 
nicht.

- nach dem erneuten Brennen des Bootloaders kann wieder genau ein 
Programm hochgeladen werden, bis das Board nicht mehr erkannt wird.

Hat jemand von euch eine Idee, was hier schief läuft?
Könnt ihr bitte mal meine Fuses und das Lock-Bit anschauen, ob ich hier 
evtl. aus Versehen oder Unwissenheit einen  Fehler gemacht habe?

Viele Grüße, Julian

von Karl H. (kbuchegg)


Lesenswert?

Julian Schweigert schrieb:

> Hat jemand von euch eine Idee, was hier schief läuft?

Wie zwingst du den Bootloader nach dem Anlegen der Spannung erneut in 
den Bootloader Modus?

von Julian S. (Firma: Student) (jschw)


Lesenswert?

Indem ich den Jumper setze, welcher Pin 13 PD7(AIN1) mit Masse 
verbindet.
Ist es nicht so, dass, wenn ich bei aufgestecktem Jumper den 
Reset-Taster drücke, im Bootloadermodus bin?
Wenn ich das so mache (bei angelegter Spannung), passiert gar nichts, 
das auf dem Atmega befindliche Programm läuft weiterhin ab...

von Karl H. (kbuchegg)


Lesenswert?

Julian Schweigert schrieb:
> Indem ich den Jumper setze, welcher Pin 13 PD7(AIN1) mit Masse
> verbindet.
> Ist es nicht so, dass, wenn ich bei aufgestecktem Jumper den
> Reset-Taster drücke, im Bootloadermodus bin?

So hab ich die von dir verlinkte Web-Site verstanden.
Dort steht aber auch, dass man das konfigurieren kann, worauf der 
Bootloader reagiert.

von holger (Gast)


Lesenswert?

metaboard.bootloader.high_fuses=0xc9


Ich würds mal mit 0xC8 versuchen.

von Karl H. (kbuchegg)


Lesenswert?

Auch nicht uninteressant: Eigentlich sollte der Bootloader das 
verhindern, aber wer weiß. Ich würde auf jeden Fall mal die Lockbits für 
die Bootloader-Section setzen, damit sich der nicht selbst überschreiben 
kann.

von Julian S. (Firma: Student) (jschw)


Lesenswert?

@holger:
Danke, werde ich morgen gleich mal probieren - aktiviere ich BOOTRST, 
indem ich das Bit auf 0 setze?

@Karl Heinz Buchegger:
Mist, habe alledeaktiviert, die sind ja anscheinend ebenfalls bei Wert 0 
aktiviert, hatte bisher mit 0xFF alle auf 1...
Kannst Du mir irgendeine Internetseite empfehlen, wo ich mich ein 
bisschen über die Lockbits schlau lesen kann?
Zu den Fuses findet man ja reichlich, aber zu den Lockbits konnte ich 
noch nichts Gutes finden...
Was hat es eigentlich mit dem von der ArduinoIDE als "unlock bit" auf 
sich?
Wenn ich dieses verändert habe, bekam ich einen Error beim Brennen des 
Bootloaders.

von holger (Gast)


Lesenswert?

>@holger:
>Danke, werde ich morgen gleich mal probieren - aktiviere ich BOOTRST,
>indem ich das Bit auf 0 setze?

Ja, der springt sonst nicht in den Bootloader.

von Julian S. (Firma: Student) (jschw)


Lesenswert?

Also vielen Dank an euch für die Hilfe!
Funktioniert jetzt alles wie es soll.

Es lag am nicht aktivierten BOOTRST - jetzt springt er nach dem Druck 
auf den Reset-Taster in den Bootloadermode, und man kann ein neues 
Programm hochladen.

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.