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-AVRhttps://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-702437https://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
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.
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.
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.
>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.
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.
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))
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.
> 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.....
Karl Ium schrieb:> Kann man STM32-Controller genau so "frei" programmieren?
Ja. Und das macht richtig Spaß.
Nucleo + STM32CubeMX + SW4STM32 = ungeahnte Möglichkeiten :)
> 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
> 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.
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.
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.