Technische Informatik; Hardwarenahe Programmierung

Mikrocontroller Programmierung

Table of Contents

  1. ARM Mbed
  2. Arduino IDE
  3. Links

Inhalt

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

Inhalt


All wikipages