Forum: Mikrocontroller und Digitale Elektronik USB Programmer


von Bertolt Mildner (Gast)


Lesenswert?

Da hier das Thema USB Programmer immer wieder mal hochkommt hab ich mir
mal ein paar Gedanken zu dem Thema gemacht.

Was soll der USB Programmer können/für Eigenschaften haben:

- ISP mit 5V und 3.3V (eventuell auch 1.8V)
- kompatibel zu bestehender Software (min. Win32 + Linux) -> COM oder
LPT over USB
- USB Treiber (min. Win32 + Linux) sollen entweder vorhanden sein oder
mit möglichst geringem Aufwand erstellt werden können
- die Targetschaltung über USB mit 5V versorgen (max. 500mA@5V,
eventuell auch 3.3V)
- keinen eigenen MC benötigen! (denn der muss auch erst mal
programmiert werden ...)
- einfacher Aufbau, günstige und leicht verfügbare Komponenten

Eine richtige eierlegende Wollmilchsau eben :-)


Mein Vorschlag:

Software: PonyProg
- ist selbst eine eierlegende Wollmilchsau :-)(JA, man kann es auch aus
einem makeile starten!
http://www.mikrocontroller.net/forum/read-2-45615.html)
- Win32 und Linux Version frei verfügbar
- unterstützt alle AVRs und noch vieles andere

Hardware: SI-Prog Adapter mit einem FT232BM
- der normale SI-Prog Adapter funktioniert gut und ist zumindest (für
mich) ausreichend schnell
- der FT232BM ist relativ gut verfügbar und nicht allzu teuer
- Virtual COM Port Treiber für Win32 und Linux sind frei verfügbar
- 3.3V IO möglich
- "bus powered devices" mit >100mA möglich

Nachteil dieser Lösung (sofern überhaupt realisierbar!) ist der dass es
nicht nur einfacher sondern warscheinlich auch billiger ist einen
USB-RS232 Adapter (mit einem FT232 drin) zu kaufen und einen normalen
SI-Prog Adapter (oder was auch immer) zu verwenden ...

Mich würde jetzt natürlich interressieren was ihr von einer Idee
haltet!

[ ] Vergiss es! Das kann nicht funktionieren weil ...
[ ] Vergiss es! Ist zu teuer / aufwendig.
[ ] Vergiss es! PonyProg + SI-Prog ist zu laaangsaam.
[ ] Klingt gut! Lass uns weiter darüber reden.
[ ] Geniale Idee! Wo kann ich den Schaltplan  das Boardlayout  eine
fertige Platiene bekomen?

Bertolt

von Matthias Weißer (Gast)


Lesenswert?

Hi

[X] Vergiss es! PonyProg + SI-Prog ist zu laaangsaam.

Da PonyProg den AVR über die Steuerleitungen der RS232 progt ist das in
Verbindung mit den Treibern des FT232 schnarchlangsam. Wenn schon dann
nehmen wir einen FT245 und hängen einen kleinen AVR dran und
implementieren in diesem AVR das Protokoll das auch in der App-Note 910
genutzt wrid. Platinen für soetwas liegen bei mir Zuhause ich hab aber
grade keine Zeit das zu realisieren.

Matthias

von Bertolt Mildner (Gast)


Lesenswert?

@Matthias:

Also dass das SI-Prog nicht gerade die schnellst Variante ist einen AVR
zu proggen ist wohl unbestritten, aber dass ein AN 910er schneller
ist will ich sehen!

Hast du schon mal beider direkt verglichen?
Ich hab mich auch mal ne zeitlang um einen anderen (schnelleren bzw.
commandline tool kompatieblen) Progammer über RS232 umgesehen und bin
dabei natürlich auf die AN 910 gestossen.

Das dumme Ding war einfach nur ca. 2 bis 2.5 mal langsamer als das
SI-Prog.

Ausserdem finde ich es nicht gerade sinnig wenn man zum Bau des
Programmers einen Programmer braucht ...

Bertolt

von Chaldäer (Gast)


Lesenswert?

Hallo,

warum soll die Lösung mit µC so viel langsamer sein?

Die AN910 beschreibt einen 1200er mit 4MHz. Die Daten werden seriell im
Halbduplexbetrieb vom PC zum µC geschoben. Das mutet schon sehr Langsam
an.

Mit einem schnelleren Controller, einem FTxxx für parallele Übertragung
sollte das Ganze schon eine Ecke schneller gehen.

Die Frage, die sich mir stellt ist, ob der 'Interface'-Controller die
ganzen Daten umschaufeln und Programmierprotokolltauglich aufbereiten
muß oder ob es reicht, daß er das Handschake zur Identifizierung und
Nachahmung des Programmieradapters als Druckerport übernimmt.

Gruß,
Chaldäer

von Markus Burrer (Gast)


Lesenswert?

Ich hab sowas vor kurzem mal probiert. Und zwar wollte ich einen
USB->LPT Treiber verwenden. Aber PonyProg hat den virtuellen LPT Port
erst gar nicht gefunden (WinXP)
Und ich bin auch der Meinung das das ganze VIEL zu lahm würde. Eine
VERNÜNFTIGE Lösung arbeitet IMMER mit einem eigenen µC weil der dann
auch so Sachen wie Spannung einstellen und Strom überwachen übernehmen
kann. Außerdem kann man dann das Timing unabhängig vom OS genau
bestimmen und evt sogar an den Takt des Target anpassen.
Die ganzen LowEnd und LowCost Lösungen taugen wenig bis gar nichts,
sind unzuverlässig und langsam. Im schlimmsten Fall sehe ich sogar
immer ein defektes Mainboard (gut, bei ner Variante mit USB->irgendwas
eher unwahrscheinlich). Und dann ist der ganze Sparwahn eh für'n
Arsch

BTW: ich habe sowohl den AVR ISP von Atmel als auch den USB ISP von
E-Lab, und die sind beide deutlich schneller als jede low end Lösung
die ich bisher probiert hab und funktionieren an 100% der Rechner was
ich von HC244-am-Drucker-Port oder
3-Widerstände-und-3-Z-Dioden-am-seriellen-Port Lösungen nicht behaupten
kann

Gruß
Markus
www.embedit.de

von Matthias (Gast)


Lesenswert?

Hi

ich habe nicht gesagt man soll einen AN910-Programmer bauen sondern
einen der das Protokoll spricht. Damit kann man ihn einfach in andere
Software integrieren.

Es hat zwei Gründe das die Programmer nach AN910 recht lahm sind:
Einmal die serielle Übertragung läuft da AFAIK irgendwo bei 9600.
Der zweite Grund ist das der S1200/S2313 die SPI-Schnittstelle per
Bit-Banging simulieren muß da er sie nicht in Hardware hat.

Natürlich ist es etwas dumm wenn man für einen Programmer erstmal einen
Programmer braucht (Henne-Ei-Problem) aber ein USB-Programmer sollte
schneller sein als einer an der seriellen/parallelen Schnittstelle. Und
das wird mit einem FT232 alleine einfach nichts. Mal sehen wie ich
günstig an einen FT245 komme. Dann bau ich meinen USB-Prgrammer mal auf
und fahre ein paar Tests.

Matthias

von Markus Burrer (Gast)


Lesenswert?

@Matthias:
ich hab das mal mit einem ähnlichen Chip versucht. Keine Chance weil
keines der Programme die virtuellen Ports erkannt hat. Und ich glaube
nicht das die FTDI Treiber einen "echten" Druckerport an der Adresse
$378 oder so abbilden können.
Zumindest PonyProg greift "hart" auf die Adresse von Drucker oder Com
Port zu, und das kann so ein virtueller Treiber glaube ich nicht
bieten.
Bei den anderen Progs hab ich dann schon gar nicht mehr genauer
geschaut

von Matthias (Gast)


Lesenswert?

Hi

PonyProg unterstützt AN910-Programmer AFAIK garnicht. Und da PonyProg
ja für sein SI-Prog an die Handshakeleitungen ran muß macht ein
direkter Zugriff (der auch irgendwie über einen Treiber gehen muß sonst
ist unter XP nichts mit Hardwarezugriff)

Man müßte mal in den avrdude-Sourcen reinschauen wie die das machen.
Wenn das über einen File-Handle gelößt ist sollte das kein Problem
sein.

Matthias

von Markus Burrer (Gast)


Lesenswert?

PonyProg unter XP läuft nur mit den I/O Einstellungen. API erkennt er
gar keinen Port. Aber mit den I/O Einstellungen erkennt er nur Ports
die eine echte Adresse haben. Und die fehlt den virtuellen Treibern
leider.
Aber selbst wenn man es irgendwie zum laufen bringen würde, egal ob mit
PonyProg oder was anderem, die Geschwindigkeit dürfte ziemlich
mieserabel sein.
Sobald ich Luft habe werde ich eh einen eigenen ISP entwickeln der dann
bestenfalls zum AVR Studio kompatibel sein wird, einmal mit serieller
und einmal mit USB Schnittstelle.

Gruß
Markus

von Frankl (Gast)


Lesenswert?

PonyProg ist so gut, das immer wieder hier im Forum die Probleme damit
auftauchen.

von Bertolt Mildner (Gast)


Lesenswert?

OK, ich sehe es ein! SI-Prog über USB ist nicht das Gelbe vom Ei.

Hab mir die FTDI Chips und Treiber noch mal näher angesehen, es würde
wohl auch nicht oder nur extrem langsam gehen.

Übrigens:
Man kann über das Win32 Comm API sehr wohl auf alle RS-232
Steueleitungen zugreiffen.
PonyProg sieht einen VCP im API Mode sehr wohl.

von Bertolt Mildner (Gast)


Lesenswert?

Da eine hohe Geschwindigkeit beim programmieren über USB offensichtlich
ganz weit oben auf den meisten Wunschlisten steht würde mich mal
interresieren was ihr in konkreten Zahlen unter schnell versteht?

Um es etwas konkreter zu machen:

Ich bastle gerade an einer Programmer Firmware (mich hat das Thema USB
Programmer einfach keine Ruhe gegeben :-) und hätte gerne ein paar
Richtwerte (ausser so schnell wie möglich).

Wie lange braucht euer lieblings Programmer um einen Mega32 bzw. einen
Mega128 zu brennen (= erase + Flash schreiben + Flash lesen)?

Sobald ich erste Zahlen habe (sollte hoffentlich Heute oder Morgen so
weit sein) und ich mich nicht dafür schämen muss :-) poste ich sie
natürlich hier.

Bertolt

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.