Forum: Mikrocontroller und Digitale Elektronik Arduino als Universal-ISP-Programmer?


von philipp (Gast)


Lesenswert?

Hallo,

auf der Arduino-Seite finden sich Hinweise, wie man einen typgleichen 
AVR mit Hilfe eines Arduino per ISP programmieren kann. Aber gibt es 
auch die Möglichkeit, aus dem Arduino einen Universal-Programmierer zu 
machen? Ich würde gerne mit dem Arduino anfangen, kenn mich aber auch 
etwas mit den "normalen" AVRs aus. Ich stelle mir also vor, auf meinem 
Rechner mit dem GCC ein Hexfile zu kompilieren und das dann mit dem 
Arduino auf den AVR zu bringen.

Weiß jemand, ob es ein entsprechendes Projekt gibt? Ich kenne den 
ISP-Programmierer von Thomas Fischl, hab es aber nicht geschafft, diesen 
nachzubauen (bzw. nachbauen schon, aber als er dann nicht funktioniert 
hat, hab ich es einfach aufgegeben).

Viele Grüße, Philipp

von TestX .. (xaos)


Lesenswert?

möglich ja...nur ich würde dir da als anfänger ABSOLUT von abraten, denn 
nichts ist frustrierender als wenn man seine software nicht in den 
controller downloaden kann....daher mein rat: investiere 40€ in einen 
originalen AVR ISP MKII - der kann alle gängigen AVRs programmieren und 
funktioniert zu 100% im ggs. zu vielen nachbauten.

ansonsten: das ISP protokoll vom atmel ist dokumentiert (in den 
datenblättern ganz am ende oder auf der avr website). du kannst dir aber 
auch einfach einen beliebigen avr programmer mit verfügbaren quelltext 
nehmen und versuchen das auf den arduino zu bringen ... wird einiges an 
arbeit für die du definitiv ein oszilloskop (mehrkanal) oder einen 
logic-analyzer benötigst!

von Jürgen S. (jurs)


Lesenswert?

philipp schrieb:
> auf der Arduino-Seite finden sich Hinweise, wie man einen typgleichen
> AVR mit Hilfe eines Arduino per ISP programmieren kann. Aber gibt es
> auch die Möglichkeit, aus dem Arduino einen Universal-Programmierer zu
> machen?

Nein. Jedenfalls nicht so ohne weiteres.

> Ich würde gerne mit dem Arduino anfangen, kenn mich aber auch
> etwas mit den "normalen" AVRs aus. Ich stelle mir also vor, auf meinem
> Rechner mit dem GCC ein Hexfile zu kompilieren und das dann mit dem
> Arduino auf den AVR zu bringen.

Ich verstehe nicht genau, was Du meinst. Willst Du am Ende einen 
beliebigen AVR-Controller in einem beliebigen anderen Board 
programmieren, mit einer Datei, die mit einem beliebigen anderen 
Entwicklungssystem compiliert wurde? Oder soll ein Arduino-Board mit 
einer Datei programmiert werden, die nicht mit der 
Arduino-Entwicklungsplattform erstellt wurde?

> Ich kenne den ISP-Programmierer von Thomas Fischl, hab es aber
> nicht geschafft, diesen nachzubauen (bzw. nachbauen schon, aber
> als er dann nicht funktioniert hat, hab ich es einfach aufgegeben).

Den USBASP-Programmer gibt es vom China-Versender glaube ich für 3 Euro 
mit 30 Tagen Lieferzeit. Dann brauchst Du noch einen 10-auf-6-Pol 
Adapter zum Anschließen und Du kannst die Arduino-Hardware 
programmieren, womit Du möchtest.

Im übrigen: Wenn Du schreibst "Ich würde gerne mit dem Arduino 
anfangen", dann mache Dich mal frei von der Vorstellung, dass Du einen 
"ISP-Programmer" benötigst, um ein Arduino-Board zu programmieren. In 
der Arduino-Plattform sind alle Boards mit Controllern bestückt, auf 
denen bereits ein "Bootloader" läuft. Dadurch lassen sich Arduino-Boards 
aus der Arduino-Entwicklungsumgebung heraus OHNE Programmer 
programmieren, einfach über den USB-Anschluss.

Nachteilig daran ist eigentlich nur, dass der Arduino-Bootloader immer 
schon ca. 2 KB vom Programmspeicher wegfrisst, so dass Du auf einem 
Atmega328-Board ("Uno") dann nur tatsächlich ca. 30 KB Programmspeicher 
zur Verfügung hast statt 32 KB.

Du KANNST bei Arduino zwar Programme auch per ISP-Programmer hochladen, 
um beispielsweise volle 32 KB Programmspeicher auf einem Atmega328 
nutzen zu können statt nur 30 KB. Aber solange Du die 
Arduino-Entwicklungsumgebung zum Programmieren eines Arduino-Boards 
verwendest, brauchst Du definitiv KEINEN ISP-Programmer.

von philipp (Gast)


Lesenswert?

Hallo Andi,

vielen Dank für die Antwort! Auf dem Speicher hab ich auch noch das 
STK500v2, allerdings hab ich keinen seriellen Anschluss mehr am Rechner. 
Es scheint ja aber USB-Adapter zu geben, mit denen das (mit etwas Glück) 
funktioniert. Und damit kann ich dann endgültig ISP programmieren. Du 
hast auch völlig Recht, wenn man sich nicht auf den Programmiervorgang 
verlassen kann, dann verschwendet man schnell mehr Zeit als so den 
Gegenwert eines fertigen Adapters.

Gruß, Philipp

von philipp (Gast)


Lesenswert?

@Jürgen: Meine Frage ist vielleicht missverständlich. Ich will auf den 
Arduino-Zug aufspringen, hab aber noch diverse "andere" AVRs auf dem 
Speicher liegen und es ist nicht auszuschließen, dass ich mal wieder in 
Versuchung komme, völlig unabhängig vom Arduino damit was zu machen. 
Momentan hab ich aber keine funktionierende Programmierlösung (STK500v2, 
aber keinen seriellen Anschluss und keinen Adapter), und die Frage war 
eigentlich nur, ob man aus dem Arduino sowas wie den USBASP machen kann 
(und es sowas fertig gibt).

Gruß, Philipp

von Tom M. (tomm) Benutzerseite


Lesenswert?

philipp schrieb:
> auf der Arduino-Seite finden sich Hinweise, wie man einen typgleichen
> AVR mit Hilfe eines Arduino per ISP programmieren kann. Aber gibt es
> auch die Möglichkeit, aus dem Arduino einen Universal-Programmierer zu
> machen?

Vielleicht hast du was missverstanden? Mit Hilfe des Arduino Boards und 
passender Firmware drauf kannst du es als ISP für eine breite Palette an 
AVRs einsetzen.

Siehe z.B. dieses Projekt:
http://www.arduino.cc/playground/Code/MegaISP

Damit wird dein Arduino zum Universal-ISP für AVRs.

von G_a_s_t (Gast)


Lesenswert?

So hatte ich das früher mal gemacht:
Es war aber etwas nervig, bis ich unter Linux alles (z.B. das veraltete 
und gepatchte avrdude) richtig zum Laufen bekommen hatte.

www.geocities.jp/arduino_diecimila/bootloader/index_en.html


Und noch was für die Arduinoplattform:

arduino.cc/en/Tutorial/ArduinoToBreadboard

von philipp (Gast)


Lesenswert?

@Tomm: Super, genau sowas hatte ich gesucht! Da aber auf der Seite doch 
einige "..., aber ..." und " ... funktioniert nicht mit ... " stehen, 
werd ich es zwar mal ausprobieren wenn mein Arduino da ist, mir aber 
über kurz oder lang doch einen richtigen Programmer zulegen oder mein 
STK500 fit machen. Ich glaube, was ich gelesen hatte, war, wie man es 
schafft, mit dem Arduino einem anderen (typgleichen) AVR den 
Arduino-Bootloader aufzuspielen, damit man diesen dann separat mit der 
Arduino-Umgebung priogrammieren kann (auch interessant, aber nicht ganz 
was ich wollte).

Vielen Dank für eure Antworten!

Gruß, Philipp

von G_a_s_t (Gast)


Lesenswert?

oder heute auf DangerousPrototypes gefunden:
dangerousprototypes.com/2012/10/28/tutorial-arduino-as-barebones-avr-pro 
grammer/

von Hubert G. (hubertg)


Lesenswert?

philipp schrieb:
> Auf dem Speicher hab ich auch noch das
> STK500v2, allerdings hab ich keinen seriellen Anschluss mehr am Rechner.
> Es scheint ja aber USB-Adapter zu geben, mit denen das (mit etwas Glück)
> funktioniert.

Also ich habe mein STK500 schon mit verschiedenen USB_RS232 Adapter 
probiert, funktionierte immer. Ich denke mal du verwechselst das mit den 
Bit-Bang-Programmer und PonyProg, dort funktioniert fast nichts.
Das einzige Problem das es gibt ist, wenn dem Adapter eine zu hohe 
COM-Adresse zugeordnet wird. Das lässt sich aber meist leicht lösen.

von Marius (Gast)


Lesenswert?

Ich habs mit meinem Arduino nicht hinbekommen.
Daher einfach um 15€ einen mysmart usb light gekauft, geht 1A

von aro (Gast)


Lesenswert?

philipp schrieb:
> Es scheint ja aber USB-Adapter zu geben, mit denen das (mit etwas Glück)
> funktioniert. Und damit kann ich dann endgültig ISP programmieren.

> hab aber noch diverse "andere" AVRs auf dem
> Speicher liegen und es ist nicht auszuschließen, dass ich mal wieder in
> Versuchung komme, völlig unabhängig vom Arduino damit was zu machen.

Such im Netz mal nach "guloboard", denke, das hilft dir weiter, 
möglichst viele verschiedene AVRs zu programmieren. Weiß ja nicht, was 
du alles für Typen auf deinem Speicher findest. :-)

von Thomas E. (thomase)


Lesenswert?

Marius schrieb:
> Ich habs mit meinem Arduino nicht hinbekommen.
Das Thema taucht hier ja regelmässig auf. Immer die gleichen Antworten, 
die selben Links und irgendwann läuft der Thread sich tot.
Wissen alle nur, daß das irgendwie gehen soll. Aber hat das überhaupt 
schon mal jemand hinbekommen?

mfg.

von pansen (Gast)


Lesenswert?

Ich habe das schon mit diversen Atmel Dinger gemacht.

Das Prinzip geht so.

- Atmel aufs Breadboard

- MISO/MOSI/VCC/GRD/RST Pins des Atmel mit dem Arduino (nach 
Beschreibung!) verbinden

- arduino-tiny unter 'hardware' ins Sketch-Verzeichnis kopieren.
 http://code.google.com/p/arduino-tiny/downloads/list

- Sketch in den Adruino laden (unter Beispiele/Adruino ISP)

- Atmel Programm schreiben,

- Bei Tools/Beard das entsprechendes 'Board/Atmel' einstellen

- in den Atmel hochladen per Menupunkt 'Arduino-ISP'

Geht eigentlich ganz gut.

Nachteil ist dass relativ wenige Atmels unterstützt werden. (25er, 44er, 
2313er Reihe)

Und von der Arduino Bib wird (noch) nicht die gesamte API unterstützt

Hat ein bisschen was nerdiges. Nach dem Motto, mal schaun was man so 
alles machen kann ;)

von Jürgen S. (jurs)


Lesenswert?

philipp schrieb:
> @Jürgen: Meine Frage ist vielleicht missverständlich. Ich will auf den
> Arduino-Zug aufspringen, hab aber noch diverse "andere" AVRs auf dem
> Speicher liegen und es ist nicht auszuschließen, dass ich mal wieder in
> Versuchung komme, völlig unabhängig vom Arduino damit was zu machen.
> Momentan hab ich aber keine funktionierende Programmierlösung (STK500v2,
> aber keinen seriellen Anschluss und keinen Adapter), und die Frage war
> eigentlich nur, ob man aus dem Arduino sowas wie den USBASP machen kann
> (und es sowas fertig gibt).

Den USBASP-Programmer vom China-Versender gibt es für 3 Euro.
Das billigste Arduino Uno "kompatible" Board kostet 12 Euro.

Welche Controller der USBASP-Programmer unterstützt, sieht man hier 
unter "Supported Devices":
http://www.bestelecs.com/download/usbasp/USBAsp_User_Guide_eBay.pdf

Ich frage mich, weshalb man ein 12 Euro "teures" Gerät dazu verwenden 
möchte, um mit viel Frickelei und Kosten für zusätzliche Bauteile dann 
am Ende und mit vielen Fragezeichen vielleicht ein 3 Euro "billiges" 
Gerät in seiner Funktion nachzubilden. Das dann vielleicht nur ein bis 
zwei der Atmegas programmieren kann, die auf Arduino-Boards verbaut sind 
plus vielleicht einen ATTiny Typen. Was für ein Gefrickel!

Wenn Deine AVR-Controller auf dem Speicher in der "Supported Devices" 
Liste vom USBASP stehen, würde ich jedenfalls eher in Erwägung ziehen, 
die 3 Euro für so einen USBASP ZUSÄTZLICH zur Anschaffung eines 
Arduino-Boards in Erwägung zu ziehen.

Das wäre bei einem Einstieg in die Arduino-Plattform ja spätestens dann 
sinnvoll, wenn Du die letzten 2 KB Programmspeicher belegen möchtest, 
die sonst der Bootloader belegt. Oder wenn Du die Arduino-Hardware nicht 
mit der Arduino-Entwicklungsumgebung programmieren möchtest.

von Museumswärter (Gast)


Lesenswert?

Jürgen S. schrieb:
> Welche Controller der USBASP-Programmer unterstützt, sieht man hier
> unter "Supported Devices":
> http://www.bestelecs.com/download/usbasp/USBAsp_User_Guide_eBay.pdf

Die Geräte-Liste ist aber ausm Museum, oder? Da fehlen alle AVR, die 
etwas neuer als 3 oder 4 Jahre alt sind.

Außerdem: bei den USBASP immer darauf achten, dass die neueste 
Firmware drauf ist! Sonst kannst du einige AVR gar nicht 
programmieren, wenn sie auf einem niedrigeren Takt laufen. Das heißt, du 
musst du den Programmer erst einmal upgraden, und dafür brauchst du 
einen zweiten Programmer.

Ansonsten kann ich deinen Post aber nur unterstützen. :-)

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.