Moin.
Kurz zu meinem Vorhaben: Hab ein Board mit einem atmega328P (interner
Oszillator 8Mhz) aufgebaut und möchte diesen über einen
USBzuSeriell-Adapter und die ArduinoIDE flashen können. So, simple Sache
eigentlich. Soweit funktioniert die Sache auch, allerdings nur ein
einziges mal.... danach nie wieder.
Folgendes habe ich gemacht:
1. den Bootloader ATmegaBOOT_168_atmega328_pro_8MHz.hex aus dem
bootloader-Verzeichnis mit meinen AVR dragon und dem AtmelStudio via ISP
geflasht
2. Fuses mit dem AtmelStudio gesetzt:
low_fuses=0xE2
high_fuses=0xDA
extended_fuses=0x05
Die Werte habe ich der Datei boards.txt entnommen welche in dem Tutorial
unter https://www.arduino.cc/en/Tutorial/ArduinoToBreadboard erwähnt
wird.
3. folgenden Abschnitt aus der eben genannten board.txt in die board.txt
der Arduino-Installation eingefügt:
1 | ##############################################################
|
2 |
|
3 | atmega328bb.name=ATmega328 on a breadboard (8 MHz internal clock)
|
4 |
|
5 | atmega328bb.upload.protocol=arduino
|
6 | atmega328bb.upload.maximum_size=30720
|
7 | atmega328bb.upload.speed=57600
|
8 |
|
9 | atmega328bb.bootloader.low_fuses=0xE2
|
10 | atmega328bb.bootloader.high_fuses=0xDA
|
11 | atmega328bb.bootloader.extended_fuses=0x05
|
12 |
|
13 | atmega328bb.bootloader.file=atmega/ATmegaBOOT_168_atmega328_pro_8MHz.hex
|
14 | atmega328bb.bootloader.unlock_bits=0x3F
|
15 | atmega328bb.bootloader.lock_bits=0x0F
|
16 |
|
17 | atmega328bb.build.mcu=atmega328p
|
18 | atmega328bb.build.f_cpu=8000000L
|
19 | atmega328bb.build.core=arduino:arduino
|
20 | atmega328bb.build.variant=arduino:standard
|
21 |
|
22 |
|
23 | atmega328bb.bootloader.tool=arduino:avrdude
|
24 | atmega328bb.upload.tool=arduino:avrdude
|
4. In der ArduinoIDE als Board "ATmega328 on a breadboard (8 MHz
internal clock)" ausgewählt und den entsprechenden Port des
Seriell-Adapters ausgewählt.
5. Scatch über den Adapter geflasht.
So, bis hier hin haut alles einwandfrei hin.
Allerdings kann ich keine weiteren Flashvorgänge durchführen. Wenn ich
es versuche, blinkt mein Adapter (da mein Scatch daten via UART
raussendet). Der Port wird also schon geöffnet, allerdings schlägt das
Flashen fehl. Ich muss jedes mal den Bootloarder über das AtmelStudio
neuflashen..... Das ist ja nicht der Sinn eines bootloaders ;-)
Was mir auch aufgefallen ist: Wenn ich mir nach dem ersten erfolgreichen
Programmieren des Scateches die Fuses mit dem Atmelstudio ansehe, ist
die Extended Fuse auf 0xFD geändert worden. Ein erneutes setzen der
richtigen Fuses löst mein Problem nicht.
Achso, verwendet habe ich einen eigens aufgebauten Serielladapter auf
Basis des FT232RL. Verbunden habe ich VCC und GND, sowie RX->TX und
TX->RX.
Kann mir jemand weiterhelfen? Warum kann ich keine weiteren Scatche
programmieren?
Vielen Dank Euch schonmal