Technische Informatik; Hardwarenahe Programmierung
Mikrocontroller Programmierung
Mikrocontroller Programmierumgebung ist meist eine aus Soft- und Hardware bestehende Physical-Computing-Plattform. Die Hardware besteht aus einem E/A-Board mit einem Mikrocontroller und analogen und digitalen Ein- und Ausgängen. Die Entwicklungsumgebung sind sehr unterschiedlich gestaltet, von Kommandozeile über eigene Plattformen bis zur Integration in große IDEs wie z.B. Microsoft Visual Studio. Die Programmierung selbst erfolgt in einer C bzw. C++-ähnlichen Programmiersprache, wobei technische Details wie Header-Dateien vor den Anwendern weitgehend verborgen werden und umfangreiche Bibliotheken und Beispiele die Programmierung vereinfachen. Sehr viele Mikrocontroller Hersteller bieten meist auch Entwicklerboards mit entsprechender Programmierun´mgebung oder IDEs an, wobei hier zwei grundsätzliche Ansätze verwendet werden:
ARM Mbed¶
Die Firma ARM stellt selbst keine Prozessoren/Controller her, sondern entwickelt nur sogenannte "IP-Cores", die von Herstellern wie Atmel, Infineon, ST, NXP, TI und vielen anderen lizenziert werden (siehe ARM Cortex Mikrocontroller). Für die SW-Entwicklung stehen ein Online Simulator, ein Online Compiler und eine Desktop IDE zur Verfügung. Die Projekte können aber auch z.B. aus dem Online Compiler in unterschiedliche Entwicklungsumgebungen exportiert werden.
Das Hello World-Programm für Mikrocontroller ist typischerweise das LED-Blink Programm Blinky und sieht meist folgendermaßen so aus wie das im Online Compiler verwendete:
#include "mbed.h" DigitalOut myled(LED1); // Instanziierung des Objekts myled int main() { while(1) { myled = 1; // setze myled-Objekt auf 1 (LED leuchtet) wait(0.2); // warte 200ms myled = 0; // setze myled-Objekt auf 0 (LED aus) wait(0.2); } }
Oder im mbed Simulator:
#include "mbed.h" DigitalOut led(LED1); // Instanziierung des Objekts led int main() { while (1) { led = !led; // invertiere das led-Objekt printf("Blink! LED is now %d\n", led.read()); // Zugriff auf die Methode read über den "."-Operator wait_ms(500); // warte 500 ms } }
Arduino IDE¶
Blinky für die Arduino IDE. Hier wird diese IDE meist für die Programmierung der ESP Mikrocontroller ESP8266 bzw. ESP32 eingesetzt. (Alternativen für die Arduino IDE)
// the setup function runs once when you press reset or power the board void setup() { pinMode(LED, OUTPUT); // initialize digital pin LED as an output. } // the loop function runs over and over again forever void loop() { digitalWrite(LED, HIGH); // turn the LED on (HIGH is the voltage level) delay(1000); // wait for a second digitalWrite(LED, LOW); // turn the LED off by making the voltage LOW delay(1000); // wait for a second }
setup() | Die setup() Funktion wird nach jedem Einschalten oder Zurücksetzen eines Mikrocontrollers nur einmal ausgeführt und dient dazu die Anfangswerte zu initialisieren (festlegen). |
loop() | Die loop() Funktion entspricht der while(1)-Schleife und durchläuft nacheinander die Befehle in der Schleife. |
sketch | Ein Sketch ist der Name, den Arduino für ein Programm verwendet. Dies ist die Codeeinheit, die auf ein Arduino/ESP-Board hochgeladen und dort ausgeführt wird. |
Quote:
The 'simple' Arduino 'it just work' philosophy ...