Guten Tag,
ich bin E-Technikstudent und komme bald in das Semester, in dem µCs
behandelt werden. Ich habe mir schonmal die Skripte besorgt und muss
sagen, dass es Lust auf mehr macht.
Soweit ich das beurteilen kann, gehts um Grundlagen in Assembler.
Doch ich würde von euch gerne wissen, wie man sich auf das Arbeiten mit
µC vorbereitet.
Assembler ist ja schön und gut, aber doch etwas zu anstrengend für einen
Einsteiger.
Als Programmiersprachen habe ich bisher mit Java und C++ zu tun gehabt,
und wie ich das sehe ist C verbreitet, was µCs angeht. Wird man da große
Probleme haben von C++ zu C, gesetzt dem Fall, man ist gut lernfähig,
oder ist der Beginn von 0 bez. C besser?
An µC habe ich mich mal umgeschaut, und interessiere mich in erster
Linie für die Cortex-M3 von ST (der Peripherie wegen), und evtl noch die
MSP430 von TI.
Doch wie gesagt, weiss ich nicht, ob es für den Start nicht besser wäre,
mit was Anderem anzufangen, z.B. mit einem AVR oder so. Denn für die
STM32 habe ich kein Tutorial gesehen, dass wirklich von 0 oder nahe 0
anfängt.
Ich habe bei den STM32 Tuts, die ich gefunden habe Probleme damit, wie
Ein- und Ausgänge konfiguriert und angesprochen bzw. abgefragt werden.
Zum AVR gibts hier ja eins, wo ich mit meinen C++-Kenntnissen gut
mitkomme.
Kann man die Erfahrungen, die man beim AVR gesammelt hat, bei STM32 gut
gebrauchen, oder ist das unnötig, und sollte direkt ins kalte Wasser
springen?
Was meint ihr?
Welche Schritte würdet ihr einem absoluten Anfänger empfehlen, der sich
für die Materie interessiert und demnächst viel mit STM32 µCs arbeiten
möchte.
"Assembler ist ja schön und gut, aber doch etwas zu anstrengend für
einen
Einsteiger."
Ne, eben nicht. Ist genau das richtige weil du immer genau weißt was du
eigentlich treibst und wie dein Controller funktioniert.
Um einen guten Einstieg zu kriegen der dich nicht überforder ist das
Launchpad super. Es ist billig und von TI gibts massig Material zum
lernen. PDFs Videos usw. Außerdem kannst du in Assembler und C
Programmieren. Die Entwicklungsumgebung ist kostenlos und die Controller
sind nicht fest auf dem Board. Soll heißen du kannst sie reinstecken,
Programmieren und dann in weitere Projekte einbauen. Du kriegst halt ein
kleines Packet in dem alles drin ist was du brauchst. Und der Preis ist
unschlagbar ;)
Ich würde das STM32F4Discovery-Board für ca. 15-25€ kaufen.
Dann die IAR Workbench.
Die geht zwar nur bis 32k. Aber nach der Installation funktioniert
alles.
(Falls Du Windows hast).
Du kannst gleich mit Beispielprojekten loslegen und diese ausprobieren.
Das Konfigurieren der Peripherie ist beim STM32 etwas komplizierter als
bei einem AVR, weil man halt sehr viel einstellen kann. Das kann anfangs
verwirren.
Assembler: NEIN!
Wenn Du den Führerschein machen willst, dann lerne fahren. Und wenn Du
das mal kannst, dann kannst Du immer noch lernen, wie man die
Zylinderkopfdichtung wechselt, falls es dich interessiert.
Ich hab viele Jahre PICs und 6502 in Assembler programmiert. Über diese
Phase bin ich raus.
Äh, nein.
Um die Funktionsweisen von MCs zu verstehen, ist der Beginn mit
Assembler genau richtig ( zumindest sollte das der Anspruch eines
Studiums sein, die Grundlagen zu verstehen ).
Ich würde sogar sagen, es lohnt sich verschiedene Assembler und
Prozessorarchitekturen gleichzeitig anzuschauen:
- 8051
- AVR
- ARM
- Parallax Propeller
Man muss ja nicht alle Befehle jedes Prozessors ganz durcharbeiten,
sondern nur die Prinzipien dahinter verstehen.
Hi!
Was sich außerdem anbietet sind boards in der Uni.
So hab ich das gemacht für den twi einstieg.
Da hatte ich dann verschiedene Bauteile zur Verfügung und konnte dann
gut testen.
So musste ich mir weniger kaufen und konnte auf Hilfe durch den Labor
Leiter hoffen :-)
Der war auch so freundlich mir einige Dinge wie Displays usw mit
zugeben.
Programmiert habe ich auch direkt in C.
Der Umstieg von c++ auf c ist recht einfach wenn man einige
Kleinigkeiten beachtet.
Würde dir empfehlen doch mal in deiner Uni nach so etwas zu erkundigen.
Meistens sind die profs usw hilfsbereit wenn man. Interesse zeigt.
Bin übrigens mit avr angefangen.
Ein wenig Assembler macht schon Sinn auch wenn man es für einen
schnellen einstieg nicht unbedingt braucht. ( hilft halt einfach ein
paar Sachen besser zu verstehen)
H.Bertholds schrieb:> Assembler ist ja schön und gut, aber doch etwas zu anstrengend für einen> Einsteiger.
Ähemm, willst du Überflieger werden, dann schau dir niemals Assembler
an.
Ansonsten ist Assembler genau das Richtige, um dir ne gründliche Basis
zu schaffen. Mein Rat: Beschaffe dir den "Lampe,Jorke,Wengel" und
studier den. Die CPU's, die dort behandelt werden, sind zwar alt, aber
die Prinzipien und Herangehensweisen sind es, auf die es ankommt.
In den Physik-Vorlesungen siehst du ja auch ältere Versuchsaufbauten, an
denen das Prinzip erklärt wird.
> Als Programmiersprachen habe ich bisher mit Java und C++ zu tun gehabt,
Das sind keine guten Sprachen für das Einsteigen in die
uC-Programmierung.
> und wie ich das sehe ist C verbreitet, was µCs angeht. Wird man da große> Probleme haben von C++ zu C, gesetzt dem Fall, man ist gut lernfähig,> oder ist der Beginn von 0 bez. C besser?
Von was bitte?
Also, meine mentale Regel ist: Bei ganz kleinen uC's nimm Assembler, bei
größeren plain C. Jaja, ich könnte mir auch wünschen, daß es mehr
Pascal-Compiler für uC gäbe, denn Pascal ist systematischer als C und
hat viel weniger Fallstricke, aber C ist weiter verbreitet. Aber
abgesehen davon gibt es Pascal für PIC's, AVR, 8051 und ARM
(http://www.mikroe.com/eng/categories/view/2/compilers/).
Abschließender Rat: Versteife dich nicht auf eine Programmiersprache,
sondern praktiziere in mehreren, damit du keine Scheuklappen bekommst.
Das ist nicht flapsig gemeint.
W.S.
Nimm Bascom und ein Arduino Board. Dann läuft recht schnell was.
Für Assembler würd ich mir die Befehle mal anschauen und die
Funktionsweise
nachvollziehen (der AVR hat nicht viele). Programmieren und Simulieren
kannst du das mit fast allen (kostenlosen)Entwicklungsumgebungen.
Danach AVR Studio 4/5/6 installieren und mit C starten. Beispiele gibt
es genug.
Von den ARMs würde ich noch die Finger lassen, weil da viel Frust für
Anfänger drinnen steckt. Hier ist der STM32F407, wie schon genannt, ein
Traumteil. Das Basic Tutorial hat aber schon über 1350 Seiten ohne ARM
Kern Beschreibung. Dazu hunderte Seiten mit genauerer Beschreibung von
RTC usw.
Das kann heftig und frustig werden.
Viel Glück!
Das da die Meinungen teilweise so weit auseinander gehen hätte ich nicht
erwartet.
Mit Assembler werde ich mich in der FH sowieso beschäftigen.
Doch für denn Alltag denke, bzw. dachte ich, dass ich mit C besser dran
bin.
Ich denke, ich werde mir erstmal das Launchpad bestellen, dann noch das
eine oder andere Discovery-Board. Bei dem AVR bin ich mir noch nicht so
sicher, womit ich anfange, aber ein kleines werde ich mitbestellen.
Sehe ich das richtig, dass bei wirklich allen Discovery-Boards schon ein
JTAG-Adapter mit drauf ist? Wo ist da der Haken bei den Preisen?
Ich nehme an, wenn ich jetzt nach einer guten Ressource für Tutorials,
bzw Lektüre für den Start frage, bekomme ich wieder weit auseinander
gehende Meinungen, oder?
Die Discovery Teile sind auch wirklich gut, vielleicht erschlagen sie
dich nur etwas. Deshalb hatte ich halt das Launchpad vorgeschlagen weil
die Tutorials von TI ganz am Anfang anfangen. Also wie nehme ich das
Ding in Betrieb, wie brenne ich ein Programm in den Controller. Dann
fängt das Programmieren an: Wie setzte ich einen Ausgang auf 0 oder 1,
wie lese ich Eingänge ein uws. halt Schritt für Schritt.
Außerdem kannst du dir als Student von TI kostenslose Muster schicken
lassen, bei dem Launchpad sind zwar schon 2 Controller bei aber die hat
man ja schnell in irgendwas reingebaut. Dann ist TI so nett und schickt
dir neue.
Danke Eumel,
das Launchpad hab ich mitbestellt. Sollte übermorgen eintrudeln.
Kann man das Wissen, welches man sich mit dem Launchpad erarbeitet hat,
auch auf die STM32 übertragen? Oder ist das ein Äpfel und
Birnen-Problem?
Zu 100% natürlich nicht. Aber grundlegende Dinge auf die man der
Programmierung achten sollte und elementare Bestandteile der Controller
(Timer, Interrupts) schon. Dabei werden die natürlich mit anderem Code
angesprochen funktionieren aber sehr ähnlich. Wenn du die
Funktionsprinzipien erlernt hast kannst du die relativ schnell
übertragen. Du lernst dann ja nicht mehr "Was ist ein Timerinterrupt"
sonder nur noch "Wie programmiere ich einen Timerinterrupt auf einem
STM32"
Da schaut man dann halt ins Datenblatt oder die Beispielbibliotheken und
weiß bescheid.
Hallo zusammen,
ich versuche mich gerade auch mit dem Einstieg in die µC-Programmierung.
Hab's zwar im Studium einmal gelernt, aber nie gelebt...deshalb ist da
auch nicht mehr viel vorhanden :(
Jetzt haben wir uns in unserer Firma ein Infineon Easy Kit besorgt.
(Entwicklungskit EK-XC164CS Easy)
Dieses wollte ich mir im Privaten mal anschauen, aber ich hänge schon
bei
der grundlegenden Installation der Treiber... für den USB-Wiggler liegen
keine Treiber vor und ich bin mir jetzt auch nicht sicher ob ich da die
richtigen Installiert habe (USB-Wiggler ist überhaupt nicht
beschriftet).
Meine Frage ist jetzt: Stell ich mich dazu einfach zu blöde an, oder
haben
wir da einfach ein schwieriges Entwicklungskit erwischt?
Wir haben Infineon µC's in Benutzung (nicht von uns programmiert!!)
deshalb,
haben wir ein Toolkit von Infineon bestellt...
Internette Grüße
Vincenzo
H.Bertholds schrieb:> Soweit ich das beurteilen kann, gehts um Grundlagen in Assembler.> Doch ich würde von euch gerne wissen, wie man sich auf das Arbeiten mit> µC vorbereitet.
Assembler ist immer an ein bestimmtes Target gebunden. Damit Du den
richtigen Assembler lernst, mußt Du also wissen, welcher MC-Typ in dem
Seminar behandelt wird. Und auch die Toolchain und das Entwicklungskit.
Einen anderen Assembler zu lernen, bringt nicht viel.
H.Bertholds schrieb:> Denn für die> STM32 habe ich kein Tutorial gesehen, dass wirklich von 0 oder nahe 0> anfängt.
Vermutlich wird vorausgesetzt, daß man schon mit einem kleinen,
einfachen und übersichtlichen 8-Bitter die Grundlagen gelernt hat.
Man springt ja auch nicht sofort vom 10m-Turm ins Wasser, sondern
erstmal vom Einer.
Peter
Für den Anfang könntest Du etwas kleines in Assembler versuchen. Zum
Beispiel das hier kostet keine 10 Euro (sofern man schon einen
Programmieradapter hat oder ausleihen kann):
http://stefanfrings.de/avr_workshop/index.html
Dort geht es um einen AVR. Was Du da lernst, kannst Du natürlich nicht
auf einen ARM übertragen, aber Du lernst dennoch die Grundlagen.
In der Praxis wirst Du sicher nur selten in Assembler programmieren,
insofern würde ich mich in Assembler auch nicht allzu sehr herein
steigern. Ein gewisses Grundwissen hilft allerdings ab und zu,
insbesondere bei der Analyse des von C Compiler erzugten Codes, wenn er
mal etwas macht, was man nicht erwartet hat. Auch bei der Programmierung
von Interrupt Routinen hilft es sehr, ein wenig Erfahrung mit der
direkten Nutzung von CPU Registern und Stack zu haben.
Du kannst auch mit C anfangen, wirst aber irgednwann nicht drum herum
kommen, die Grundlagen von Assembler zu lernen. Immerhin erzeugt der C
Compiler zunächst ein Assembler Programm, welches dann in den Binärcode
des Mikrocontrollers übersetzt wird. Wenn man die Eigenarten des
Compilers verstehen will, kommt man um Assembler niht ganz herum -
leider.
Vielen dank für den Link, sieht recht überschaubar aus.
Muss mal genauer reinschauen. Einen AVR im Teensy-Format habe ich noch
mitbestellt, und den Programmierer baue ich selbst. Das sollte machbar
sein.
H.Bertholds schrieb:> ich bin E-Technikstudent und komme bald in das Semester, in dem µCs> behandelt werden.
Hi. Ich bin auch E-Technik Student. Und auch ich bekomme nächstes oder
spätestens übernächstes Semester die µC beigebracht. Bei der
Beschreibung für die Vorlesungen steht auch drin, welche Controller
benutzt werden. Das sind 8085 und PIC18. PICs hab ich schon in der
Ausbildung kennengelernt und hab mich mit denen auch weiter beschäftigt.
Wenn das in deinem Fall auch so ist, würde ich dir einen von denen
Empfehlen. Als Anfänger kann man eigentlich mit jedem µC etwas zaubern
(AVR, ARM, PIC, MSP, usw...), doch du hättest dann halt den Vorteil,
dass dir das alles nicht soo neu ist und du leichter und weniger lernen
kannst/musst. Es bleibt natürlich dir überlassen noch andere µCs zu
benutzen oder zu studieren, doch meine erste Wahl wäre die Familie, die
danach auch wirklich benutzt wird.
Und von C++ zu C ist nich soo schwer. Doch C für den PC und C für den µC
(gerade 8bitter) sind schon in manchen dingen unterschiedlich. Zumindest
haben die C-Compiler für die µC die µC-Spezifischen Funktionen und
Regelungen (int hat meist 16 bit statt 32, usw...)
Erwarte dir nicht zuviel von deiner FH Uni Ausbildung in Sachen MC. MC
Programmierung muß man leben und (Hass ?)lieben ;-) Die paar Stündchen
auf der Uni sind gar nichts in der MC Entwicklung. Aber ich glaube, du
bist auf einem guten Weg mit deinem Enthusiasmus.
Halt uns auf dem Laufenden, was bei dir abgeht!
Gruß
So,
die Boards (DiscoveryVL,Launchpad und Atmega32u Breakoutboard) sind
gestern eingetroffen.
Ich habe den Sprung ins kalte Wasser gewagt, und komme bisher ganz gut
mit dem STM32 zurecht.
Als IDE verwende ich CoIDE. Ein- und Ausgänge abfragen und steuern geht
schonmal ganz gut.
Ich habe noch einen DS18B20 1Wire-Sensor bestellt. Mal sehen, ob ich dem
was entlocken kann als Noob, denn der sieht schon etwas kompliziert aus.
Dann noch mein altes Nokia demontieren fürs Display...das wird ein Spass
- oder Frust.
Mal schauen. Falls es Probleme gibt, kann ich ja hier auf eine nette
Community vertrauen.
Ihr seid spitze.
Hans schrieb:> Erwarte dir nicht zuviel von deiner FH Uni Ausbildung in Sachen MC. MC> Programmierung muß man leben und (Hass ?)lieben ;-) Die paar Stündchen> auf der Uni sind gar nichts in der MC Entwicklung. Aber ich glaube, du> bist auf einem guten Weg mit deinem Enthusiasmus.> Halt uns auf dem Laufenden, was bei dir abgeht!
Das kann ich nur unterschreiben. Man lernt höchstens die Grundlagen der
Grundlagen in dem Zeitraum. Man lernt fast so wenig darüber, dass es
nicht mal reicht um über die Schwelle zu kommen, dass es einem Spaß
macht ;-)
Habe hobbymäßig schon seit ca. 7 Jahren mit AVRs zu tun und im letzten
Semester ein Seminar über den TI MSP430 gehabt. Da hat man sich sehr
schnell eingefunden. Aber das Seminar war von den Aufgaben her auch nur
alleroberste Oberfläche.
Da ich relativ schnell die Aufgaben absolviert hatte, habe ich dann noch
so ein wenig damit rumgespielt. Sehr interessantes Teil, wie ich finde.
Ohne dieses Posting:
> die Boards (DiscoveryVL,Launchpad und Atmega32u Breakoutboard) sind> gestern eingetroffen.> Ich habe den Sprung ins kalte Wasser gewagt, und komme bisher ganz gut> mit dem STM32 zurecht.> Als IDE verwende ich CoIDE. Ein- und Ausgänge abfragen und steuern geht> schonmal ganz gut.
hätte ich den Einstieg mit dem TI MSP430 Launchpad und C++ empfohlen -
mit der Begründung "wenig Geld", "Tool chain" und "kein PROGMEM".
Wenn nun aber der STM32 keine wirklichen Einstiegsprobleme gemacht hat,
dann würde ich sagen, schicke den atmega32u und das Launchpad zurück,
und konzentriere Dich auf C++ und den Cortex-M3.
Mit der "gekauften" Kombination hast Du 32-, 16- und 8-Bitter, dazu noch
das mit und ohne PROGMEM. Das macht die Portabilität unnötig schwierig.
Es macht aber durchaus Sinn, sich mehr als eine Architektur anzusehen.
Dann würde ich den AVR und den MSP430 gegen PIC32 und/oder Renesas RX
eintauschen. Das sind dann alles 32-Bitter, den PIC32 gibt es auch in
DIP.
A propos Tutorial: Beitrag "STM32 Tutorial"
Danke für den Tipp, aber das Launchpad behalte ich auf jeden Fall. Mir
gefällt das ganz gut, was ich bisher darüber gelesen habe.
Den PIC im DIP Package würde ich dann aber auch mal gern anschauen.
Hoffe die externen Komponenten halten sich in Grenzen (Breadboard zu
klein bestellt!)
Gibts da einen Bestimmten, den du da im Sinn hast?
Wäre für einen konkreten Namen dankbar.