Forum: Mikrocontroller und Digitale Elektronik Brauche Ratschläge bezüglich µC-Einstieg


von H.Bertholds (Gast)


Lesenswert?

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.

von Eumel (Gast)


Lesenswert?

"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 ;)

von UrsU (Gast)


Lesenswert?

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.

von chris (Gast)


Lesenswert?

Ä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.

von goddi (Gast)


Lesenswert?

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.

von goddi (Gast)


Lesenswert?

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)

von W.S. (Gast)


Lesenswert?

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.

von Hans (Gast)


Lesenswert?

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!

von H.Bertholds (Gast)


Lesenswert?

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?

von Eumel (Gast)


Lesenswert?

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.

von H.Bertholds (Gast)


Lesenswert?

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?

von Eumel (Gast)


Lesenswert?

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.

von Vincenzo Nuzzi (Gast)


Lesenswert?

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

von Peter D. (peda)


Lesenswert?

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

von Stefan F. (sfrings)


Lesenswert?

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.

von H.Bertholds (Gast)


Lesenswert?

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.

von Michael S. (rbs_phoenix)


Lesenswert?

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...)

von Hans (Gast)


Lesenswert?

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ß

von H.Bertholds (Gast)


Lesenswert?

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.

von Simon K. (simon) Benutzerseite


Lesenswert?

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.

von Roland H. (batchman)


Lesenswert?

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"

von H.Bertholds (Gast)


Lesenswert?

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.

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.