Arduino Pro Mini an serieller Schnittstelle programmieren?

m2m

Erfahrener Benutzer
#26
In der Arduino IDE ? Wenn ja, Programmer auswählen und dann unter Datei "Upload mit Programmer" wählen STRG+SHIFT+U
 

scritch

Erfahrener Benutzer
#27
Ein Problem jagt das Nächste :(

Nun sagt er mir beim flashen über den von dir beschriebenen Weg: avrdude: warning: cannot set sck period. please check for usbasp firmware update.
 

m2m

Erfahrener Benutzer
#30
Ich hab vor einiger Zeit mal 6A & 10A Plush mit BLHeli geflashed. Hab dafür OlliWs Anleitung genommen (mit nem Arduino UNO).
 

scritch

Erfahrener Benutzer
#31
Ich hab vor einiger Zeit mal 6A & 10A Plush mit BLHeli geflashed. Hab dafür OlliWs Anleitung genommen (mit nem Arduino UNO).
Ja, nach dessen Anleitung bin ih auch vorgegangen. Habe diesen FTDI in Verbindung mit einem Pro Mini benutzt: http://flyduino.net/USB-UART-Adapter-fuer-Autoquad-und-Multiwii

Flashen des Pro Minis funktionierte, aber das flashen des ESC's an sich ging nicht. Er hat den COM-Port nicht gefunden. Nach reichlich hin und her fiel die Vermutung auf den FTDI-Adapter, dass er das Problem ist.

Daher habe ich den Thread ja auch erst angeleiert weil ich nach einfach Alternativen gesucht habe, den Regler zu flashen.
 

OlliW

Erfahrener Benutzer
#32
Hallo Ingo,

führen wir die Diskussion hier weiter. Ich habe diesen Thread und andere von dir zu ähnlichem jetzt nicht 1000% genau durchgearbeitet, aber ich denke das macht nichts, es scheint sich eh zu lohnen sozusagen nochmals systematisch von vorne zu beginnen.

Auch auf die Gefahr hin dass das sehr oberlehrerhaft rüber kommt (was nicht meien Absicht ist): Antworten können nur so gut sein wie die Fragen und Infos die geliefert werden. Im Konkreten Fall hätte man durchaus kurz die wichtigen Eckpunkte kompakt aber präzise zusammenfassen können... es war mir z.B. null klar dass du einen Mini + seperatem USB-Adapter benutzt, was einen Unterschied machen kann, etc. pp usw und so fort!
(gebe uns eine Chance zu verstehen was du machst ;))

Also, lass mich versuchen mir erstmal ein genaues Bild über dein Setup zu machen:
(1) du hast einen Arduino Pro Mini 328 5V/16MHz (http://www.exp-tech.de/Mainboards/Arduino-Pro-Mini-328---5V-8MHz.html)
(2) du hast einen USB seriell Adapter (http://flyduino.net/USB-UART-Adapter-fuer-Autoquad-und-Multiwii)
(3) du hast einen USBASP ISP-Programmiere
(4) du hast dir noch einen TTL-RS232 Wandler zu gelegt (http://www.pollin.de/shop/dt/MzY5OTgxOTk-/Bausaetze_Module/Bausaetze/RS232_TTL_Wandler_Bausatz.html)
(5) du arbeitest unter Win7

erste Bemerkungen
zu (2): laut Beschreibung ist fast sicher anzunehmen dass das ein USB-TTL Adapter (also TTL Pegel) ist, aber dass das KEIN Adapter mit FTDI Chip ist (sondern nur ähnlicher Funktion => andere Chip, vermutlich CP2102)
zu (4): wegen (2) ist davon auszugehen, dass wenn du den TTL-RS232 Wandler benutzt entweder der Arduino oder der USB seriell Adapter KAPUT geht => ich würde den bis auf weiteres AUF KEINEN FALL BENUTZEN!!

Lass mich auch versuchen mir ein Bild darüber zu machen was klappt:
(6) du konntest erfolgreich die owsilprog Hex Datei mittels AvrBurnTool/avrdude über den USB-Anschluss auf den Arduino flashen
(7) du konntest erfolgreich die owsilprog Hex Datei mittels AvrBurnTool/avrdude über den ISP-Anschluss und USBASP auf den Arduino flashen

Bemerkungen:
zu (6): nachdem du (7) gemacht hast, müsste der Bootloader, welcher normalerweise factory-installed sein sollte, überschrieben worden sein, so dass Punkt (6) nun NICHT MEHR funktionieren sollte. Frage: ist das so???
zu (7): ich vermute dass du zwar die Hex Datei per ISP-USBASP geflasht hast, aber nicht die Fuses entsprechend gesetzt hast, die Firmware sollte daher nciht funktionieren können.


Wenn ich irgendeinen der Punkte oben falsch mitbekommen habe, dann korrigiere micht bitte!!! (damit ich nicht auf dem falschen Gleis fahre LOL)

Nun eine Behauptung:
Ich behaupte dass das mit deinem Arduino Mini Pro (1) und dem USB seriell Adapter (2) funktioniert, man muss "nur" alles richtig machen. (LOL) => wir fassen zunächst mal nichts anderes als diese zwei Hardwarestücke an.

Wenn es ernsthafte Argumente gibt warum diese Behauptung falsch ist, dann korrigiere micht bitte!!! (damit ich nicht auf dem falschen Gleis fahre LOL)


Dann lass mich diesen Post noch mit etwas evtl konstruktiven abschliessen:
Bei deinem Aufbau hast du einen getrennten USB seriell Adapter und Arduino Board, dadruch ergeben sich eine ganze Reihe von zusätzlichen möglichen Fallstellen. Nachdem dein Problem aber bereits ganz ganz "vorne" zu liegen scheint, der Verbindung PC <-> USB Adapter, schlage ich vor dass wir versuchen erstmal (nur!) das zum Laufen zu bringen (und uns umalles was dahinter kommt später kümmern).

Vorschlag: Verbinde die Rx und Tx Pins an dem USB seriell Adapter, und verbinde den Adapter mit nem USB Kabel mit dem PC. Nun starte (irgendein) Terminal-Program (ich benutze z.B. Bray's Terminal, Win7 hat glaube ich auch eins, HyperTerm oder so, die Arduino IDE bietet auch was, etc.). Wähle den richtigen COM Port aus, und dann sende Text. Wenn du den gesendeten Text auch empfangen kannst, ist alles i.O. Das sollte bei jeder beliebigen Baudrate gehen.
Hinweis: dieser Test ist nicht von mir, sondern ist gut bekannt, d.h. wenn du mit Google suchst findest du eine Menge von Anleitungen etc dazu, die dir weiterhelfen mögen.

Wenn das klappt, dann "beweise" es uns durch posten eines Screenshoots!
Wenn es nicht klappt, dann werden wir das lösen.

:)

Olli
 

ChristophB

Erfahrener Benutzer
#33
Toll... und wann ist der Zeitpunkt um reset zu drücken? Welchen Wandler genau brauche ich dann? Kann ich nicht auch einen USBasp nehmen?
Mit ein wenig Übung ist das eigentlich kein Problem. Während die Arduino IDE noch am kompilieren ist drückt man den Resettaster und wenn in der Statusleiste steht 'Uploaden' lässt man den Taster wieder los. Die IDE wartet bei Beginn eine Zeit lang auf die Bereitschaft vom Zielsystem bevor diese den Vorgang abbricht. Der Bootloader vom Arduino springt dann in den Programmiermodus.
 

scritch

Erfahrener Benutzer
#34
Auch auf die Gefahr hin dass das sehr oberlehrerhaft rüber kommt (was nicht meien Absicht ist): Antworten können nur so gut sein wie die Fragen und Infos die geliefert werden.
Klar, kein Problem. Das hier war ja nur als indirekter Thread zum eigentlichen Flashvorgang gedacht, daher kam ich nur Stück für Stück mit den Informationen um die Ecke. Sorry, ich gelobe Besserung :) Vielen Dank meinerseits erstmal für deine Mühe!

Also, lass mich versuchen mir erstmal ein genaues Bild über dein Setup zu machen:
(1) du hast einen Arduino Pro Mini 328 5V/16MHz (http://www.exp-tech.de/Mainboards/Arduino-Pro-Mini-328---5V-8MHz.html)
(2) du hast einen USB seriell Adapter (http://flyduino.net/USB-UART-Adapter-fuer-Autoquad-und-Multiwii)
(3) du hast einen USBASP ISP-Programmiere
(4) du hast dir noch einen TTL-RS232 Wandler zu gelegt (http://www.pollin.de/shop/dt/MzY5OTgxOTk-/Bausaetze_Module/Bausaetze/RS232_TTL_Wandler_Bausatz.html)
(5) du arbeitest unter Win7
Korrekt!

erste Bemerkungen
zu (2): laut Beschreibung ist fast sicher anzunehmen dass das ein USB-TTL Adapter (also TTL Pegel) ist, aber dass das KEIN Adapter mit FTDI Chip ist (sondern nur ähnlicher Funktion => andere Chip, vermutlich CP2102)
Fast richtig, drauf steht: USB UART - CP2012

zu (4): wegen (2) ist davon auszugehen, dass wenn du den TTL-RS232 Wandler benutzt entweder der Arduino oder der USB seriell Adapter KAPUT geht => ich würde den bis auf weiteres AUF KEINEN FALL BENUTZEN!!
Nur zum Verständnis: Warum geht der TTL-Wandler oder USB-Adapter kaputt wenn ich diese parallel nutze? Ich nutze sie ja nicht "in Reihe".

Lass mich auch versuchen mir ein Bild darüber zu machen was klappt:
(6) du konntest erfolgreich die owsilprog Hex Datei mittels AvrBurnTool/avrdude über den USB-Anschluss auf den Arduino flashen
(7) du konntest erfolgreich die owsilprog Hex Datei mittels AvrBurnTool/avrdude über den ISP-Anschluss und USBASP auf den Arduino flashen
Nein, nur teilweise korrekt. (6) konnte ich machen wie beschrieben. Wenn ich es über den USBasp versuche bekomme ich die Meldung (siehe Bild).

Vorschlag: Verbinde die Rx und Tx Pins an dem USB seriell Adapter, und verbinde den Adapter mit nem USB Kabel mit dem PC. Nun starte (irgendein) Terminal-Program (ich benutze z.B. Bray's Terminal, Win7 hat glaube ich auch eins, HyperTerm oder so, die Arduino IDE bietet auch was, etc.). Wähle den richtigen COM Port aus, und dann sende Text. Wenn du den gesendeten Text auch empfangen kannst, ist alles i.O. Das sollte bei jeder beliebigen Baudrate gehen.
Habe mal das Terminal benutzt, was in dem Paket enthalten war. Ich habe dann am USB-UART TX und RX verbunden und versucht etwas zu senden. Ging aber nicht. TX: 4 - RX: 0
 

Anhänge

OlliW

Erfahrener Benutzer
#35
Fast richtig, drauf steht: USB UART - CP2012
ah, gut... vielleicht kann man das auch umgekehrt lesen, einen CP2102 kenne ich zumindest, ein CP2012 ist mir unbekannt... oder ist das irgendetwas altes? Jedenfalls Silabs und nicht FTDI.
Warum geht der TTL-Wandler oder USB-Adapter kaputt wenn ich diese parallel nutze?
der TTL-RS232 Wandler (ich vermute der standard max232) gibt echte RS232 Pegel aus, also +-8V oder mehr, damit kann man 5V Eingänge schon gut killen...
Wenn ich es über den USBasp versuche bekomme ich die Meldung (siehe Bild).
ähm... nächste Merkregel, es macht wenig Sinn Dinge zu tun bei denen man nicht genau versteht was passiert... in der avrdude Zeile ist zu erkennen dass du m8 = Atmega8 angegeben hast, und da du ein Atmega328 angeschlossen hast, mekert avrdude ganz vorschriftsmässig darüber dass die Device Signatur falsch ist... keien Ahnung warum du einen Atmega8 ausgewählt hast
Habe mal das Terminal benutzt, was in dem Paket enthalten war.
ha, stimmt, ist ja dabei, habe ich ganz vergessen LOL
Ich habe dann am USB-UART TX und RX verbunden und versucht etwas zu senden. Ging aber nicht
ähm... warum Handshake? Mache bei Handshake "none". Bist du dir 1000%ig sicher, dass das Com3 ist? Was sind die anderen Com-Ports, was ist da noch so alles angeschlossen? ACPI\PNP0501\1 bedeutet bei mir das der (echten) FTDI da ist, ich hatte noch nie einen CP2102/Silabs, aber ich hätte gedacht dass das ein andere Treiber ist (bei Win XP wars zumindest so), konnte zu VSCOMBUS nichts nützliches finden, was ist das? Vielleicht wäre ein Screenshot vom Gerätemanager->Anschlüsse(COM&LPT) nützlich.

Deinen USB-TTL-CP2102-Adapter, hast du den anderweitig schon mal erfolgreich benutzt, z.B. mit Autoquad oder Multiwii?

Ansonsten, sieht doch gut aus, das wird.
Olli
 

OlliW

Erfahrener Benutzer
#37
Jetzt funktioniert senden und empfangen auf jeden Fall
wo ist der Beweis-Screenshot ;)

Weiss nicht was der AvrBurnTool-Screenshoot sagen soll. Wie auch immer, da hat's nen Fehler:
Atmega328p... ATMEGA328P... A T M E G A 3 2 8 P... in Kurzschreibweise m328p... M328P... M 3 2 8 P

Wenn der USB-Adapter funktioniert, hast du jetzt zwei Möglichkeiten wie man weiter gehen will
A) du kannst einen "echten" Arduino draus machen, also das so machen dass wenn du den USB-Adapter an den Pro Mini anschliesst, sich diese Combo wie ein üblicher Arduino programmieren lässt
B) du kannst die Firmware immer über ISP flashen

Ich würde dir (A) sehr empfehlen, denn der große Vorteil ist dann dass, falls mal ein Firmware Update nötig ist, oder du den Mini für etwas anderes mit einem anderen Program flashen willst, nichts weiter machen musst als den Arduino an den USB anzuschliesen. Finde ich sehr handlich, man spaart sich das ganze Extragehampel mit dem USBASP etc.

Du musst dich an dieser Stelle entscheiden, denn der weitere Weg hängt davon ab.
 

scritch

Erfahrener Benutzer
#38
Toll. Falsches Bild angehängt, edititiert und jetzt ist der Inhalt weg. Naja, egal. Jedenfalls siehst du nun oben den Beweis :)

Ich entscheide mich für (A) :)
 

OlliW

Erfahrener Benutzer
#39
2x COOL

dafür muss nun als nächstes mit deinem USBASP per ISP der Bootloader im Mini geflasht werden (keine Sorge, das muss du jetzt nur einmal machen, dann nie wieder...).

dazu braucht es zwei Schritte
1) die Hex Datei mit dem Bootloader muss geflasht werden
2) die Fuses mussen richtig gesetzt werden

um zu wissen was man braucht, schaut man in die boards.txt Datei von arduino rein, http://code.google.com/p/arduino/source/browse/trunk/hardware/arduino/boards.txt. Dort findet man
Code:
##############################################################

pro5v328.name=Arduino Pro or Pro Mini (5V, 16 MHz) w/ ATmega328

pro5v328.upload.protocol=stk500
pro5v328.upload.maximum_size=30720
pro5v328.upload.speed=57600

pro5v328.bootloader.low_fuses=0xFF
pro5v328.bootloader.high_fuses=0xDA
pro5v328.bootloader.extended_fuses=0x05
pro5v328.bootloader.path=atmega
pro5v328.bootloader.file=ATmegaBOOT_168_atmega328.hex
pro5v328.bootloader.unlock_bits=0x3F
pro5v328.bootloader.lock_bits=0x0F

pro5v328.build.mcu=atmega328p
pro5v328.build.f_cpu=16000000L
pro5v328.build.core=arduino

##############################################################
Wir schauen in der Datei noch schnell mal unter Arduino Nano w/ ATmega328 nach, und entdecken dass die Einträge exakt identisch sind! D.h. dein Arduino Pro Mini wird sich genauso wie ein Arduino Nano w/ Atmega328 verhalten! Das merken wir uns für später.

Jetzt brauchst du also die Hex Datei ATmegaBOOT_168_atmega328.hex, sie gibt es hier http://code.google.com/p/arduino/source/browse/trunk/hardware/arduino/bootloaders/atmega/. Auf Dateinamen, mit linker Maustaste Menu aufklappen, und Ziel speichern.

Nun musst diese Hex mit USBASP über den ISP Stecker flashen, sowei die Fuses setzen. Das machst du mit AvrDudeTool. Dazu öffnest du die Datei AvrBurnTool4owSilProg.dev mit einem ASCII-Texteditor (Notepad) und änderst den Eintrag $ExpertLevel= 1; auf $ExpertLevel= 4;. Speichern nicht vergessen. Nun startest du AvrBurnTool erneut. Nun wählst du die Einstellungen
1) ISP AVR programmer (general)
2) Usbasp
3) Atmega328p
4) ATmegaBOOT_168_atmega328.hex
und drückst Erase Chip und dann Burn All.

Damit ist die Hex geflasht, Bitte poste das Beweis-Screenshot. ;)

Als nächstes kommen die Fuses. Dazu trägst du unten die Fuses ein
low fuse: ff
high fuse: da
extended fuse: 05
lock byte: 0f
dann drückst du der Reihe nach Burn Low Fuse,..., Burn Lock Byte.

Damit sind die Fuses geflasht, Bitte poste mindestens ein Beweis-Screenshot. ;)

(du kannst allternativ auch gleich die Hex Datei und die Fuses setzen, dann wird alles in einem Rutsch mit Burn All erledigt... gibt allersdings einen langen avrdude output, denn man sehr gründlich ansehen muss ob alles OK ist!!)

Wenn das erledigt ist, gehen wir daran den USB-Adpater mit dem Mini zu verbinden.
 
Erhaltene "Gefällt mir": taler
FPV1

Banggood

Oben Unten