Forum: Mikrocontroller und Digitale Elektronik ATMega328P lässt sich nicht über FTDI FT232RL programmieren


von Felix N. (felix_n888)


Lesenswert?

Guten Tag,

Ich habe mir mal ein FTDI Breakout angeschafft um meine Prozessoren 
schneller zu programmieren anstatt immer denn Arduino UNO anzuschließen.

Allerdings macht dieser Probleme beim Hochladen eines Programms über 
Atmel Studio mit Avrdude oder über die Arduino IDE.

Ich weiß das es von diesen Chip auch Fälschungen gibt, kann aber nicht 
genug sagen woher dieser Modul stammt da ich diesen mal Geschenkt 
bekommen habe.

Mein µC habe ich so verkabelt mit dem FTDI:

GND  -> GND
CTS  -> Nicht Angeschlossen(Gelesen soll auf GND?)
Vcc  -> Nicht Angeschlossen, Breadboard wird mit LM7805 versorgt
TXen -> Rx am µC
RXen -> Tx am µC
DTR  -> mit 100nF auf Reset

Sonst ist mein µC ein ATMega328P mit 16 MHz Externen Quarz an 5V. Es 
befinden sich 100 nF Abblockkondensatoren an Vcc/GND und Avcc/GND, ARef 
ist mit 100nF auf AGnd angeschlossen. Ein 10K Pullup Widerstand befindet 
sich am RESET Pin des Prozessores.

Ich habe eine einfache Serielle Ausgabe auf dem µC laufen die alle 5 
Sekunden "5000 Sekunden" an den USART gibt.


Wenn ich denn FTDI angeschlossen habe wie oben geschrieben und dann 
HTerm öffne oder denn Arduino Serial Monitor und auf COM7(Ist der FTDI) 
9600 Baud dann bekomme ich auch meine Seriellen Nachrichten alle 5 
Sekunden.

Ich habe mir denn Aktuellsten Treiber von FTDI runter geladen. Unter dem 
Geräte Manager wird er mir als "USB Serial Port(COM7)" angezeigt. 
Hersteller ist FTDI unter "Allgemein".

Wenn ich aber mein Programm nun ändere und es Hochladen will dann kommt 
nach kurzer Zeit:
"avrdude: stk500_getsync() attempt 1 of 10: not in sync: resp=0x00"

Und dann das dann 10 mal bis attempt 10 of 10 da steht

Ich kenne diesen Fehler nur wenn man beim Arduino UNO die RX und TX 
Leitungen vertauscht hat bzw. denn RESET Pin nicht mit dem UNO verbunden 
hat.

Wenn man sich dabei denn Chip anschaut blinkt erst die Tx Lampe 3 mal 
dann 1 mal die Rx Lampe und dann noch mal die Tx Lampe.

Unter Arduino sind es diese Upload Einstellungen:
Board: Arduino UNO
Port : COM7
Programmer: AVRISP mkII

Woran liegt das, das ich nicht hochladen kann aber serielle Daten 
empfangen kann?

Mfg Felix

von André Schenk (Gast)


Lesenswert?

Hallo Felix,

bist Du denn sicher, daß auf Deinem AVR ein Arduino-Bootloader 
installiert ist?

Hat Dein AVR auch die an DTR angeschlossene Reset-Logik (sieh 
https://www.arduino.cc/en/uploads/Main/Arduino_Uno_Rev3-schematic.pdf)? 
Ansonsten müßtest Du in dem Moment, in dem Du den Upload startest, den 
AVR von Hand resetten.

Tschüß André

von Jan L. (ranzcopter)


Lesenswert?

Felix N. schrieb:
> Woran liegt das, das ich nicht hochladen kann aber serielle Daten
> empfangen kann?

vor'm Hochladen Hterm und/oder "Serieller Monitor" beendet?

von Jim M. (turboj)


Lesenswert?

AVRDUDE kennt ein paar FT232H-basierte Programmer, die sprechen dann 
aber über ISP und nicht seriell UART. Achtung: Die FT2232 Varianten 
laufen nur mit den teureren FT2232 und FT4232 Chips.

Was Du bei den Upload Einstellungen machen muss, erfährst Du aus der 
Doku zu Deinem Bootloader, den Du vorher manuell (z.B. mit dem UNO) via 
ISP in den Chip einprogrammieren musst.

Viele Bootloader verwenden das STK500v2 Protokoll, aber YMMV.

von Felix N. (felix_n888)


Lesenswert?

André Schenk schrieb:
> bist Du denn sicher, daß auf Deinem AVR ein Arduino-Bootloader
> installiert ist?

Hallo, ja auf diesen Chip findet sich der Arduino Bootloader denn man 
über die IDE brennen kann.

André Schenk schrieb:
> Hat Dein AVR auch die an DTR angeschlossene Reset-Logik (sieh
> https://www.arduino.cc/en/uploads/Main/Arduino_Uno_Rev3-schematic.pdf)?
> Ansonsten müßtest Du in dem Moment, in dem Du den Upload startest, den
> AVR von Hand resetten.

Ähh ne, Habe jetzt eine 1N4007 Diode parallel zum 10K Pullup Widerstand 
hinzugefügt. Und ein 1K PullDown Widerstand nach dem 100nF Kerko 
zwischen DTR und Kondensator

Jan L. schrieb:
> vor'm Hochladen Hterm und/oder "Serieller Monitor" beendet?

Ja habe ich sonst kommt dort "Auf COM Port COM7//: kann nicht Zugriffen 
werden: Zugriff Verweigert!" oder so.

Jim M. schrieb:
> die sprechen dann
> aber über ISP und nicht seriell UART.

Hmm sollte schon am besten bei Serielle UART bleiben.

Jim M. schrieb:
> Achtung: Die FT2232 Varianten
> laufen nur mit den teureren FT2232 und FT4232 Chips.

Du meinst die Varianten die Avrdude sprechen kann?

Mfg

von uwe (Gast)


Lesenswert?

TXen und RXen
Sind da um die Leitungstreiber bei RS485 zu aktivieren(Die heißen aber 
eigentlich auch TXDEN und RXDEN)!

Du mußt TXD und RXD benutzen ohne EN!

Aber dann solltest du deinen gesendeten String nicht empfangen können!?

Also wo hast du nun was angeschlossen(Schaltplan) und welcher Bootloader 
und welche version und welches Programm und welche version und welchen 
Treiber für FTDI und welche Version benutzt du nun?

von Felix N. (felix_n888)


Angehängte Dateien:

Lesenswert?

uwe schrieb:
> TXen und RXen
> Sind da um die Leitungstreiber bei RS485 zu aktivieren(Die heißen aber
> eigentlich auch TXDEN und RXDEN)!
>
> Du mußt TXD und RXD benutzen ohne EN!

Ohh, hast ja recht. En für Enable Sorry.

uwe schrieb:
> Aber dann solltest du deinen gesendeten String nicht empfangen können!?

Mein FTDI ist so angeschlossen: FTDI Rx -> µC Tx  ||| FTDI Tx -> µC Rx

Ich empfange mein String.

uwe schrieb:
> Also wo hast du nun was angeschlossen(Schaltplan)

Ist angehängt als png

uwe schrieb:
> und welcher Bootloader
> und welche version und welches Programm und welche version

Pffff, Ich habe denn Chip damals mit dem UNo gebrannt also ein Chip im 
Uno drin der als ISP arbeitet und dann per SPI ein anderen Angeschlossen 
und über die IDE gebrannt. Die Datei heißt 
"ATmegaBOOT_168_atmega328.hex".

Programm ist im Moment die Arduino IDE in der Version 1.8.5. Der 
Bootloader ist da aber schon seit Anfang 2016 drauf!

uwe schrieb:
> welchen
> Treiber für FTDI und welche Version benutzt du nun?

Treiber habe ich von hier: http://www.ftdichip.com/Drivers/VCP.htm Dann 
dann die EXE Setup genommen.

Lg

von Arduino Badboy (Gast)


Lesenswert?

Felix N. schrieb:
> Ist angehängt als png

Vcc ist mit GND verbunden (Pin 7 und 8)!

von Felix N. (felix_n888)


Angehängte Dateien:

Lesenswert?

Arduino Badboy schrieb:
> Vcc ist mit GND verbunden (Pin 7 und 8)!

Jo ja habs geändert auf dem Breadboard ist das natürlich nicht so :)

von Jim M. (turboj)


Lesenswert?

Felix N. schrieb:
> Ähh ne, Habe jetzt eine 1N4007 Diode parallel zum 10K Pullup Widerstand
> hinzugefügt.

Wozu? Die 1N400x sind IIRC extra lahme Gleichrichterdioden für 50/60Hz 
Wechselstrom.

Hast Du auch mal nach den Fuses geschaut? Ohne korrekte Fuses startet 
der Bootloader AFAIK gar nicht erst.

von Felix N. (felix_n888)


Lesenswert?

Hallo nochmal an alle.

Ich habe mittlerweile das Problem gefunden. Es scheint wohl ein Problem 
an der Reset Leitung zu geben.

Wenn ich in der Arduino IDE auf Upload klicke und während das Sketch
kompiliert wird denn Mikrocontroller Reset Line mit ein Taster auf GND 
ziehe und denn Taster loslasse wenn die IDE in "Hochladen" geht wird das 
Sketch hochgeladen.


In Atmel Studio 7 gibt es aber noch Probleme zwar, kann ich das Uploaden 
starten indem ich denn Reset Taster gedrückt halte und dann loslasse. Er 
scheibt es auch "Writing ##### 100 % 2.91s" 8,5 Kb"

Jedoch kann er es nicht lesen:
1
avrdude.exe: reading on-chip flash data:
2
3
Reading | ###############################################
4
avrdude.exe: stk500_paged_load(): (a) protocol error, expect=0x14, resp=0x50
5
#avrdude.exe: stk500_cmd(): programmer is out of sync
6
avr_read(): error reading address 0x0000
7
    read operation not supported for memory "flash"
8
avrdude.exe: failed to read all of flash memory, rc=-2
9
10
avrdude.exe: stk500_cmd(): programmer is out of sync
11
avrdude.exe: stk500_cmd(): programmer is out of sync
12
avrdude.exe: stk500_cmd(): programmer is out of sync
13
avrdude.exe: stk500_cmd(): programmer is out of sync
14
avrdude.exe: safemode: Sorry, reading back fuses was unreliable. I have given up and exited programming mode
15
avrdude.exe: stk500_disable(): protocol error, expect=0x14, resp=0x1f
16
17
avrdude.exe done.  Thank you.

Scheiben tut er das Programm aber auf dem Chip. Der Fehler tritt auch 
nicht immer auf. Nur manchmal kann das auch an der nicht richtig 
funktionierend Reset Leitung liegen?

Woran liegt das der FTDI den Reset nicht richtig ausführt? Denn 
Bootloader Reset habe ich ja nach dem Schaltplan des Arduino UNO 
aufgebaut. Mit 100nF Kondensator, 10K Pullup gegen Vcc am µC, 1K 
Pulldown auf GND nach dem 100nF auf DTR des FTDI

Mfg Felix

von Hmmm (Gast)


Lesenswert?

Wenn man ISP nutzen will, hat der Kondensator am Reset-Pin nichts 
verloren.

von Felix N. (felix_n888)


Lesenswert?

Hmmm schrieb:
> Wenn man ISP nutzen will, hat der Kondensator am Reset-Pin nichts
> verloren.

Möchte ich aber nicht, ich möchte mein Chip gerne über denn Seriellen 
UART programmieren.

Ich habe mal mit mein Oszi auf die DTR Line geschaut. Wenn der Chip 
nicht am arbeiten ist also mit Hochladen ist die Leitung auf HIGH. 
Sobald der Vorgang startet mit dem Hochladen gehe die Leitung auf LOW. 
Gemessen habe ich das ohne die DTR Leitung am Controller angeschlossen 
zu haben

von Felix N. (felix_n888)


Lesenswert?

So ich habe denn Fehler gefunden! Er Fehler scheint wohl sich im 
Steckbrett zu befinden.

Ich habe mal denn 100nF Keramik Kondensator gegen ein 100nF 
Folienkondensator getauscht. Da der ein breiteres Pin Verhältnis hat 
wurde die eine Reihe übersprungen und eine Pin Reihe daneben genutzt. 
Und sehe da der Upload funktioniert.

Dann habe ich denn Kondensator auf die vorherige Pin Leiste reingesteckt 
und es geht wieder nicht. Scheinbar ist dort kein richtiger Kontakt oder 
irgendwas anderes. Auf jeden Fall funktioniert der FTDI Chip.

von Lötlampe Halter (Gast)


Lesenswert?

Felix N. schrieb:
> So ich habe denn Fehler gefunden! Er Fehler scheint wohl sich im
> Steckbrett zu befinden.

Brille? Fielmann!

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.