Forum: Mikrocontroller und Digitale Elektronik Mit CH340 AtMega programmieren Probleme


von Synapsos (Gast)


Lesenswert?

Hallo,

ich versuche nun schon länger einen Atmega mit aufgespielten Bootloader 
mittels eines CH340 Usb to TTL converter zu programmieren.

Das ursprüngliche Projekt (https://github.com/ClusterM/famicom-dumper) 
nutzt einen FT232 chip. Aber das kein Problem, oder?

Wie auch immer beim programmieren werde ich durch folgende Meldung 
begrüßt:
1
c:\Users\***\Documents\GitHub\famicom-dumper>make program PROGRAMMER_PORT=com6
2
avrdude -V -p m64 -c avr109 -P com6 -U flash:w:famicom-dumper.hex
3
4
Connecting to programmer: .
5
Found programmer: Id = "@ e"; type =
6
    Software Version =  . ; Hardware Version =  .
7
avrdude: error: buffered memory access not supported. Maybe it isn't
8
a butterfly/AVR109 but a AVR910 device?
9
make: *** [program] Error 1

Ich muss dazusagen, ich habe soetwas noch nie gemacht und wahrscheinlich 
mach ich was fundamental falsch. Nur weiss ich nicht was. Vielleicht 
ihr...

von Stefan F. (Gast)


Lesenswert?

Ich glaube nicht, dass es am CH340 Chip liegt, denn die ganzen Arduino 
Clones funktionieren damit schließlich ohne Probleme.

von jjflash (Gast)


Lesenswert?

... und du bist sicher dass du einen AVR109 (kompatiblen) Bootloader in 
einem ATmega64 hast ?

von Synapsos (Gast)


Lesenswert?

Ehrlich gesagt nein; ich bin mir nicht sicher.

Es handelt sich um diesen Bootloader: 
https://github.com/ClusterM/famicom-dumper/tree/master/bootloader

Den habe ich mit USBbasp erfolgreich flashen können.

von Pragmatiker (Gast)


Lesenswert?

Synapsos schrieb:
> Ehrlich gesagt nein; ich bin mir nicht sicher.

Warum holst du dir nicht die Arduino IDE und nimmst dir
dort den geeigneten Bootloader heraus?

von Pragmatiker (Gast)


Lesenswert?

Synapsos schrieb:
> ich versuche nun schon länger einen Atmega ..... zu programmieren.

Welchen Atmega denn genau?

von Stefan F. (Gast)


Angehängte Dateien:

Lesenswert?

Probiere mal bei avrdude den Parameter -c stk500 oder -c avr910.

avr109 ist auf jeden Fall Falsch. Hast du die Boot Fuses richtig 
eingestellt?

von Synapsos (Gast)


Lesenswert?

Danke für die vielen Antworten.

Pragmatiker schrieb:
> Warum holst du dir nicht die Arduino IDE und nimmst dir
> dort den geeigneten Bootloader heraus?

Das hat komischerweise auch wenig erfolgreich geklappt. Nachdem der 
Bootloader drauf war und erneutem flashen kommt erreicht mich folgendes:
1
avrdude: stk500_recv(): programmer is not responding

Pragmatiker schrieb:
> Welchen Atmega denn genau?

Atmega64

Stefanus F. schrieb:
> Hast du die Boot Fuses richtig
> eingestellt?

Ich habe die Fuses wie im Github beschrieben auf LFUSE = E4, HFUSE = DC, 
EFUSE = FF eingestellt.

Stefanus F. schrieb:
> Probiere mal bei avrdude den Parameter -c stk500 oder -c avr910.
1
make program PROGRAMMER_PORT=com6 PROGRAMMER_TYPE=stk500
2
avrdude -V -p m64 -c stk500 -P com6 -U flash:w:famicom-dumper.hex
3
avrdude: stk500_2_ReceiveMessage(): timeout
4
avrdude: stk500_2_ReceiveMessage(): timeout
5
make: *** [program] Interrupt

und
1
make program PROGRAMMER_PORT=com6 PROGRAMMER_TYPE=avr910
2
avrdude -V -p m64 -c avr910 -P com6 -U flash:w:famicom-dumper.hex
3
4
Found programmer: Id = "íU¢»§"; type = S
5
    Software Version = É.■; Hardware Version = ƒ.
6
7
Programmer supports the following devices:
8
    Device code: 0x20 = ATtiny84
9
    Device code: 0x46 = (unknown)
10
    Device code: 0x46 = (unknown)
11
    Device code: 0x46 = (unknown)
12
    Device code: 0x46 = (unknown)
13
make: *** [program] Interrupt
 und so weiter...

von Stefan F. (Gast)


Lesenswert?

Ok, zurück auf Los:

Teste den CH340 Adapter: Verbinde RxD mit Txd und sende dann mit einem 
Terminalprogramm irgendeinen Text. Dieser Text muss als "Echo" zurück 
kommen. Ist das der Fall?

Falls der USB-UART Adapter fest mit dem Mikrocontroller verbunden ist, 
lege dessen Reset-Pin auf Low, um ihn für diesen Test lahm zu legen.

Wenn der USB-UART Adapter funktioniert, geht es weiter.

Schreibe ein Programm, dass eine LED im Sekundentakt blinken Lässt und 
lade dieses per ISP Schnittstelle in den Mikrocontroller (den Bootloader 
per Fuse  deaktivieren). Blinkt die LED? Auch in der richtigen Frequenz?

> Ich habe die Fuses wie im Github beschrieben auf
> LFUSE = E4, HFUSE = DC, EFUSE = FF eingestellt.

Also interner R/C Oszillator 8Mhz. Ist dir bewusst, dass der R/C 
Oszillator für UART Kommunikation zu ungenau ist? Das funktioniert nur 
mit Glück.

Das hier ist typisch, wenn die serielle Bitrate falsch bzw. zu ungenau 
ist:

> Found programmer: Id = "íU¢»§"; type = S
> Software Version = É.■; Hardware Version = ƒ.

von Synapsos (Gast)


Lesenswert?

Das Echo kommt korrekt zurück, der CH340 Adapter sollte also nicht das 
Problem sein.

Ein Blink-Programm hatte ich vorhin auch Mal per ISP aufgespielt. Das 
funktioniert wunderbar und auch in der richtigen Frequenz.

Dass der RC Oszillator zu ungenau für UART ist, wusste ich tatsächlich 
nicht. Ich habe einen 16Mhz Quarz bereits auf der Platine, der noch 
nicht genutzt wird.
Also werde ich den Bootloader auf die 16Mhz umschreiben und die Fusebits 
setzen.

von Synapsos (Gast)


Lesenswert?

Gut das hat schon einmal geklappt.
Mit dem genauerem Takt bekomme ich eine sinnvolle ID:
1
make program PROGRAMMER_PORT=COM6
2
avrdude -V -p m64 -c avr109 -P COM6 -U flash:w:famicom-dumper.hex
3
4
Connecting to programmer: .
5
Found programmer: Id = "AVRBOOT"; type = S
6
    Software Version = 0.8; No Hardware Version given.

Und das flashen klappt auch:
1
avrdude: writing flash (6630 bytes):
2
3
Writing | ################################################## | 100% 3.86s

Perfekt.
Es hat also wirklich daran gelegen, dass der interne RC Oszillator zu 
ungenau ist. Wieder was dazugelernt.

Großes Dankeschön für die Hilfe!

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.