Projekt :: Mikrocontroller Programmierung
1. Einführung
Zuletzt aktualisiert: 11.12.2015

Arduino, Raspberry Pi, Beaglebone. Diese Begriffe sind einigen Hobby-Elektronikern vielleicht bekannt. Es handelt sich dabei um sehr einsteigerfreundliche kleine Entwicklungsboards mit Mikrocontrollern oder sogar richtigen Applikations-Prozessoren und durch Bibliotheken vereinfachte Programmiersprachen wie C (Arduino) oder Python (Linux).

Was ist aber, wenn man wirklich mal lernen möchte, wie man Mikrocontroller programmiert? Ich war nie Fan dieser vorgekauten Kits und Libs. Das liegt aber auch daran, dass es zu der Zeit, wo ich mit dem Programmieren von Controllern anfing (~2010/2011) diese Boards noch nicht gab. Ich musste damals ganz bei 0 anfangen mit einem Atmel ATMega 8 und der Sprache C.

Dank Fabian W., einem Zuschauer und Freund von mir, wollte nach seinen Erfahrungen mit dem Arduino richtig in die C-Programmierung einsteigen. Da habe ich mir gedacht: Warum nicht ein Videotutorial machen ?

Ich habe nun begonnen, ein sehr ausführliches Tutorial zu produzieren, wobei ich sehr grundlegend auf Digitaltechnik eingehen möchte. Anschließend gibt es ein komplettes C-Tutorial, das euch die Programmiersprache nahe bringt und zum Ende gibt es diverse hardwarenahe Praxisbeispiele und ausführliche Erklärungen dazu.

Ihr wollt einen LED-Würfel, einen Quadcopter, 3D-Drucker oder einen mp3-Player bauen? Dann zieht euch das Tutorial rein ;)
2. Digitaltechnik
Zuletzt aktualisiert: 13.12.2015

Zu Beginn ein wenig Einführung in Digitaltechnik.

Im Vergleich zur Analogtechnik, bei der Spannungen und Ströme eine wichtige Rolle spielen, definiert sich Digitaltechnik ausschließlich durch Zustände. Es gibt zwei verschiedene Zustände: VCC, also "High" bzw. logisch "1", oder GND, oder "LOW" bzw. "0". Um mit solchen Zuständen etwas anfangen zu können, benötigt man ein passendes Zahlensystem: das Binärsystem.

1 + 1 = 10

Falsch? In der "Dezimalschreibweise" wäre es falsch. Aber in der binären nicht. Warum? Binärzahlen gehen nicht von 0 - 9, bevor sie in einen höheren Wertigkeitsbereich übergehen, sondern nur von 0 bis 1. Jeder Wertigkeitsbereich ist eine Potenz von zwei. 2^1 = 2, das entspricht der binären Zahl 10. Zur Unterscheidung wird an die Zahl der Buchstabe "b" angehängt: 10b. Eine andere Schreibweise ist die hexadezimale Schreibweise. Dort geht jeder Wertebereich von 0 bis 15. Damit es da keine Schwierigkeiten bei der Darstellung gibt, wurden die Zahlen 10 bis 15 durch die Buchstaben A bis F ersetzt. Die Zahl 16 (eine weitere Zweiterpotenz btw) entspricht dann der Zahl "10h".

In der Digitaltechnik spricht man von Logik, wenn die "Boolesche Algebra" angewandt wird. Dabei geht es um logische Verknüpfungen digitalen Signalen. Übliche Operatoren sind + (OR), * (AND) und NOT. Für jeden Operatoren gibt es passende Wertetabellen:

AND
ABX
000
010
100
111


OR
ABX
000
011
101
111


NOT
AX
01
10


Logische Schaltungen werden z.B. zur Codierung benutzt. Somit wird z.B. ein bestimmter Ausgang nur dann geschaltet, wenn eine spezielle Binärkombination am Eingang anliegt. So können z.B. Speicherzellen adressiert oder Befehle (de-)codiert werden.
3. STM32, Der Mikrocontroller
Zuletzt aktualisiert: 17.02.2016

Nach langer Wartepause und dem Grundlagen-Tutorial in C, beginnt nun das eigentliche Mikrocontroller-Tutorial.

Bild Nr. 2

Zu Beginn müssen aber noch einige Dinge organisiert werden, damit du damit beginnen kannst. Dabei handelt es sich erst einmal um folgende Elemente:

STM32F103RB NUCLEODas eigentliche Entwicklerboard von ST. Ein sehr praktisches Kit für Einsteiger mit allem, was man für den Beginn braucht.Reichelt, Conrad
BreadboardDamit man zu Beginn nicht schon direkt so viel löten muss, gibt es Steckbretter oder Breadboards. Darauf kann man schon einmal kleine Schaltungen durch Stecken der Bauteile realisieren.Reichelt, Conrad, Amazon
SteckbrückenZur Verbindung von Bauteilen und dem STM32 Nucleo braucht man natürlich auch Leitungen. Für Steckbretter empfehlen sich sogenannte Steckbrücken.Reichelt, Conrad, Amazon
ST-Link V2Für den Fall, dass du bereits ein eigenes Design entwickeln willst, kannst du zum Programmieren einen günstigen Klon des ST-LinkV2 Debuggers bei eBay kaufen.eBay


Zum eigentlichen Programmieren auf dem PC nutze ich die CooCox IDE zusammen mit einer GCC Toolchain aus dem Launchpad:

- CooCox: http://adf.ly/1X56dQ
- GCC ARM Embedded: http://adf.ly/1X4w8o

Für Linux-User habe ich ein zusätzliches Anleitungs-Video gemacht, indem ich genau erkläre, wie man die Entwicklungsumgebung um Eclipse richtig einrichtet, um mit dem STM32 Nucleo Board durchstarten zu können:

- Eclipse Mars C++: http://adf.ly/1X4vyl
- GCC Toolchain: http://adf.ly/1X4w8o
- GNU ARM Eclipse Plugin: http://adf.ly/1X4wG3
- OpenOCD for GNU ARM Eclipse: http://adf.ly/1X4wNq
Neuestes Video zum Thema:
>> Alle Videos
Downloads zum Thema: