atmega328p mit FTDI und ArduinoIDE programmieren

OP #4292985
Lesenswert?

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
#4293113
Lesenswert?

Dieter S. schrieb:
> Der Pullup für Reset (wie angemerkt) ist wichtig aber Reset kann auch
> manuell ausgeführt werden.

Stimmt schon.. wenn aber sowieso USB-To-Serial mit Reset vorhanden ist 
dann ist automatisch komfortabler.. dazu benutzt er ja noch einen custom 
bootloader.. je nach dem welchen er erwischt hat kann die "Warte auf 
Reset" Zeit so kurz sein das man diese genau treffen muss. 
(Mikrocontroller im richtigen Status.. ca 2 Sekunden nach Start 1 
Sekunde während die IDE genau fertig kompiliert hat..)

Ist mir schonmal passiert.
Gast #4293124
Lesenswert?

Philipp K. schrieb:
> Dieter S. schrieb:
>> Der Pullup für Reset (wie angemerkt) ist wichtig aber Reset kann auch
>> manuell ausgeführt werden.
>
> Stimmt schon.. wenn aber sowieso USB-To-Serial mit Reset vorhanden ist
> dann ist automatisch komfortabler.. dazu benutzt er ja noch einen custom
> bootloader.. je nach dem welchen er erwischt hat kann die "Warte auf
> Reset" Zeit so kurz sein das man diese genau treffen muss.
> (Mikrocontroller im richtigen Status.. ca 2 Sekunden nach Start 1
> Sekunde während die IDE genau fertig kompiliert hat..)
>
> Ist mir schonmal passiert.

Nur von der Resetleitung hat er nichts geschrieben, daher der 
vorsichtige Hinweis. :-)
Da das sehr zeitkritisch ist, kann das ja das Problem sein. Also dann 
unbedingt Resetleitung mit Kerko verdrahten.
#4294761
Lesenswert?

Hallo Rush,

das gleiche Problem hatte ich auch schon mal.
Lösung war, den FTDI-Treiber neu Installieren.

Das Problem ist das der DTR-Pin, nach dem 1. Flashen, nicht mehr auf LOW 
geht! Also wird der Bootloader gar nicht erst durch einen Reset 
aktiviert.
Nach der Neuinstallation des Treibers funktioniert seitdem alles 
bestens.

Gruß
Toni

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren