Forum: Mikrocontroller und Digitale Elektronik atmega328p mit FTDI und ArduinoIDE programmieren


von Rush .. (rush)


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

von Philipp K. (philipp_k59)


Lesenswert?

Reset mit 100nF Cap in Reihe und 10K PullUp nach VCC?

Auch von Heute: Beitrag "pull-up am Reset button (AtMega32u4)"

Bzw. Du musst vom FT232 das DTR auf den Reset Pin legen.

: Bearbeitet durch User
von Dieter S. (Gast)


Lesenswert?

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

von Philipp K. (philipp_k59)


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.

von Ulrich F. (Gast)


Lesenswert?

Scheint der Lilypad Bootloader zu sein, der ist recht geduldig.
Optiboot ist da "enger"

von Dieter S. (Gast)


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.

von Rush .. (rush)


Lesenswert?

Ich habe den Reset-Pin lediglich mit 10k an VCC gehängt. DTR ist 
garnicht angeschlossen da hier z.B. garnicht erwähnt:

https://www.arduino.cc/en/Main/Standalone

Sollte es so sein?:

                   VCC
                    |
                   10k
                    |
DTR -----------||---------------Reset

von Joachim B. (jar)


Lesenswert?

Rush .. schrieb:
> Sollte es so sein?:

schau mal:

https://www.flickr.com/photos/maniacbug/6413368937/

gilt auch für andere mit FTDI

von Dieter S. (Gast)


Lesenswert?

Rush .. schrieb:
> Ich habe den Reset-Pin lediglich mit 10k an VCC gehängt. DTR ist
> garnicht angeschlossen da hier z.B. garnicht erwähnt:
>
> https://www.arduino.cc/en/Main/Standalone
>
> Sollte es so sein?:
>
>                    VCC
>                     |
>                    10k
>                     |
> DTR -----------||---------------Reset


Sind eben nicht alle perfekt. ;-)
Aber so ist es richtig verschaltet.

von Richard (Gast)


Lesenswert?

Da fehlt noch eine Diode und ein Pulldown Widerstand sonst kann der 232 
kein Reset auslösen...

von Dieter S. (Gast)


Lesenswert?

Richard schrieb:
> Da fehlt noch eine Diode und ein Pulldown Widerstand sonst kann
> der 232
> kein Reset auslösen...

Wo soll die fehlen?
Die habe ich bisher an keine Arduino-Reset-Schaltung gesehen.

von Philipp K. (philipp_k59)


Lesenswert?

Da fehlt nix

von Toni R. (torei55)


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

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.