Forum: Mikrocontroller und Digitale Elektronik USB-ISP? Mobil? Eigenbau? Together NOW! ;-)


von shoXy (Gast)


Lesenswert?

Hi Junx!

Ich habe schon im ganzen Forum nach der Lösung gesucht aber nur quasi
nützliches gefunden: "USB-ISP ist zu lahm!", "Parallel und Seriell
ist sowieso besser" usw.
Aber jetzt meine Frage dazu: wieso soll das nicht gehen?
Ich bin zwar bestimmt noch ein Newbie aber wieso soll es nicht möglich
sein einen ISP selbst zu bauen, der erstens einwandfrei über USB
funktioniert(jetzt bitte nicht mit "ist zu lahm" ankommen ;-) ) und
über das AVR Proggi zu bedienen ist?
So wie hier:
<a
href="http://www.e-lab.de/programmer/isp.html">www.e-lab.de/programmer/isp.html</a>;

Und zu guter letzt den ISP auch mobil, also ohne rechner u.ä. benutzen
kann. Das wäre doch mal eine schöne Sache, oder?

Da ich eine Lappi nur mit USB schnittstelle habe würde ich mich riesig
freuen wenn jemand was dazu weiß!

VIELEN DANK JUNX!

mfg,
shoXy

von Matthias (Gast)


Angehängte Dateien:

Lesenswert?

Hi

ein Stück Hardware das das können soll hab ich bereits hier (siehe
Anhang) USB-Bootloader und ein erster Synchronisationstest mit AVRDude
(STK500 Protokoll) wurde ebenfalls erfolgreich abgeschlossen. Mal sehen
wann ich dazu komme etwas mehr daran zu machen.

Die Unbestücken Bauteile sind I2C-EEPROM's, Leuchtdioden und
Widerstände die ich z.Z. nicht brauche. Eine Version ohne LCD mit nur
noch einem Viertel der Größe ist als Eagle-Layout ebenfalls vorhanden.

Matthias

von mthomas (Gast)


Lesenswert?

Der original ATMEL ISP (AVRISP) funktioniert hier bisher problemlos mit
dem USB->seriell-Adapter von Reichelt. Kost' zusammen ca. 45 EUR. Zwar
kein "offline-Programmer" (also noch ein Punkt auf der Wunschliste
offen) aber dafuer laeuft auf dem eigentlichen Programmer die original
ATMEL-Firmware mit Unterstuetzung seitens AVR-Studio fuer jeden
"low-voltage-seriell-programming" tauglichen AVR. Hab' keine
Geschwindigkeit ausgemessen aber mir ist's schnell genug...

von shoXy (Gast)


Lesenswert?

Hi!

Danke erstmal!

@mthomas:
Habe ein USB to Seriell Adapter , aber der läuft bei mir mit allen
möglichen ISP-Eigenbauten sowas von langsam ... einfach unglaublich.
Außerdem würde ich gerne nur ein Teil haben, also USB to ISP-Adapter to
uC. Aber ich werd mir den vielleicht doch mal bestellen, wahrscheinlich
ist mit meinem Glück mein Adapter mist! ;-) Vielen Dank!

@Matthias:
Hört sich echt nicht schlecht an. Hast du noch mehr infos dazu? Wäre
auf jedenfall super. Läuft das nur mit Bootloader oder auch mit dem AVR
Studio? Auf jedenfallvielen Dank schonmal!

mfg,
shoXy

von Matthias (Gast)


Lesenswert?

Hi

der Bootloader dient nur dem Softwareupdate. Das Teil soll mal komplett
im AVRStudio funktionieren. Im Moment wird es aber nur als STK500
erkannt. Mehr nicht.

Matthias

von Joern Gerhard (Gast)


Lesenswert?

Nur nicht das Rad wieder neu erfinden (und dann nicht regelmässig die
neuen AVR-Controller einbinden)!
Einfach den ISP von Atmel nehmen (für 39,- von reichelt) und den
USB-Seriell-Wandler von reichelt dazu (13,-!!!). Das läuft astrein.
STK500 plus den benannten Adapter ist sogar noch schneller. Und wenn
man den USB-Adapter an den freien Com-Port des STK500 anschliesst, dann
kann ich OHNE Probleme auch sensationalles 230kbps erreichen und damit
den AD-Wandler des AVR maximal ausreizen (und mir ein supersimples,
superbilliges gar net sooo schlechtes Oszi mal eben "basteln" bzw.
zusammenstöpseln).

cu joern

von Alex (Gast)


Lesenswert?

Das klingt ja nicht schlecht, was du da schreibst. Womit programmierst
du den Atmel denn (avrdude, Ponyprog, ...)?
Welche Einstellungen müssen dort vorgenommen werden, damit die
Programmierdaten über die USB-Schnittstelle laufen?

Gruss, Alex

von Matthias (Gast)


Lesenswert?

Hi

@Joern
Warum denn nicht mal das Rad neu erfinden? :-)

Anhand einer (eher unvollständigen) Spezifikation und ein paar
Programmen ein bischen Reverse Engeneering zu betreiben kann durchaus
interessant sein.

Eine Bitte hätte ich an dich. Könntest du mal testen wie sich avrdude
bei dir im Terminalmode verhält wenn du dein AVRisp über den USB
betreibst? Mein "Imitat" benötigt eine mittlere Ewigkeit um ein paar
hundert Byte aus dem Flash auzulesen. Ich würde mal vermuten das an
avrdude liegt da dieses für jedes Byte ein Kommando absetzt was
natürlich nicht sehr effektiv ist und beim USB erst so richtig für
Probleme sorgen dürfte.

Matthias

von Joern Gerhard (Gast)


Lesenswert?

Wie nennt sich das beim FTDI noch, PingPong-Mode oder so - diesen sollte
man tunlichst lassen, wenn man nicht den ganzen Tag Zeit hat.

@Alex: ganz normal AVRStudio, STK500-Programmer dort anklicken (be
STK500, also auch bei ATAVRISP)

AVR-Dude habe ich hier noch nicht getestet, aber in der Uni nehme ich
den (ebenfalls über das USB-Interface) für meinen Bootloader im
ATmega8. Der AVRProg scheint mir aber ein wenig schneller zu sein, nur
habe ich dort keine Lust herumzuklicken, sondern mache einfach "make
program", was mit avrdude toll läuft.

cu joern

von Joern Gerhard (Gast)


Lesenswert?

@matthias: was ist terminalmode? gib besser gleich die parameter mit,
dann teste ich es mal vielleicht

von shoXy (Gast)


Lesenswert?

Hi Junx!

Danke erstmal für die vielen Antworten!

@"Warum das Rad neu erfinden?!": Natürlich wollen wir das Rad nicht
neu erfinden, es wäre nur sinnvoll es zu verbessern. Beispiel Rad: Es
gibt hunderte von Ingenieuren die Reifen immer wieder verbessern, also
warum soll das auch nicht mit einem ISP gehen? Ist das sogut wie das
wichtigste für Alle die mit Microcontrollern umgehen.(wie eben das Rad
bei der Fortbewegung).

Nochmal, was unglaublich super wäre ;-) :

- "Ein" einziger ISP-Adapter, nicht USB to SERIELL usw.
- einwandfreie lauffähigkeit über USB
- gegebenenfalls offline-Programmierung (Mobiler ISP)

mfg,

shoXy

von Matthias (Gast)


Lesenswert?

Hi

@Joern
Mein Programmer nutzt natürlich keinen BitBang-Modus des FTDI sondern
nutzt diesen nur als Vermittlungsstelle zum ATMega8 im Programmer.

AVRDude Befehlszeile:
avrdude -p ATMEGA8 -c STK500 -P COM3 -t
(Port und Device evtl. anpassen)
Dann kommst du in den Terminalmode. Dann:
dump flash 0 1000
Damit ließt du die ersten 1000 Bytes aus dem Flash auf den Bildschirm.
Das dauert hier etwa 15s.

@shoXy
Zumindest die ersten Punkte kann ich bereits erfüllen. Für den dritten
Punkt ist die Hardware vorbereitet.

Matthias

von shoXy (Gast)


Lesenswert?

Hiho!

@ Matthias: Hast du eine Bauanleitung, Schaltplan o.ä. ...oder wo man
den ISP beziehen kann? Auf den 3. Punkt kann man nämlich glaub ich
erstmal verzichten, aber wenn der wirklich einwandfrei und zügig mit
dem USB anschluss funktioniert dann ... PERFEKT ... danach hab ich
gesucht! Danke!
Bin zwar nur Noobie aber ich würde mich gerne bereiterklären dann solch
einen adapter mit gehäuse zu konstruieren und Bauanleitung und reichelt
stückliste zu erstellen. Ich denk nämlich dass das "Hab nur USB"
Problem haben viele.

@ Joern: Hast du das Datenblatt von deinem USB to Seriell, welchen IC
oder Dioden-Schaltung? würde nämlich mal gerne wissen warum der läuft.
Meiner läuft nämlich überhaupt nicht.

Vielen Dank nochmal junx! Super Beiträge hier!

mfg,

shoXy

von Matthias (Gast)


Lesenswert?

Hi

Schaltplan habe ich natürlich. Wenn ernsthaft Interesse besteht könnte
ich mal einen Satz Platinen machen lassen (dann ohne Display ->
kleiner). Lohnt aber wohl erst ab 10 Stück aufwärts.

Ich würde mal vermuten das du einen "dummen" Adapter für die Serielle
Schnittstelle hast. Dann arbeitet das Programm das den AVR programmiert
mit den Statusleitungen was direkten Zugriff auf den Port erfordert
oder über USB schnarchlangsam ist. Mit einem AVRisp wird wohl auch
deine USB2RS232 funktionieren.

Matthias

von Tobi (Gast)


Lesenswert?

was kann dein programmer denn so und wofür verwendest du das lcd?
wieviel würde das denn so alles zusammen kosten? platine + bauteile
ungefähr. ich hab auf jeden fall interesse!

von Matthias (Gast)


Lesenswert?

Hi

die Hardware ist etwas universeller ausgelegt als eigentlich nötig da
damit noch mindestens zwei andere Projekte realisiert werden. Deshalb
das LCD und die Tasten.

Ich habe kein PC-Programm geschrieben. Da existieren genug. Ich
implementiere das STK500 Protokoll. Damit ist dann der Programmer
sowohl mit dem AVRStudio als auch mit AVRDude und uisp kompatibel.

Platine und Bauteile sollten zusammen so auf max. 25€ kommen wenn wir
10 Stück zusammen bekommen. Dann allerdings ohne LCD.

Matthias

von Joern Gerhard (Gast)


Lesenswert?

Also ich habe das gerade mal das mit dem Terminalmode ausprobiert
(neustes winavr und neuste firmware stk500 und USB-seriell-wandler von
reichelt mit sipex chip oder so (nicht ftdi, sondern billig)).
Also das "dump 0 1000" dauert etwa 2 1/2 sekunden mit dem
USB-Wandler.
Genauso schnell, wie über die normale serielle.

Das Gehäuse ist zwar ein bischen durchsichtig (blau), aber man kann
nicht viel erkennen, öffnen ist unmöglich, da alles in dem blauen Gummi
eingespritzt ist.
Den Chip gibt es wohl auch eher in Japan, als hier. Ist mehr eine
Preiswertkopie des FTDI - läuft aber gut.

Es gibt aber massenweise FTDI-Bauanleitungen im Netz (auch mit
Schaltplan). Oder in die tausenden ELV-Projekte (ELV-Journal ->
Bücherei) gucken, die bauen den FTDI derzeit fast überall ein
(Ladegeräte, Thermometer, ...). Schaltpläne sind auch auf der FTDI
Website zu finden.

cu joern

von Joern Gerhard (Gast)


Lesenswert?

Oder auch bei ELV im Shop sind Bauanleitungen zum kostenlosen download:
68-560-11
68-567-32
Sind z.B. zwei Geräte, die den FTDI245 oder den FTDI232 benutzen.

Einfach Nummer in Shop tippen.

cu joern

von Joern Gerhard (Gast)


Lesenswert?

Mir fällt noch was an deinem Board auf, wo ist die USB-Buchse?
Sie sollte direkt in der Nähe des FTDI sein und nicht weit weg oder per
Fädeldraht verbunden. Vielleicht ist dein Layout einfach wenig optimal
und du (bzw. der FTDI) kämpft mit Fehlern in der Übertragung?

USB ist immer etwas empfindlich in solchen Dingen und erfordert ein
gutes Layout (Masseschleifen, Groundplane, usw).

Am besten sich nach einem funktionierenden Layout richten.

In der Uni habe ich übrigends auch keinen Geschwindigkietsunterschied
(bei Einstellung "-p avr910" und einem Bootloader) zwischen seriell
und USB feststellen können, obwohl (!) avrdude dämlicherweise die Words
einzeln schreibt, anstelle von pages, wie es Avrprog tut.

cu joern

von Matthias (Gast)


Lesenswert?

Hi

Es liegt garnatiert nicht am Layout bzw. an der Hardware. Das
funktioniert. Über den FTDI bekomm ich eine Netto-Dauertransferrate von
etwa 6MBit (lesend als auch schreibend). Das dürfte der USB bei Fehlern
wohl kaum schaffen.

Das Problem sind (bzw. waren) die 15ms Verzögerung zwischen zwei
einzelnen Paketen. Das der USB da von der Protokolleben bereits ein
Problem hat ist mir klar allerdings sind (waren) 15s deutlich zuviel.
Mit etwa 2ms hätte ich gerechnet, was je dann auch etwa auf deine
gemessenen 2,5s rausläuft.

Wie ich jetzt herausgefunden habe kann man im Treiber einen sog.
"Latency Timer" umstellen. Dieser steht standardmäßig auf 15ms (die
Zeit kommt mir irgendwie bekannt vor :-)

Stellt ich die auf 1ms um dauert ein "dump flash 0 1000" noch etwa
1,5s. Das hätte ich auch mal so erwartet.

Matthias

von Matthias (Gast)


Lesenswert?

Hi

Für alle neuen Leser dieses Threads:
Es geht um einen AVR-Programmierer der seine Daten über den USB
erhält.
Hardware:
http://www.mikrocontroller.net/attachment.php/93508/USBisp.jpg

ich bin jetzt so weit das das STK500 Protokoll fast komplett
implementiert ist. Programmieren (Flash und EEPROM) diverser Chips
(Mega8, Mega16, 90S2313, 90S8515, Mega8515) funktioniert mit dem
AVRStudio und avrdude. Ebenso setzen und lesen von Fuse und Lockbits.

Zum Zeitverhalten:
Für ein Write/Verify eines ATmega benötigt mein USBisp etwa 4 Sekunden.
Der original AVRisp von Atmel benötig etwa 18s. Der Fairness halber muß
ich noch erwähnen das der Vorteil bei 90S-AVR's und beim EEPROM
programmieren lange nicht so groß ist (dort etwa 10%)

Jetzt suche ich einen Betatester. Natürlich sollte es jemand sein der
sich in der Materie etwas auskennt und auch nicht nur einen AVR zuhause
hat. Als Entlohnung würde ich eine Platine stiften. Es sind noch keine
Bauteile drauf. Also heißt es selber bestücken. Wer Interesse hat
einfach hier melden.


Matthias

von kai (Gast)


Lesenswert?

Hallo,
habe mir jetzt vieles zu AVR-programmierung über USB durchgelesen und
bin teilweise etwas verwirrt.

Als ich kann nun mit einem FT-chip einen adapter bauen, mit dem ich
(ohne stk) einen mega programmieren kann!!??
nur, wie schnell und einfach (direkt mit avr-studio oder yaap) geht das
nun.
habe mal irgendwas von 15 minuten gelesen, dann wieder von doppelt
solang als seriell, dann wieder viel schneller.

was muss ich denn anders machen, wenn ich isp programmieren will? (um
einfach mit einem jumper zwisachen isp und normalbetrieb umstellen zu
können)

mfg
 Kai

von Tobi (Gast)


Lesenswert?

du kannst auch ohne ftdt chip einen adapter bauen um einen mega zu
flashen. vielliehct solltest du etwas mehr zu isp bei avr's allgemein
durchlesen.
der ftdi chip ist nur eine transparente rs232 brücke über usb. daran
kann ein ganz normaler serieller programmer gehangen werden der nicht
mitbekommt, dass er jetzt über usb läuft.
am pc wird eine serielle schnittstelle simuliert, so dass jedes
programm benutzt werden kann, dass auch mit einem seriellen programmer
verwendet werden kann (z.b avr studio oder yapp)

von kai (Gast)


Lesenswert?

möchte schon über usb isp programmieren (notebook ohne serielle
schnittstelle)

habe halt nur oft gelesen, dass es sehr langsam seinen soll

von Patric (Gast)


Lesenswert?

Wenn du aus Interesse und Spass am Basteln einen USB <-> RS232
Konverter
 bauen willst, geht das einfach mit dem FT232BM. Die Bremse dabei ist
weniger der FTDI Chip, sonder eher der RS232 Levelshifter. Aber auch
hier gibt es schnellere Chips (z.B. Sipex).

Brauchst du den Konverter nur zum Arbeiten und der Bau interessiert
dich weniger, dann kauf dir einen günstigen bei Reichelt. Mit Selbstbau
wirst du nicht günstiger wegkommen.

von Tobi (Gast)


Lesenswert?

das geschwindigkeitsproblem liegt nich direkt an der usb verbindung mehr
an dem protokoll, dass der programmer und der pc benutzen. usb braucht
durch den ganzen protokollkram länger bis was ankommt und wenn der pc
nach jedem gesendeten byte auf eine bestätigung vom programmer wartet
wird die verbindung sehr langsam. bei protokollen die immer gleich
einen ganzen block rüberschicken und dann auf eine bestätigung warten
hat man das problem nicht. bin mir bloss im mom nicht sicher welcher
programmer welches der beiden verfahren benutzt. ich glaub das stk500
protokoll war das blockorientierte

von kai (Gast)


Lesenswert?

erstmal möchte ich einfach meinen avrs über usb programmieren

wie geht dass am schnellsten

von Tobi (Gast)


Lesenswert?

fertig usb<-->rs232 konverter z.b von reichelt + normaler serieller
programmer, z.b eigenbau oder der original atmel programmer (gibts auch
bei reichelt). zusammenstecken und fertig

von Martin (Gast)


Lesenswert?

Hallo Matthias

Kannst du mir mal bitte das Datenblatt für das STK500-Protokoll posten?
Ich suche bereits danach.

Danke Tschüss

Martin

von Matthias (Gast)


Lesenswert?

Hi

findest du bei Atmel.

Matthias

von kai (Gast)


Lesenswert?

Danke,
werde es mal mit nem adapter versuchen.nur welche modifikationen sind
noch nötig, damit er "Schnell" läuft?

von Martin (Gast)


Lesenswert?

Hallo Matthias!

Habe mir die Datenblätter runtergeladen und schon etwas angeschaut.

Eine Frage habe ich jedoch.
Das AVR-Studio fragt zu Beginn verschiedene Parameter ab:
z.B.
Parm_STK_HW_VER  - Das Programmiergerät muss mit einen Wert (Value)
antworten. Welchen Wert muss hier das Programmiergerät zurückschicken.

oder z.B. bei

Parm_STK_SW_MAJOR

Danke für deine Hilfe.

Tschüss

Martin

von Matthias (Gast)


Lesenswert?

Hi

HW_VER ist AFAIK egal.

SW_MINOR  0x05
SW_MAJORR 0x01


Matthias

von Martin (Gast)


Lesenswert?

Hallo

Woher hast du diese beiden Werte, ich finde sie nicht im Datenblatt.

Danke

Tschüss.

von Matthias (Gast)


Lesenswert?

Hi

das meldet der originale AVRISP.

Matthias

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.