Hi!
Da ja mittlerweile sicher einige Leute das Stellaris Launchpad daheim
haben wollte ich mal nachfragen wie sehr so ein ARM-Controller für einen
Anfänger geeignet ist...
Programmiererfahrung habe ich bisher keine Großartige... (Assembler in
der Ausbildung, werde bei meiner derzeitigen Technikerschule
(Fernstudium beim DAA) noch Mikrocontroller in C programmieren müssen).
Momentan bin ich noch am C lernen (mache ein Buch durch: C -
Porgrammieren von Anfang an).
Hat es überhaupt Sinn mit so einem... "oberflächlichem Wissen von C" in
Richtung Controller-Programmierung zu gehen?
Kann mir evtl jemand aus eigener Erfahrung eine grobe Richtung weisen?
Und / oder wäre ein Arduino evtl die bessere Wahl für den Einstieg?
(Müsste gekauft werden, Launchpad liegt bereits daheim).
Gruß
Kranen schrieb:> Momentan bin ich noch am C lernen (mache ein Buch durch: C -> Porgrammieren von Anfang an).>> Hat es überhaupt Sinn mit so einem... "oberflächlichem Wissen von C" in> Richtung Controller-Programmierung zu gehen?
Wie weit bist du denn im Buch?
Wenn du das Gefühl hast, das erste Drittel so leidlich zu beherrschen,
steht einem µC-Umstieg kaum mehr ernsthaft was im Weg.
Auch wenn die Atmegas vielleicht nicht mehr ganz Stand der Technik sind
würde ich dennoch empfehlen damit anzufangen:
- überschaubar, nicht 1000+ Seiten Dokumentation
- mehrere verschiedene Entwicklungsumgebungen verfügbar
- jede Menge Erfahrung, Tipps, Beispiele im Web vorhanden. Zu beinahe
jedem Problem findest Du x Posts mit Lösungen im Internet
- Hier im Forum gibt es viele Leute die Dir damit helfen können.
Das Stellaris-Teil ist noch so neu daß es zwar prinzipiell funktioniert,
aber an vielen Stellen ist die Unterstützung noch nicht fertig, nicht
optimal etc. Auch gibt es bisher nicht so viele Leute die das Teil in-
und auswendig kennen und Dir bei Problemen helfen können.
Wenn Du das Prinzip verstanden hast kannst Du später immer noch auf was
anderes umsteigen. Das Umsteigen an sich zu lernen ist auch nicht
schlecht, das wirst Du in ein paar Jahren wieder brauchen wenn die jetzt
aktuellen ARM Cortexe dann zum alten Eisen gehören und was anderes
aktuell ist.
Thomas Winkler schrieb:> Ich möchte keinen neuen AVR gegen ARM krieg initiieren.>>> Aber ich möchte anmerken, dass ich keineswegs Atmega empfehle. Das> Stellaris hat viele Vorteile für Neueinsteiger:
Und der gewichtigste Nachteil wurde auch schon genannt:
Wer hilft einem Neueinsteiger bei Problemen?
Ist wie beim Auto: Für einen Wald und Wiesen Golf kriegst du Ersatzteile
bei jedem besseren Aldi und jemand der sich damit auskennt findest du in
jeder Disco.
Für einen Bentley sieht die Sache aber anders aus. Auch wenn der Bentley
toller ist.
Karl Heinz Buchegger schrieb:> Und der gewichtigste Nachteil wurde auch schon genannt:> Wer hilft einem Neueinsteiger bei Problemen?
Die Arduinos bzw Atmels haben die größere und aktivere Community, auch
wenn sie technisch hinterherhinken. Für Einsteiger ist oft die Community
entscheidend. Tja, und da hat Atmel halt gewonnen.
Leider setzt sich halt nicht immer das bessere, sondern immer einfach
nur das am weitestens verbreitetste durch.
Kranen schrieb:> Kann mir evtl jemand aus eigener Erfahrung eine grobe Richtung weisen?
eigene Erfahrung:
zum Kennen lernen (und programmieren in C) ist es ziemlich egal, welchen
Controller du verwendest.
Die grundsätzlichen Mechanismen (Bitfummelei, Timer, Interupt etc) ist
bei allen Controllern als Element vorhanden. Sofern du mal verstanden
hast, daß und wie ein zweckmäßiger Programm-Ablauf zu strukturieren ist
(z.B. mitels einer Interupt-Service-Routine), kannst du dieses
Grundwissen auf jeden Controller anwenden, welcher Interupts kennt
Irgendwelche Entwicklungsumgebungen (IDE) gibts auch für jeden
Controller unter fast jedem Betriebssystem. Ob da jetzt schon gewisse
Kombinationen [z.B. "es muß eine zeichenorientierte Konsole-IDE auf dem
Macintosh sein, welche alle 2 Monate ein Update rausbringt - alles
andere kommt nicht in Frage"] dich einschränken weißt nur du. Vermutlich
nimmt man aber initial das was da ist und beist sich durch.
Karl Heinz Buchegger schrieb:> Ist wie beim Auto: Für einen Wald und Wiesen Golf kriegst du Ersatzteile> bei jedem besseren Aldi und jemand der sich damit auskennt findest du in> jeder Disco.> Für einen Bentley sieht die Sache aber anders aus. Auch wenn der Bentley> toller ist.
In diesem Fall ist aber der Bentley billiger als der Golf. Der Vergleich
hinkt also ein bisschen.
Obwohl ich wirklich ein großer Fan der ARMs bin, und mich sehr über die
bastlerfreundlichen DIP ARMs freue, halte ich doch doch das Stellaris
Launchpad für ungeeignet um damit zu lernen. Wenn man die
Firmwarefunktionen nutzt, lernt man kaum wie uCs funktionieren
(Register) und ohne ist man bei der gebotenen Komplexität schnell
verloren. Vielleicht doch besser mit AVRs oder, wenn man bei Ti bleiben
will, mit dem MSP430 Launchpad anfangen. Das MSP430 Launchpad vereint
praktisch alle Vorteile des Stellaris Launchpad (Preis, Debugger +
Programmer on board) mit der Einfachheit eines kleinen uC. Die Community
ist auch ein bisschen größer aber, zumindest in D, kein Vergleich mit
der AVR Community. Wenn man mit einem AVR einsteigen will, empfiehlt
sich ein Arduino. Die Arduinos sind leider teurer als die Launchpads und
einen AVR Debugger bekommt man erst aber ca 50€ aufwärts. Dafür ist die
Community riesig.
Klaus Kaiser schrieb:> Leider setzt sich halt nicht immer das bessere, sondern immer einfach> nur das am weitestens verbreitetste durch.
Was ich eigentlich sagen wollte: Wenn du Einzelkämpferqulitäten hast,
dann nimm das Lauchpad. Wenn dir die Community wichtig ist, denn den
Arduino oder ein anderes Atmel-Board. Die Vor- und Nachteile beider
Plattformen erkennst Du früher oder später eh, und wenn Du nicht gerade
ein erfolgreiches und komplexes Design hast (bei Hobbyisten selten der
Fall), ist der Wechsel jederzeit machbar.
Danke euch allen für eure ausführlichen Erfahrungen und Ratschläge!
Ich werde wohl mit einem 8051 Controller von Atmel (at89c51ed2)
beginngen, da ich diesen zuhause habe und dieser anscheinend auch beim
DAA (Technikerschule) verwendet wird.
Wenn ich dann auf diesem Fachgebiet etwas versierter bin werde ich wohl
auf das Stellaris Launchpad oder den von Thomas genannten STM32F4
umsteigen.
Danke nochmals für eure Meinungen!
Kranen schrieb:> Ich werde wohl mit einem 8051 Controller von Atmel (at89c51ed2)> beginngen
Kannst ja mal den Wickenhäuser ausprobieren. Die Demo bis 8kB sollte ne
Weile reichen.
Peter
Stimmt, die USB Bridge von myAVR ist praktisch. Dann kann man
debugausgaben direkt an den Putty senden und man sieht was das Discovery
so treibt.
Die 7€ Investition lohnt sich beim Entwickeln sehr.
Bei dem STM32F3 Discovery (wie auch b eim F0 Discovery) geht auch ein
Uart (nach Umlegen von Bruecken) auf den ST-Link. Die ST-Link Software
stellt nur (noch?) nicht das CDCACM Modem bereit. Wenn man blackmagic
debug auf den ST-Link aufspielt, dann hat man eine eingebaute
Discovery<->Uart Bridge.
Die Stellaris Boards haben auch schon eins solche Bridge eingebaut.
Allerdings hat das Stellarisboard doch recht wenig eingebaute Devices
zum spielen. Die 8 LEDs und Sensoren des F3 Discovery bieten da schon
mehr.
Ich finde den LM4F Stellaris im Vergleich zum STM32F4 deutlich
schlechter:
- viele Stellaris haben kein richtiges Hardware-PWM, die Einheit ist
optional und fehlt z.B. auch bei den im Launchpad verwendeten
LM4F120H5QR. Hardware-PWM ist eigentlich heute ein Standard-Feature...
- die STM32F4 sind deutlich schneller und haben mehr Peripherie (z.B.
Ethernet)
TI hat die Stellaris mit 4$ / Stück angekündigt. Dann wäre die geringere
Leistung gerechtfertigt und die Dinger durchaus für manches Projekt
interessant gewesen.
Wenn man sich jetzt aber mal die tatsächlichen Preise für kleine
Stückzahlen ansieht:
http://de.farnell.com/texas-instruments/lm4f230h5qrfig/mcu-32bit-stellaris-256kb-64lqfp/dp/2246241
10,88 EUR / Stück für 10 von den billigsten Stellaris
gegen
http://de.farnell.com/stmicroelectronics/stm32f407zet6/ic-mcu-32bit-512kb-flash-144tqfp/dp/2215229
8,15 EUR / Stück für 10 von den billigsten STM32F4.
Wieso soll ich da Stellaris nehmen?
Gerd E. schrieb:> - viele Stellaris haben kein richtiges Hardware-PWM, die Einheit ist> optional und fehlt z.B. auch bei den im Launchpad verwendeten> LM4F120H5QR. Hardware-PWM ist eigentlich heute ein Standard-Feature...
Hmm, die Demo-Firmware auf dem Launchpad schreibt laut gdb den
gewünschten duty-cycle in die Register tm[ab]matchr, und die RGB-LED
leuchtet entsprechend. Was ist denn das, wenn kein Hardware-PWM?
Gerd E. schrieb:> Ich meinte das hier:
Ich kann da nichts vom behaupteten "kein richtiges Hardware-PWM" lesen.
Keine Ahnung, nach was der Autor vergeblich gesucht hat. Vielleicht PWM
mit FIFO oder DMA? Nach meiner Interpretation des
LM4F120H5QR-Datenblatts kann die Hardware mit den 12 Timern im
split-Betrieb und PWM-Modus auf 21 Pins PWM-Signale erzeugen.
Gerd E. schrieb:> - viele Stellaris haben kein richtiges Hardware-PWM, die Einheit ist> optional und fehlt z.B. auch bei den im Launchpad verwendeten> LM4F120H5QR. Hardware-PWM ist eigentlich heute ein Standard-Feature...
Das neue Stellaris Tiva C Launchpad hat einen TM4C123GH6PM
und damit kommen PWM, QEI and USB host/OTG Support dazu.
Siehe auch:
http://www.43oh.com/2013/04/ti-stellaris-launchpad-rebranded-to-tiva-c-launchpad/
Damit wird das alte Steallaris Launchpad durch das neue Tiva C nach und
nach ersetzt.
Kranen schrieb:> Hat es überhaupt Sinn mit so einem... "oberflächlichem Wissen von C" in> Richtung Controller-Programmierung zu gehen?
Ja. Jeder (hier und woanders) hat mal mit irgend etwas angefangen.
Was C als Programmiersprache betrifft, so hilft es einem immer, nicht
jeden Mist und jedes Konstrukt, was diese Sprache ermöglicht, zu
benutzen, sondern stattdessen eher einen biederen Programmierstil zu
pflegen. Guck dir ruhig mal diverse Quellen an, die hier im Forum so
herunfliegen - aber hüte dich davor zu glauben, das wäre alles guter
Programmierstil, den man so nachmachen sollte. Das Meiste davon ist eher
ein miserabler Stil und entsprechend unleserlich und sollte SO besser
nicht nachgeahmt werden. In jedem Falle solltest du aber auch ein bissel
Assembler lernen - in diesem Fall ARM-Assembler, damit du in diesen
Gefilden nicht ganz doof dastehst.
Was das Stellaris-Board und uC allgemein betrifft, so solltest du dir
darüber klar werden, daß die Programmierung (in welcher Sprache auch
immer) kein Selbstzweck ist, sondern nur eine notwendige Zutat. Das
Hauptaugenmerk liegt immer auf der Anwendung, also was man tatsächlich
machen und dazu nen uC einsetzen will. Eben das sollte auch dein
Schwerpunkt sein, die reine Programmierung ist ein bissel Eunuchentum.
Guck dir also erstmal das Hardwaremanual zu deinem uC an, dann die
Boardbeschreibung und dann überleg dir, was du gern manchen willst und
ob das Board dafür geeignet ist.
Kranen schrieb:> Kann mir evtl jemand aus eigener Erfahrung eine grobe Richtung weisen?
Sehr einfach: Selber lesen, selber verstehen, selber Projekte planen,
selber durchziehen - seinen eigenen Stil suchen und finden - und sich
NIE auf andere verlassen.
W.S.
> Stimmt, die USB Bridge von myAVR ist praktisch
Alternativ tut's auch ein Handy-Datenkabel vom Trödel. Es gibt da einige
im Nokia Umfeld mit genau den drei Anschlüssen, die wir brauchen: GND,
RXD und TXD. Die kosten meist nur 3 Euro.
Stichwort für eBay: "USB seriell TTL Kabel"
Hallo zusammen,
viel wurde gesagt, deshalb nur wenig Worte von mir. Als Einstieg
empfiehlt sich folgendes:
http://shop.myavr.de/index.php?sp=article.sp.php&artID=40
Alles an Board für einen Einsteiger (LEDs, Buzzer, Taster, Lichtsensor),
klar ist das irgendwie veraltet, aber nur für diejenigen die sich
auskennen.
Wenn du damit umgehen kannst, kannst du dir das Launchpad wieder
vornehmen. Der Umstieg wird aber nochmal genauso wie der Einstieg, aber
um vieles einfacher als ohne Erfahrung.
Beste Grüße
public
Preis: 49,00 Euro
Launchpad 10$
naja
Ich verstehe die Diskussion nicht, man kann mit jedem Board anfangen und
das Launchpad bietet doch einges. Allemal mehr als so ein olles AVR
Board.
Wenn du Anfänger bist nimm lieber das MSP430 Launchpad. Da kannst du
dann einfacher eigene Schaltungen entwickeln und die Controller
"erschlagen" dich nicht gleich.
Hallo nochmal,
unterschied AVR zu ARM sieht doch so aus, Pin setzen.
AVR:
1. Direction Register setzen
2. Pin/Port Register setzen
ARM:
1. Takt am Port bereitstellen
2. Pin Modus einstellen
3. betreffenden Pin wählen
4. Flankensteilheit des Pins wählen
5. Port initialisieren
6. Pin setzen
Ich würde sagen der Einsteiger soll selbst entscheiden ;-)
Beste Grüße
public