Rechenknechte mit integrierten Schaltungen kamen in den 1960er Jahren auf den Markt und haben seit dieser Zeit beständig an Rechenleistung und damit in Zusammenhang stehend an Komplexizität zugelegt. Je komplexer ein System, um so wahrscheinlicher schleichen sich Fehler in die Konstruktion ein. Recht früh in der Geschichte der Computersysteme kam daher der Begriff "Bug" (Englisch für "Käfer") auf, der einen Systemfehler in der Hard- oder Software eines Computers bezeichnet. In früheren, elektromechanischen Computern handelte es sich meist tatsächlich ein Insekt, das zwischen Kontakten geklemmt hat, daher die Bezeichnung. Je mehr Transistoren in den Schaltungen und je mehr Zeilen Code die zur Ansteuerung benötigte Software umfasst, um so wahrscheinlicher schleichen sich Fehler im System ein. In heutigen Rechenknechten, sei es Smatrphone, Tablet oder PC, stecken Mikroprozessoren mit Milliarden von Transistoren und diese werden über Milliarden von Codezeilen angesteuert. In jedem dieser Dinger stecken mittlerweile seeeehr viiieeele Fehler im System. Daran ändern auch regelmäßige Updates kaum etwas, denn mit diesen Updates werden regelmäßig auch neue Fehler implementiert. Das ist halt so!
Mikrocontroller - zurück zu den Wurzeln
Wenn also etwas "richtig", d.h. möglichst ohne irgendwelche Fehler, so wie geplant, ablaufen soll, dann sollte man das vorgesehene System so "schlank" wie irgend möglich gestalten. Bei einem Mikrocontroller handelt es sich um einen Mikroprozessor (=Recheneinheit) mit integrierter Peripherie (=Ein-/Ausgabepins). Ein Mikroprozessor ist nicht notwendigerweise ein "schlankes System", daher sollte man für den jeweiligen Anwendungszweck einen Typen auswählen, der die Anforderungen bezüglich der benötigten Rechenleistung gerade so erfüllt. Somit bleibt der Code zur Ansteuerung klein, genau wie der nötige Energieverbrauch im Betrieb.
Während in PCs & Co. mittlerweile 64Bit-Prozessoren mit 8 oder mehr Rechenkernen stecken, reicht für die wirklich wichtigen Steuerungsaufgaben von Maschinen meist auch ein einzelner 8-bit Mikrocontroller, wie wir im Verlauf dieses Tutorials sehen werden.'
Codeausführung in Echtzeit
Während der Code, den ein PC beim Booten ausführt in Megabytes gemessenwird, sind es bei einem Mikrocontroller nur wenige Bytes. Entsprechend unterscheiden sich die Systeme auch in der Zeitdauer für den Bootvorgang:
Während ein Microcontroller in einem Sekundenbruchteil gestartet ist und den gewünschten Code ausführt, sind es beim PC mit unter Minuten.
Auch in der Ausführung eines Programmes gibt es gravierende Unterschiede:
Beim PC laufen üblicherweise recht viele Programme (mehr ooder weniger) gleichzeitig, beim Microcontroller läuft nur ein einziges Programm, das über sämtliche Ressourcen des Chips verfügen kann. Damit wird dieses Programm auch niemals von einem anderen Programm ausgebremst. Der Code wird zeitlich immer geneu so ausgeführt, wie vom Quellcode vorgegeben. Man spricht von Echtzeitausführung (English: Real time Computing).
Das hat enorme Vorteile, denn gerade bei der Maschinensteuerung sind Pausen absolut unerwünscht. Bei 3D-Druckern, CNC-Fräßen oder Laserschneidern führt das dazu, dass das Werkstück ruiniert wird. Auch z.B. der Bremsassistent in einem Auto oder die Triebwerkssteuerung einer Rakete sollten nicht durch irgendwelche im Hintergrund laufenden Programme abgelenkt werden.
Lernt, effizient zu programmieren
In diesem Tutorial werde ich euch von einer blinkenden LED, einem sich drehenden Motor bis hin zu einfacher Maschinensteuerung führen. Wer den Biss hat, sich durch die Kapitel hindurchzuarbeiten, sollte keine Schwirigkeiten haben, eigene Ideen in die Realität umzusetzen.
Ich verwende möglichst simple Mikrocontroller mit möglichst wenigen Ressourcen, einfach, um euch zu zeigen, was mit wenig Rechenleistung alles machbar ist, sobald man wirklich verstanden hat, wie Bits &Bytes funktionieren. Je weniger Zeilen ein Programm umfasst, um so unwahrscheinlicher ist, dass sich darin ein Bug versteckt, der euer Projekt ruiniert. Wohin das stupide rufen nach mehr Rechenleistung führt, kann jeder an seinem PC sehen: Der größte Teil der Rechenleistung wird für Hintergrundprozesse wie Updates prüfen, dem Suchen nach Schadsoftware oder dem "nach Hause senden" eurer Daten verbraten. Wenig Codezeilen = Kein Platz für Schadsoftware (einen Baum versteckt man halt am besten in einem Wald).
Abbildung 1:
Vergleich eines sehr kompakten Einplatinen-PC mit einem Mikrocontroller.
Genug der salbungsvollen Worte, weiter geht's mit dem nächsten Kapitel...
Gummibärchen als Nervennahrung beim Programmieren und der Betrieb dieses Servers verschlingen mein Geld.
Helft mit einer Motivationsspritze, dieses Projekt am Laufen zu halten.