Bitbanging

Dazu steht was in der Wikipedia, was nicht wirklich falsch ist (das Meiste mit dem englischen Artikel harmonisiert), aber auch nicht wirklich hilfreich - ein typischer Lexikoneintrag eben :-) Hier nun meine Version (deSilva):


 * Bitbanging** ist das Erzeugen eines (komplexen) elektrischen Signals durch Software unter Nutzung nur und ausschließlich des Schaltens eines (digitalen) Ausgangs bzw. das Analysieren eines Signals nur durch "Lesen" eines (digitalen) Eingangs.

Man muss also "im richtigen Augenblick" die Flanken steuern, und "rechtzeitig" da sein, um eine Änderung am Eingang zu erkennen.

Grundsätzlich geschieht auch "in Hardware" nichts anderes; man ist hier aber in einer anderen Zeitskala. Software: Einige 100ns (<10MHz) - Hardware einige 100 ps (<10GHz).

Ein weiterer Qualitätsaspekt ist die Präzision des Signals (das Gegenteil heißt: "Jitter"). Wenn in der Software "Tasks" ablaufen oder komplexe Algorithmen, dann kann es hier zu "schlechten" Signalen kommen; was übrigens oft nur ein konventionelles Missverständnis ist. Echtzeitverarbeitung heißt nicht: "So schnell wie möglich!" sondern "Rechtzeitig!" :-)

Ein komplexes Signal in einer Schaltung (einem Chip, einer "Funktionseinheit") zu generieren oder zu analysieren bringt zudem oft die Sicherheit einer etablierten (und für "reine" Elektroniker verständlichen!) Implementierung mit sich. Und einige Schaltkreise mehr oder weniger im Silizium eines Mikrocontrollers kosten heute nichts mehr - die Preise sind eher "virtuell" und nahezu ausschließlich von der produzierten Stückzahl abhängig: Ab 10 Mio ist eigentlich alles wurscht.

Die einfachste und sicherste Art des Bitbanging besteht im "Lauern" auf das Signal in einer engen Programmschleife. Leider kann der Prozessor dann nichts anderes mehr tun (und - ein Nebenaspekt - verbraucht recht viel Strom für diese "Idle Loop"). Aus diesen ganzen Gründen ist "Bitbanging" bei Profis wenig beliebt.

Der Entwickler des **Parallax Propellers** hat nun 8 Universalprozessoren in den Chip gepackt; somit können sieben "lauern" und einer arbeitet wirklich. Oder man wählt eine andere Aufteilung. Dieser Ansatz (auch noch zu "low cost") ist für jeden Informatiker faszinierend!

Viele genauso teure konventionelle Mikrocontroller enthalten nicht einmal sieben "Funktionseinheiten"! Und die wären dann auch hoch speziell (aber auch - blöd! - deutlich schneller und brauchen weniger Strom...)

Diese 8 Prozessoren des Propellers sind ganz kleine "ARM" Chips, 32-Bit Zwei-Adress-Befehle, je 2k Byte Speicher, mit zusätzlich 4 oder 5 ganz speziellen superpraktischen Befehlen. Dazu kommen 32k Byte allgemein verwendbarer globaler RAM.

Wer zwischen den Zeilen lesen kann, der vermutet bereits richtig, dass man den Propeller effektiv nur in Assembler programmieren kann. Aber das macht total Spaß :-) Da dies aber die wenigsten können/wollen, wird die volle Leistung des Propellers kaum je erreicht. Üblicherweise wird 5% erreicht, und man ist dann wieder auf der Ebene eines "Normal-Mikrocontrollers" (und weit entfernt von einem modernen ARM-Chip wie er in Smartphones, Tablets und im RaspberryPi eingebaut ist)