Forum: Mikrocontroller und Digitale Elektronik Vieles gelesen, trotzdem: Welcher AVR-Programmer/Welche IDE??


von Karl Ium (Gast)


Lesenswert?

Guten Morgen!

Ich wollte mal langsam in die µC-Programmierung einsteigen. Da ich 
einigermaßen mit dem Lötkolben umgehen kann und inzwischen auch mit 
C/C++-Erfahrungen gesammelt habe, ist das wohl der nächste logische 
Schritt. ..Wer möchte schon gerne für ein simples Lauflicht oder 
LED-Geblinke extra seinen PC hergeben, oder es in Analog-Elektronik 
realisieren..

Mir fehlt da etwas der Überblick, was Programmieradapter und IDEs für 
µCs angeht. Sehe ich das richtig, dass sich die Anzahl der Adapter 
hauptsächlich aus vielen Klonen weniger Originale ergibt?! Falls ja 
welche Originale gibt es und welches ist "das beste"??
Gelesen habe ich z.B. von diversen "AVRISP MK2" oder "STK500 
Emulatoren". Reicht es, sich darauf zu konzentrieren und wenn ja, 
welcher der Beiden ist besser?

Jetzt suche ich also, kurz gesagt, nach dem einen Programmieradapter 
unter vielen. Und vielleicht finde ich auch einen, da ich wenigstens 
schon einige Vorstellungen habe:

 - "wenig teuer" (falls mir auffällt, dass er ausreicht, oder eben nicht 
der richtige ist); ca. 5€ (?!) , -> 20€ <- , wenn es sich lohnt 40€
 - möglichst universell und zukunftssicher, sofern das überhaupt nötig 
ist
 - ohne "Testboard" - dafür nehme ich einfach ein Breadboard + Bauteile
 - via USB an den PC
 - möglichst ohne Extras mit allen IDEs lauffähig (wenns geht sogar ohne 
Treiber), und das auch noch simpel..
 ... Ich aber bislang immer CodeBlocks benutzt, wo es auch AVR-Projekte 
gibt (via winAVR, wenn ich das richtig sehe). Dabei würde ich auch 
bleiben, wenn der Rest nur Gleiches in Grün ist. *
Einen Programmieradapter kann man da aber nicht direkt einbinden, 
oder???
Falls nein, was müsste ich dann machen, damit es mit CodeBlocks geht? - 
Nur zum Verständnis, wie die Toolchain überhaupt aussieht..
- weiter Programmier-Frequenzbereich (evtl gegen falsch gefuste µCs, 
oder für schnelles Programmieren etc., unnötig?)
- eigene Spannungsversorgung, oder µC-Spannungserkennung?

Man kann wohl nicht alles haben, besonders wenns "wenig teuer" sein 
soll..

Vielleicht kann mir jemand seine Erfahrungen mitteilen und mich auf Vor- 
und Nachteile hinweisen, oder ein neueres/besseres Modell.
Hier mal eine kleine Auswahl an Adaptern:

1. Extra günstig:
https://www.ebay.de/itm/USBASP-USBISP-USB-ASP-Programmierer-blau-fuer-KK2-SimonK-Arduino-AVR-Atmel-PIC-/182513591822?

2. Offenbar überall erhältlich:
https://www.diamex.de/dxshop/DIAMEX-USB-ISP-Programmer-Stick-fuer-AVR
https://www.conrad.de/de/programmieradapter-diamex-7200-usb-isp-stick-avr-842379.html
..beim Hersteller etwas günstiger??

3. Wo ist der Unterschied zu 2.?
https://www.pollin.de/p/programmer-olimex-avr-isp-mk2-702437
https://www.olimex.com/Products/AVR/Programmers/AVR-ISP-MK2/open-source-hardware
...beim Hersteller viel günstiger??


4. Veraltet, oder?
https://www.pollin.de/p/atmel-evaluations-board-v2-0-1-fertigmodul-810074


* Statt CodeBlocks könnte man wohl auch noch AVRStudio, ArduinoIDE, 
AVRDUDE,... nehmen. Was davon würdet ihr mir empfehlen?
Ist AVRDude überhaupt eine IDE?


Danke an alle, die nen Tipp für mich übrig haben!
Gruß
Karl

von Kurt (Gast)


Lesenswert?

Mit diesen Programmieradapter:
https://www.ehajo.de/baus%c3%a4tze/programmieradapter.html
programmiere ich die Atmel 8Bit MC's.
AVRStudio oder Arduino IDE sind OK.

Gruß
Kurt

von fop (Gast)


Lesenswert?

Hi,
Du scheinst Dich ja schon mal mit den AVRs auf eine Prozessorfamilie 
festgelegt zu haben. Gut, denn dafür gibt es schon mal einen kostenlosen 
C(++)-Compiler.
Bei der Verbindung von PC zur Zielhardware gibt es dabei 2 lass es mich 
Klasssen nennen :
2. Klasse -> nur Programmieren
1. Klasse -> Programmieren und Debuggen

In beiden Klassen bekommt man Adapter mit oder ohne Gehäuse.

Wie Du schon bemerkt hast, gibt es dabei Originale von Microchip und 
Nachbauten.

Da es die AVRs schon eine Zeit lang gibt, auch noch Modelle für den 
parallelen Druckerport, welche für den Anschluss an eine RS232 
Schnittstelle (manche davon machen Bitbanging) und die aktuellen mit 
USB.

Für gelegentliche Projekte und zum Erfahrungen sammeln auf die harte 
Tour geht's auch ohne Debugger. Mit einer Led kann man man schon viele 
Infos raus geben. Bekommt man aber schon das "eine Led blinken lassen" - 
Programm nicht zum Laufen wird's übel.

Aufbauten ohne Gehäuse sind immer empfindlicher. Es soll Leute geben, 
die schon mehrere Dragons auf dem Gewissen haben. Für Hobby ist aber 
eine nackte Platine meist ausreichend.

Ich würde mir nur noch was mit USB-Anschluss besorgen. Alles Andere ist 
auf die ein oder andere Weise veraltet und wird schon jetzt oder bald 
nicht mehr unterstützt. Bitbanging über einen USB auf RS232 Umsetzer, 
muss auch nicht unbedingt (zügig) funktionieren.

Ich habe mal mit WinAvr angefangen. Als Paket wird das glaube ich auch 
nicht mehr weiter entwickelt. Du müsstest Dir dann halt die enthaltenen 
Programme einzeln updaten.
Mittlerweile nutze ich AVR-Studio. Das ist natürlich ein Monsterpaket. 
Da ist MS-Visual-Studio als IDE drin versteckt. AVR Studio erkennt von 
sich aus nur USB-Adapter zur Hardware.

Dann gibt es da noch die Arduinos. Die haben meist schon einen 
USB-Anschluss an ihren Platinen und einen Bootloader, damit Du die 
Software ohne ein zusätzliches Stück Hardware auf das Board bekommst.
Ausserdem gibt es dafür viel im Netz. Wobei da auch viel dabei ist, was 
meist funktioniert, aber dann doch nicht 100%ig ausgereift ist. Vor 
allem, wenn mehrere Sachen zusammen in einem Programm arbeiten sollen.

von Matthias S. (Firma: matzetronics) (mschoeldgen)


Lesenswert?

Der AVRISP MkII ist abgekündigt, kann kein Debugging, aber dafür 
sämtliche bis jetzt vorhandenen Spielarten der Programmieralgorithmen, 
die sich Atmel bis dato ausgedacht hatte, also ISP, TPI und PDI - nur 
bei JTAG muss er passen.
Das reicht also vom Tiny10 bis zum XMega.
Ach noch was. Die neuere IDE heisst 'Atmel Studio', die ältere heisst 
'AVR Studio' (bis zur Version 4). Nicht verwechseln.

: Bearbeitet durch User
von Axel S. (a-za-z0-9)


Lesenswert?

Karl Ium schrieb:

> Mir fehlt da etwas der Überblick, was Programmieradapter und IDEs für
> µCs angeht. Sehe ich das richtig, dass sich die Anzahl der Adapter
> hauptsächlich aus vielen Klonen weniger Originale ergibt?!

Nein. Schau dir bei avrdude die Liste der Programmieradapter an. Das 
sind alles "Originale".

> Falls ja welche Originale gibt es und welches ist "das beste"??

Diese Frage ist in etwa so sinnvoll wie "welches Auto ist das beste?"

> Gelesen habe ich z.B. von diversen "AVRISP MK2" oder "STK500
> Emulatoren". Reicht es, sich darauf zu konzentrieren und wenn ja,
> welcher der Beiden ist besser?

Das läßt mich vermuten, daß deine Zielplattform µC der AVR8 Familie sind 
(ehemals Atmel, jetzt Microchip). Das wäre eine wesentliche 
Information gewesen.

Andererseits findest du alles (bzw. mehr als das) zu diesem Thema im 
hiesigen Artikel AVR In System Programmer

>  - "wenig teuer" (falls mir auffällt, dass er ausreicht, oder eben nicht
> der richtige ist); ca. 5€ (?!) , -> 20€ <- , wenn es sich lohnt 40€

Am teuersten sind die "Originale" von Atmel (bzw. jetzt Microchip).

>  - möglichst universell und zukunftssicher, sofern das überhaupt nötig
> ist

"Universell" ist zu unspezifisch. Es gibt jetzt schon mindestens 4 
Programmierverfahren für µC der AVR8 Familie: ISP (die meisten "alten"), 
PDI (xMega), TPI (kleine Tinies) und UPDI (ganz neue Tinies). Zusätzlich 
noch zwei Debug-Schnittstellen: Debugwire und JTAG. Wobei PDI und UPDI 
jeweils auch zum Debuggen verwendet werden können.

Welches Schweinderl hättens denn gern?

Halbwegs zukunftssicher sind die Original-Adapter, weil da der 
Hersteller sich um die Firmware kümmert und neue Verfahren 
implementiert. Oder auch nicht. Z.B. UPDI gibt es nur für die neuesten 
Adapter.

>  - möglichst ohne Extras mit allen IDEs lauffähig (wenns geht sogar ohne
> Treiber), und das auch noch simpel..

Das schränkt dich dann automatisch auf die Originale ein. Denn die IDE 
vom Hersteller (AVR-Studio etc.) können von Haus aus nur mit den 
Adaptern eben jener Hersteller.

> * Statt CodeBlocks könnte man wohl auch noch AVRStudio, ArduinoIDE,
> AVRDUDE,... nehmen. Was davon würdet ihr mir empfehlen?

Gar keine IDE. Such dir einen Editor aus und lern Makefiles zu 
schreiben.

> Ist AVRDude überhaupt eine IDE?

Nein. Avrdude ist ein Programm, das mit nahezu allen Programmieradaptern 
am Markt sprechen kann. Es ist ein weiteres Tool der Toolchain. Andere 
wären der bereits genannte Editor, Compiler und Linker, sowie make.

: Bearbeitet durch User
von Nörgeljörgel (Gast)


Lesenswert?

>Das schränkt dich dann automatisch auf die Originale ein. Denn die IDE
>vom Hersteller (AVR-Studio etc.) können von Haus aus nur mit den
>Adaptern eben jener Hersteller.

Das ist nicht wahr.

von Stefan F. (Gast)


Lesenswert?

Ich bin nicht sicher, ob du dich bereits auf AVR festgelegt hast. Die 
sind sicher nicht schlecht, ich benutze sie selbst seit vielen Jahren 
gerne.

Allerdings kann man heute wesentlich leistungsfähigere STM32 Controller 
(und auch Boards) für weniger Geld bekommen.

Einfache Programmieradapter kosten für beide Chip Familien etwa gleich 
viel, nämlich ab 5 Euro.

Ein Debugger für AVR (Atmel-ICE) kostet mindestens 50 Euro. Mit Kabel 
und Gehäuse eher ab 70 Euro. Andererseits sind das langlebige Werkzeuge, 
deren einmaliger Kaufpreis nicht überbewertet werden sollte.


Der Programmieradapter für STM32 (ST-Link) kostet nur 5 Euro und kann 
auch debuggen. Wenn du debuggen willst, ist STM32 also erheblich 
billiger als AVR.

Für beide Familien bekommst du kostenlose IDE's. Bei AVR wäre das Atmel 
Studio aktuell, ich bevorzuge jedoch Netbeans (leider ohne Debugging). 
Bei STM empfiehlt der Hersteller die "System Workbench for STM32", sie 
basiert auf Eclipse und unterstützt Debugging.

Was man bedenken sollte ist, dass vor allem Anfänger für AVR viel mehr 
einfache Beispielprojekte und Hilfestellungen im Internet finden können, 
als bei STM32. Das Informationsangebot für STM32 würde ich für Anfänger 
als gerade eben ausreichend bezeichnen.

Im AVR Umfeld würde ich Einsteigern zwei Modelle empfehlen: Den kleinen 
ATtiny13A als "nackten" IC und einen mittelgroßen ATtiny328P als Modul 
mit USB-UART Schnittstelle (bekannt als Arduino Nano).

Im STM32 Umfeld empfehle ich für den Anfang ein STM32F103C8T6 Board. Das 
ist zur Zeit sehr billig und bei Bedarf kann man sich später sowohl 
kleinere als auch größere Modelle anschauen.

von CBTyp (Gast)


Lesenswert?

Nur zur info:
Du kannst meistens weiterhin Codeblocks verwenden. Fürs programmieren 
auf alle fälle. Falls du etwas automatisieren willst (z.B. das 
Programmieren auf einen Menu Eintrag legen) fragst du am besten im 
Forum. Die helfen meistens schnell.

Beim debuggen wird es bei den AVR schwierig. Da ist eigentlich nur das 
Atmel studio einfach, da atmel nicht gdb unterstützt (den quasi Standard 
fürs debuggen). Es gibt auch AvrICE um zu debuggen, scheint aber seit 
2016 kein code update mehr bekommen zu haben. Mit avrice ist es möglich 
in codeblocks zu debuggen.

Wenn du wirklich Zukunft sicher sein willst besorgst du dir einen SWD 
Programer und benutzt ARM Controller wie z.B. den schon erwähnten SMT32, 
welcher z.B. billiger ist als so mancher AVR. Am Anfang sind sie evt ein 
bisschen schwieriger zu programmieren, aber sobald du etwas 
komplizierter wirst, z.B. floating point benutzen willst, oder mit einer 
vernünftigen geschwindigkeit debuggen willst bist du mit SMT32 viel 
besser dran als mit AVR (und das sage ich als absoluter AVR Jünger 
(zumindest bis Microchip sie gekauft hat))

von Karl Ium (Gast)


Lesenswert?

Danke für alle Antworten. Das hat mir schon viel weiter geholfen. Ich 
werd hier mal zusammenfassend antworten..


Sehe ich das richtig, dass der Bausatz von ehajo relativ abgespeckt ist 
und etwas spezielle Treiber besitzt? ..Z.B. relativ langsam ist, oder 
beschränkt, was die Spannungen angeht..?!


Also ich habe mich nicht wirklich auf AVR festgelegt. Dass ich z.B. gar 
nicht mit float arbeiten können würde, war mir nicht bewusst. Ist das in 
der Praxis schlimm? Wie sieht es z.B. mit Audio-Anwendugen, wie einem 
eigenen mp3-Player aus - braucht es dafür nicht floats?
Auf einen Debugger lege ich erstmal nicht so viel Wert (was bestimmt ein 
Fehler sein wird..). Solange ich den µC am PC simulieren und dadurch 
debuggen kann, müsste das doch reichen, oder?
Arduinos will ich eigentlich umgehen (aber evtl nicht die Arduino IDE) 
und mir lieber selbst ein Arduino zusammenbauen. Wer braucht schon einen 
Bootloader, wenn er keinen braucht;)..


Ich habe gelesen, dass die AVRISP MKII-Klone unterschiedliche Firmware 
brauchen, je nachdem, welche IDE/Software man nutzt (ATMEL 
Studio/AVRDude/Arduino Studio / AVR Studio?). Stimmt das so und ist das 
nicht eher lästig bzw. hacky..?!
Sonst wär ich eigentlich dabei, denn damit könnte ich noch die ~5 
zusätzlichen Tiny-s und die neueren (wobei ich mich frage, ob ich jemals 
dazu kommen werde) programmieren.


Angenommen, ich bleibe wirklich bei CodeBlocks als IDE
- verpasse ich da irgendwelche super-duper Vorteile der speziellen IDEs, 
z.B. soetwas wie ein "GUI-Designer"-Äquivalent. Bei Bascom habe ich z.B. 
in einem Tutorial gesehen, dass man einfach einen Pixel-Editor für LCDs 
nutzen kann.
Würde ich mir dadurch nur alles unnötig verkomplizieren, oder ist das 
nur viel Zuckerguss?
- bin ich dann auf ARVDude angewiesen??


Kann man STM32-Controller genau so "frei" programmieren? Wenn sie besser 
und günstiger sind UND float können - warum nicht (auch).. Hab dafür 
auch einen Programmieradapter gesehen, allerdings braucht es dazu wohl 
einen Bootloader seitens des STM32.. Ist das normal so?
Es handelt sich dabei genauer gesagt um einen Hybriden, der alle 
Hersteller programmieren können soll. 5 € hätte ich für einen separaten 
aber noch übrig, wenns sein muss..


Hat zufällig jemand den direkten Download-Link zu der Weiterentwicklung 
von winAVR?? Oder ist Stand 2010 der aktuellste? Ohne den kann ich 
CodeBlocks wohl direkt knicken..



Aaalso...
1. Wenn ich das richtig sehe, lassen sich die Programmer auf 
STK500-Basis mit emuliertem COM-Port wesentlich leichter überall 
betreiben (auch AVRDude??)..ohne unsignierte Treiber oder evtl riskante 
Firmware-Updates - wenn ich da falsch liege, bitte nicht zurückhalten...
Der kleine Nachteil wäre, dass ich nur mit ISP kommunizieren könnte.
Sind die neuen Tiny-s und Megas es wert auf STK500 zu verzichten?

2. AVRISP-MKII kann mehr, aber nicht überall "gleichzeitig". Ist das ein 
Problem?!

3. Andere Programmer brauchen, wie es aussieht, oft irgendwelche Treiber 
von irgendwem. ..unsigniert, oder was ist z.B. wenn die Person plötzlich 
keine Lust mehr hat, weiter daran zu werkeln?! Dafür kosten sie quasi 
nichts.

Ich würd fast schon zu 1. tendieren, aber nur, wenn ich das alles so 
richtig sehe.. Danach 2., dann 3.
Und ihr so?!


Jetzt noch eine kleine Linksammlung zu den Programmern (so wie ich das 
verstehe), die man überall/beim Hersteller bekommt. Vielleicht hat ja 
jemand dazu noch ein Wort zu verlieren..

STK500er / kann var. Spannung bereit stellen:
https://www.diamex.de/dxshop/DIAMEX-USB-ISP-Programmer-Stick-fuer-AVR

der Nachfolger, oder nicht?? Steht ja nichts zum Funktionsumfang etc.:
https://www.diamex.de/dxshop/USB-ISP-Programmer-fuer-Atmel-AVR-Rev2
Kann der jetzt mehr, oder werden irgendwo Abstriche gemacht? - Nutzt 
jedenfalls ne andere INF..

AVRISP-MKIIer:
https://www.diamex.de/dxshop/Diamex-ALL-AVR-ISP-Programmer
Oder finde ich den jetzt doch besser...?!? DIESER Hersteller schreibt es 
funktioniert immer und überall, der andere (unten) verlangt 
Firmwareupdates wenn ich ihn richtig verstehe..

Programmer für "alle" µC-Hersteller:
https://www.diamex.de/dxshop/USB-ISP-Programmer-fuer-AVR-STM32-LPC-Cortex-Prog-S2
Ist das gut so, oder nichts Halbes und nichts Ganzes? Wundert mich 
nämlich, dass er quasi ein AVRISP-MKII beinhaltet, aber günstiger ist, 
als obiges Modell

Mal angenommen, ich lege mich auf diesen Hersteller fest, welcher der 
obigen wäre die 1. Wahl? ..Preislich tun die sich ja nicht viel..


Mit diesem Hersteller hier geht das ganze wieder von vorne los.. Sieht 
mir aber nicht so "neu" aus und umständlicher (und der Versand dauert 
bestimmt länger als direkt aus D):
https://www.olimex.com/Products/AVR/Programmers/
Wobei dieser mit seinem Massstorage-Mode ganz interessant klingt - macht 
z.B. AVRDude überflüssig:
https://www.olimex.com/Products/AVR/Programmers/AVR-ISP500-TINY/

Hat jemand noch ne Empfehlung zu Herstellern?!


Sooo, das wars auch schon...:)
Bin, dank eurer Hilfe, schon kurz davor mir was anzuschaffen - 
Weihnachten kommt dieses Jahr wohl etwas früher, wenn das so weiter 
geht.

von Karl Ium (Gast)


Lesenswert?

> Sooo, das wars auch schon...:)
..Fast..
Hab hier im Subforum gerade gesehen, dass es für ARMs ne extra IDE auf 
CodeBocks-Basis gibt
Also habe mich gefragt, wie die Toolchain bei ARMs wohl aussieht, bzw. 
was an Stelle des AVRDudes tritt
(Arduino IDE z.B. soll wohl eine AVRDude-Version beinhalten und 
AVR/Atmel Studio muss wohl auch sowas in der Art benutzen..)

Für AVR müsste es doch immer so sein:
Texteditor -> Compiler -> Hex-File -> "AVRDude" (wie nennt sich dieser 
Softwaretyp??) -> Treiber -> Programmer -> µC

Großartig anders kann es ja nicht sein, oder?


...Soooooooo, jetzt wars das aber erstmal.....

von pegel (Gast)


Lesenswert?

Karl Ium schrieb:
> Kann man STM32-Controller genau so "frei" programmieren?

Ja. Und das macht richtig Spaß.

Nucleo + STM32CubeMX + SW4STM32 = ungeahnte Möglichkeiten :)

von Stefan F. (Gast)


Lesenswert?

> Dass ich z.B. gar nicht mit float arbeiten können würde, war mir nicht
> bewusst.

Doch kannst du. Die Fließkomma-Operationen werden durch die C Bibliothek 
in Integer Operationen zerlegt, quasi so wie man das in der 5. klasse in 
der Schule lernt.

Das geht, ist aber sehr viel langsamer, als wenn man eine CPU verwendet, 
die Fließkomma-Funktionen enthält.

Die STM32F1 Serie hat auch keine Fließkomma-Einheit.

> der Bausatz von ehajo
Welcher?

> Auf einen Debugger lege ich erstmal nicht so viel Wert
> (was bestimmt ein Fehler sein wird..).

Nein, das ist kein Fehler. Ich hatte mir nach ein paar Monaten erst 
einen gekauft und am Ende liegt er doch nur in der Kiste herum. Denn das 
Debuggen von AVR's ist ätzend lahmarschig und stört den Ablauf des 
Programms. Mein erster Anwendungsfall war ein Roboter, dessen gesamte 
Fahr-Steuerung bei Debuggen völlig versagte. Eine Waschmaschine kannst 
du auch nur bedingt debuggen, wenn die die Wohnung nicht unter Wasser 
setzen willst. So ein Gerät zu haben beruhigt und ab und zu ist es 
nützlich. Aber die meiste Zeit eher nicht. Mit Log-meldungen komme ich 
besser zurecht (http://stefanfrings.de/avr_hello_world/index.html). Ich 
schätze, die Macher von Arduino sehen das ganz ähnlich.

> Arduinos will ich eigentlich umgehen (aber evtl nicht die Arduino IDE)

Aber die Arduino IDE und das Software Framework sind ja gerade die 
schlechten Komponenten! Die Hardware ist brauchbar und billig.

> Wer braucht schon einen Bootloader, wenn er keinen braucht;)

Denn kannst du löschen. Vergleiche mal preise. Du wirst seehn, daß so 
manches Arduino Board aus China komplett samt Bootloader weniger kostet, 
als der Mikrochip einzeln. Das trifft auf STM32F103 Module ebenso zu.

> Ich habe gelesen, dass die AVRISP MKII-Klone unterschiedliche
> Firmware brauchen

Ja leider. Aber avrdude läuft mit jeder Firmware und lässt sich 
wunderbar in ein Build Script (oder Makefile) einbauen. Außerdem ist 
avrdude flexibler, da es quasi alle Programmieradapter der Welt 
unterstützt. nach den ersten Klicki-Bunti Experimenten würde ich 
dringend empfehlen, avrdude zu benutzen. Dazu gibt es auch GUI's. Siehe 
meine Programm_Sammlung: http://stefanfrings.de/avr_tools/index.html

Spannen wird es bei Batteriebetrieb (ohne Spannungsregler). Dann 
brauchst du einen programmieradapter, dessen Ausgangsspannung sich an 
die Zielschaltung anpasst. Und das können nur wenige (Dragon, ICE und 
MkII können es). Andererseits bricht man sich in der Regel auch keinen 
Zacken aus der Krone, die batteriebetriebene Schaltung zum Programmieren 
provisorisch an ein Netzteil mit geregelten 3,3 oder 5V zu hängen.

> Wenn ich das richtig sehe, lassen sich die Programmer auf
> STK500-Basis mit emuliertem COM-Port wesentlich leichter überall
> betreiben

Ja, weil sie einen ordentlichen USB-UART Chip drauf haben. Andererseits 
würde ich nicht lange heulen, wenn mein billiger USBASP beim nächsten 
Windows Upgrade nicht mehr funktionieren würde. Wir reden hier von 
weniger als 5 Euro Verlust.

Bei STK500 Geräten musst du auf die Liste der unterstützten 
Mikrocontroller achten. Wenn da dein Lieblings-Chip nicht mit drin ist 
wird es ärgerlich. Die USBASP basierten Geräte sind flexibler, sie 
unterstützten generell ALLE AVR's - sofern sie denn eine ISP 
Schnittstelle haben. Die ganz kleinen mit weniger als 8 Pins und die 
großen Xmega Modelle haben keine ISP Schnittstelle. Sie sind für's Hobby 
allerdings ohnehin weniger attraktiv.

> AVRISP-MKII kann mehr, aber nicht überall "gleichzeitig". Ist das
> ein Problem?!

Gleichzeitig mehrere Chips programmieren ist wohl eher etwas für die 
Massenfertigung. Oder was meinst du mit "gleichzeitig"?

Ich empfehle die Programmer von Diamex über den USBASP Geräten, weil 
Diamex nicht nur 5V sondern auch 3,3V unterstüzt. Die meisten USBASP 
Geräte unterstützen nur 5V. Viele haben einen Schalter und Jumper für 
3,3/5V, aber damit schaltet man nur die Versorgungsspannung für die 
Zielschaltung um. Die Signale haben idiotischerweise trotzem 5V. Daher 
ist dieser Schalter eigentlich totaler Quatsch. Siehe 
https://www.mikrocontroller.net/attachment/226803/AC-PG-USBASP_03_LRG_1_.jpg

> funktioniert immer und überall

Inwiefern das Produkt von Diamex damit überein stimmt, kann ich nicht 
beurteilen.

Für den originalen stimmt die Aussage "funktioniert immer und überall" 
jedenfalls. Über Firmware Versionen würde ich mir (beim Original) keinen 
Kopf machen, denn die kann man jederzeit austauschen. Im AVR Studio ist 
die dazu passende Firmware integriert und mit wenigen Klicks 
hochgeladen. Der MkII ist wirklich die beste Wahl, wenn der Preis nicht 
so wichtig ist.

Die Produkte von Olimex sehen vielleicht ugly aus, aber wenn man mal 
ernsthaft drüber nachdenkt muss man zugeben, dass deren Gehäuse durchaus 
praktisch sind.

> Wobei dieser mit seinem Massstorage-Mode ganz interessant klingt -
> macht z.B. AVRDude überflüssig

Da wäre ich nicht so sicher. Kann der denn im Massstorage-Mode die Fuses 
umstellen? kann man damit Fuses kontrollieren? Kann er defekten 
(verschlissenen) Programmspeicher erkennen?

Ich denke, diesen Modus haben sie von mbed und ST-Link v2.1 abgeguckt. 
Doch selbst bei diesen Produkten, die das schon lange können, nutze ich 
diesen Modus nicht. Das ist nur ein cooles Gimmik ohne viel Nutzen für 
den Entwickler. Es ist eher für die Endverbraucher gedacht. Doch denen 
wirst du diesen Programmieradapter wohl kaum in die Hand drücken, oder?

> Hat jemand noch ne Empfehlung zu Herstellern?!

Ich schreibe hier mal auf, durch was sich die mir bekannten Geräte 
hervor tun:

1) Atmel ISP MKii: teuer aber trotzdem sehr empfehlenswert. Funktioniert 
immer und überall. Unterszützt den gesamten Versorgungsspannungsbereich 
abber AVR's. Unterstüttz auch die "fetten" Xmega Modelle. 
Sinnvollerweise hat er ein Gehäuse und normal große robuste Anschlüsse. 
6 poliger ISP Anschluss. Leider wird er nicht mehr produziert. Wie gut 
die nachbauten sind, weiß ich nicht.

2) USBASP: Unterstützt nur 5V Targets. Hat keinerlei Schutzschaltung, 
deswegen habe ich 180 Ohm Widerstände in das Flachkabel eingeschleift. 
Da ich einen 6 Poligen ISP Anschluss brauche, musste ich das 10 polige 
Kabel umfrickeln. Kein Gehäuse und die Sicherung wurde ienfach weg 
gespart. Man riskiert damit, den USB Port des Laptops zu killen, wenn 
man keine weitere Schutzmaßnahmen hinzufügt. Der USBASP ist zickig. Ich 
denke, das liegt unter anderem daran, dass er keine echte USB 
Schnittstelle hat. Manche funktionieren tadellos, andere tun es nicht - 
ist reine Glücks-Sache.

3) Diamex ISP Stick: Ist Ok, sofern man sich mit 3,3V und 5V zufrieden 
gibt.

4) Atmel Dragon: Soll sehr empfindlich sein, meiner ist noch heile 
(juhuu). Ich habe ihn zu Debuggen gekauft. Damals hatte man die Wahl 
zwischen der nackten Dragon Platine für 60 Euro und dem Atmel Debugger 
für 500 Euro. Da ich ihn letztendlich aber nur sehr selten benutze würde 
ich keinen Anfänger dazu drängen, einen zu kaufen. Er unterstützt 
Debugging nur bis 32kB. Einige neue AVR Chips unterstützt er nicht. 
Manche Leute schätzen seinen High-Voltage parallel Programming Modus. 
Damit kann man AVR's retten, die man verfused hat.

Verfused heisst: Man stellt die Fuses (Konfigurations-Bits) so ein, das 
die ISP Schnittstelle nicht mehr funktioniert. Zum beispiel indem man 
ISP oder abschaltet oder den reset Pin als I/O Pin umkonfiguriert. Das 
wird hier immer wieder als das ultimative Manko der AVR Serie moniert. 
Aber ganz ehrlich: Den Fehler machst du höchstens zwei mal. Danach hast 
du es entweder gelernt oder erkennst, dass du ein andere Hobby brauchst.

Mein Tipp: Fange mit einem Diamex ISP Stick an. Der ist unkompliziert. 
Falls er Dir irgendwann mal nicht genügen sollte, wirst du konkrete 
Vorstellungen haben, was der neue Programmer denn können soll.

Egal welchen Programmer du kaufst, achte darauf, dass er eine echte USB 
Schnitsttelle hat. Erkennbar an einem Atmel Chip mit "U" in der Nummer, 
oder einem separaten Chip mit der Nummer FT3232, CP2201, CH34x oder 
PL2303 Chip hat.

STM32 Mikrocontroller programmierst du wahlweise mit einem ST-Link 
Adapter oder einen USB-UART Kabel. Die großen Chips können auch per USB 
bespielt werden. Der ST-Link Adapter kann auch debuggen. Die 
preisgünstigen und hochwertigen Nucleo-64 Evaluation Boards enthalten 
einen Abtrennbaren ST-Link Adapter.

Ich empfehDer USBASP ist zickig. Ich denke, das liegt unter anderem 
daran, dass er schon Hardwaremäßig nicht ganz der USB Spezifikation 
entspricht. Manche funktionieren tadellos, andere tun es nicht - ist 
reine Glücks-Sache.

Wenn du keine Angst vor vielen Seiten langen Datenblättern hast, dann 
würde ich Dir empfehlen, mit STM32 anzufangen. Die sind billiger und 
können mehr als AVR's. Hier sind meine Notitzen zu STM32, damit Du Dir 
ein Bild davon machen kannst, wie aufwändig bzw einfach sie zu benutzen 
sind: http://stefanfrings.de/stm32/index.html

Ich habe da auch ein cooles Anfänger-Projekt zum nachbauen: 
http://stefanfrings.de/binaeruhr/index.html

von Stefan F. (Gast)


Lesenswert?

> Also habe mich gefragt, wie die Toolchain bei ARMs wohl aussieht,
> bzw. was an Stelle des AVRDudes tritt

Eigentlich nicht viel anders als bei AVR. Auch ARM Programme kannst du 
mit dem gcc Compiler übersetzen. Aber natürlich in einer anderen 
(neueren) Version. Er wird mit der "newlib" C Library geliefert, die 
auch unter Linux zum Einsatz kommt. Dazu gibt es auch eine abgespeckte 
Version für Mikrocontroller. Das ist am Ende weniger speziell, als die C 
Library für AVR's.

Statt avrdude verwendest du das ST-Link Tool vom Hersteller oder für 
serielle Übertragung den "Flash Loader Demonstrator". Die IDE's betten 
häufig Open-OCD ein, damit kann man sowohl flashen als auch debuggen.

von Axel S. (a-za-z0-9)


Lesenswert?

Karl Ium schrieb:
> Sehe ich das richtig, dass der Bausatz von ehajo relativ abgespeckt ist
> und etwas spezielle Treiber besitzt? ..Z.B. relativ langsam ist, oder
> beschränkt, was die Spannungen angeht..?!

Nicht "abgespeckt", sondern "auf das Notwendige reduziert" und daher 
viel billiger als z.B. das AVR ISP MkII. Treiber braucht man eigentlich 
gar nicht, außer vielleicht bei Windows einen generischen Treiber a'la 
libusb. Und was meinst du mit "langsam"? Spielt es wirklich eine Rolle, 
ob das Programm nach 20 oder 30 Sekunden im ATMega328 ist?

> Also ich habe mich nicht wirklich auf AVR festgelegt. Dass ich z.B. gar
> nicht mit float arbeiten können würde, war mir nicht bewusst.

Das ist nicht so. Selbstverständlich kann avr-gcc auch float.

> Arduinos will ich eigentlich umgehen (aber evtl nicht die Arduino IDE)

Die IDE und die Libraries sind der Teil an Arduino, der fragwürdig ist.

> Wer braucht schon einen Bootloader, wenn er keinen braucht;)..

Ein Bootloader frißt kein Brot. Und im Zweifel ist er beim Upload des 
nächsten Programms per ISP überschrieben.

> Ich habe gelesen, dass die AVRISP MKII-Klone unterschiedliche Firmware
> brauchen, je nachdem, welche IDE/Software man nutzt (ATMEL
> Studio/AVRDude/Arduino Studio / AVR Studio?).

Wäre mir nicht bekannt. Richtig ist, daß Atmel-Studio & Co. immer 
erstmal die Firmware eines angeschlossenen Geräts prüfen und wenn es 
eine neuere gibt, mehr oder weniger penetrant darauf bestehen, sie 
updaten zu dürfen.

> Angenommen, ich bleibe wirklich bei CodeBlocks als IDE
> - verpasse ich da irgendwelche super-duper Vorteile der speziellen IDEs,
> z.B. soetwas wie ein "GUI-Designer"-Äquivalent.

Mir wäre nicht bekannt, daß es so etwas gäbe. Die IDE von Atmel/MCP 
enthalten halt auch Tools zum Debuggen und Simulieren, wo es Open Source 
Alternativen entweder gar nicht oder nur mit eingeschränktem 
Funktionsumfang gibt.

Aber viele Tools kann man auch unabhängig von einer IDE nutzen. In der 
Open Source Welt ist das auch Konsens, daß man Tools möglichst 
unabhängig von irgendwelchen grafischen Aufsätzen (nichts anderes ist 
eine IDE) programmiert.

> - bin ich dann auf ARVDude angewiesen??

Eigentlich alle IDE von Drittherstellern verwenden avrdude als 
Programmiersoftware. Zum einen, weil es halt da ist und funktioniert. 
Zum anderen aber auch, weil es deutlich flexibler ist (mehr Adapter 
unterstützt) als die Programmier-Komponente, die Atmel ihrer IDE 
beilegt.

> Kann man STM32-Controller genau so "frei" programmieren?

Sehr ähnlich. Code::Blocks und andere IDE kann man auch so 
konfigurieren, daß sie Projekte für AVR und ARM können.

> Hab dafür auch einen Programmieradapter gesehen
> allerdings braucht es dazu wohl einen Bootloader seitens des STM32

Nein.

> Es handelt sich dabei genauer gesagt um einen Hybriden, der alle
> Hersteller programmieren können soll.

Wird wohl ein SWD-Adapter sein. Das ist das schöne an den Cortex-M (eine 
ARM Variante) Controllern. Die haben praktisch alle die 
SWD-Schnittstelle zum Programmieren und Debuggen. Dann geht ein Adapter 
für alle.

Karl Ium schrieb:
> Hab hier im Subforum gerade gesehen, dass es für ARMs ne extra IDE auf
> CodeBocks-Basis gibt
> Also habe mich gefragt, wie die Toolchain bei ARMs wohl aussieht, bzw.
> was an Stelle des AVRDudes tritt

Typischerweise openocd. Oder halt ein herstellerspezifisches Tool, z.B. 
stlink für STM32.

> (Arduino IDE z.B. soll wohl eine AVRDude-Version beinhalten

Die Arduino-IDE setzt auf avrdude. Sowohl für ISP-Programmierung als 
auch für den Upload via Bootloader.

> AVR/Atmel Studio muss wohl auch sowas in der Art benutzen..)

Die haben ihr eigenes Programm dafür.

> Für AVR müsste es doch immer so sein:
> Texteditor -> Compiler -> Hex-File -> "AVRDude" (wie nennt sich dieser
> Softwaretyp??) -> Treiber -> Programmer -> µC

Hier fehlen mindestens noch der Linker und Bibliotheken. "Hexfile" 
sollte besser "ausführbare Datei" heißen. Die Umwandlung in ein Hexfile 
(eigentlich: ein Flash-Dump) ist für avrdude nicht mehr zwingend. Und 
der "Treiber" ist eigentlich keiner. Der Programmieradapter und die 
Programmiersoftware (z.B. avrdude) reden entweder direkt miteinander 
(USB HID Klasse) oder verwenden eine Standard-Geräteklasse wie etwa 
einen seriellen Port.

> Großartig anders kann es ja nicht sein, oder?

Bis zum ausführbaren Programm ist es für alle µC (ja: alle Computer) der 
gleiche Weg, obwohl die verwendeten Komponenten (Compiler, Bibliotheken) 
natürlich verschieden sind. Die Unterschiede kommen danach, weil es da 
hardwarespezifisch wird.

von Einer K. (Gast)


Lesenswert?

Karl Ium schrieb:
> ...Soooooooo, jetzt wars das aber erstmal.....

Nannooo...
Fragen über Fragen....

Das ist doch der falsche Ansatz!

Frei nach Douglas Adams:
Wir kennen die Antwort!

Wir wissen welcher der billigste Programmieradapter ist.
Wir wissen, welcher der haltbarste ist.
Welcher die meisten Möglichkeiten bietet.
Wir wissen welcher zu welchen µC passt.

Die Antwort lautet 42!

Aber irgendwie ist die Frage nach dem Sinn verloren gegangen...
Der Sinn des ganzen, des Universums, und des ganzen Restes.

z.B:
Was willst du wirklich erreichen?


In der Regel hat man ein Problem, eine Aufgabe.
Und sei es auch eine selbst gewählte Aufgabe.

Du allerdings beschreibst Schritte, wovon jeder einzelne gangbar 
erscheint.
Aber es gibt so viele nahezu gleichwertige Schritte, dass dir die 
Auswahl schwer fällt. Hunderte von verschiedenen µC, welche allesamt 
kleine Aufgaben erledigen können.

Der tiefe Sinn bleibt aber verborgen.

Also:
Beschreibe das Problem!
Beschreibe das Ziel!

Dann kann man sich über die Wege unterhalten.

-----------

Ja ich weiß, oben hast du es beschrieben:

Karl Ium schrieb:
> Ich wollte mal langsam in die µC-Programmierung einsteigen. Da ich
> einigermaßen mit dem Lötkolben umgehen kann und inzwischen auch mit
> C/C++-Erfahrungen gesammelt habe, ist das wohl der nächste logische
> Schritt. ..Wer möchte schon gerne für ein simples Lauflicht oder
> LED-Geblinke extra seinen PC hergeben, oder es in Analog-Elektronik
> realisieren..

Aber das sind eben kein exakten Ziele, anhand dessen man einen µC oder 
Programmieradapter auswählen kann.

Aus meiner Sicht ist es völlig egal, womit du anfängst!

Mein Tipp: (bin ja Arduino Fan)
Fange mit einem Arduino UNO an.
Preiswert, einfach, breite Codebasis.

Je sattelfester du wirst, desto klarer wirst du auch dann deine 
Bedürfnisse ausformulieren können. Und anhand dieser Bedürfnisse klären 
sich deine obigen Fragen fast von selber.

Immer im Hinterkopf behalten:
Wenn du IDE und µC irgendwann gegen andere Komponenten austauscht, das 
zwischendurch gelernte Wissen kannst du mitnehmen.

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.