© istockphoto.com/Auris
Erste Schritte mit dem Arduino 101

Star Fox trifft Arduino


Auf den ersten Blick gibt es nur wenig Ähnlichkeit zwischen den Abenteuern von Fox McCloud und den neuesten Platinen aus dem Hause Banzi. Das ist allerdings nicht ganz wahr: Lassen Sie mich zeigen, wie die heldenhaften Piloten, Blue­toothfunk und Bewegung zusammengehören.

Die Geschichte der IT ist interessant, treibt sie doch die seltensten Blüten. In den Neunzigern beauftragte Nintendo Argonaut mit der Entwicklung eines Grafikbeschleunigers für das damals schon etwas angestaubte Nintendo Entertainment System.

Der resultierende Prozessor lebt bis heute unter der Bezeichnung ARC weiter; Intel nutzt ihn im Zusammenspiel mit einem hauseigenen X86-Prozessor zur Realisierung eines als Quark SE bezeichneten Mikroprozessormoduls (Abb. 1).

bosbach_arduino_1.tif_fmt1.jpgAbb. 1: Der ARC-Kern sitzt im Block „Sensor SubSystem“ (Bildquelle: [1])

Die Streitigkeiten des Arduino-Teams haben dazu geführt, dass es zwei Unternehmen gibt, die sich um denselben Namen balgen. Der Arduino 101 ist ein Projekt der Truppe um Banzi: Wer auf Google nach Arduino 101 und dazugehöriger Software sucht, sollte stattdessen den String Genuino verwenden.

Für die Programmierung ist jede beliebige Version der Geduino-IDE ab Version 1.6.7 verwendbar, das Herunterladen der Board-Support-Dateien erfolgt durch Abarbeitung der Kommandos Werkzeuge | Board* | Boardverwalter.

Suchen Sie im nächsten Schritt nach dem String „Genuino 101“ und installieren Sie das Paket „Intel Curie Boards by Intel“. Das Herunterladen der rund 200 MB nimmt etwas Zeit in Anspruch. Wir haben die folgenden Schritte unter Windows 8.1 durchgeführt; lassen Sie die Workstation bei der Installation nicht unbeaufsichtigt, weil diverse Securityanfragen zu quittieren sind.

Nach der erfolgreichen Installation des Board-Supportpakets müssen Sie darauf achten, dass die Arduino-IDE den neuen Prozessrechner nicht automatisch erkennt. Verbinden Sie ihn mit einem Druckerkabel mit dem PC und warten Sie, bis Windows die automatische Hardwareerkennung abgeschlossen hat. Daraufhin können Sie das Board in der Rubrik Werkzeuge-Board auswählen; achten Sie darauf, auch den Port einzustellen. Bei der ersten Programmieraufgabe wollen wir eine Rechteckquelle ausgeben. Dazu dient folgender Code, der für Arduino-Entwickler keinerlei Neuerungen birgt:

void setup() { pinMode(13, OUTPUT); } void loop() { digitalWrite(13, HIGH); digitalWrite(13, LOW); }

Manchmal tritt beim Deployment der Software auf dem Prozessrechner ein Fehler nach der Art „ERROR: Device is not responding. Das Gerät reagiert nicht.“ auf: Es handelt sich dabei um einen bekannten Bug in der Intel-Toolchain, der bisher nicht behoben wurde.

Zu seiner Umgehung des Problems öffnen Sie den oben erwähnten Board-Manager abermals, und deinstallieren Sie die Version 1.0.5 des Board-Supportpakets. Nutzen Sie daraufhin den in der Abbildung 2 gezeigten Versionsauswahldialog, um die Version 1.0.4 herunterzuladen und zu installieren. Im Anschluss sollte normalerweise alles problemlos funktionieren.

bosbach_arduino_2.tif_fmt1.jpgAbb. 2: Ein Down­grade wirkt Wunder

Im Test mit einem Modulationsdomänenanalysator präsentiert sich jedoch folgendes Bild: Der Arduino 101 mag zwar wesentlich schneller arbeiten, die Wellenformstabilität des Arduino Uno ist dagegen allerdings wesentlich höher.

Das deutet in der praktischen Erfahrung normalerweise darauf hin, dass der Prozessrechner mit einem Echtzeitbetriebssystem, Microkernel oder Ähnlichem arbeitet, die Rechenleistung für eigene Aufgaben verbraucht.

Als ersten kleinen Versuch hängen wir statt dem Modulationsdomänenanalysator einen Digitalspeicher­oszillographen an und ändern das Programm wie in Listing 1 gezeigt.

Listing 1

void setup() { pinMode(13, OUTPUT); } void loop() { digitalWrite(13, HIGH); digitalWrite(13, LOW); digitalWrite(13, HIGH); digitalWrite(13, LOW); digitalWrite(13, HIGH); digitalWrite(13, LOW); }

Die praktische Erfahrung lehrt, dass Echtzeitbetriebssysteme, VMs und andere ihre Aktivitäten gerne beim Abtragen von Stackframes erledigen. Die Änderung sorgt dafür, dass der Prozessrechner nun drei hintereinanderliegende Wellen ausgibt – die Totzeit ist am in Abbildung 3 gezeigten Oszillogramm klar erkennbar.

bosbach_arduino_3.tif_fmt1.jpgAbb. 3: Bei „asymmetrischen“ Phänomenen ist Single Shot Triggering hilfreich

Witzigerweise trifft dies auch auf die Wellenform des „einfachen“ Wellenpakets zu: Es zeigt sich am Arduino 101 stark verformt, während der primitivere Arduino Uno eine wesentlich symmetrischere Wellenform hinbekommt.

Angemerkt sei an dieser Stelle noch, dass der Arduino 101 ein Prozessrechner der „zweiten“ Generation ist. Seine Signalspannung beträgt nur 0 bis 3,3 Volt. In der Dokumentation findet sich allerdings folgende Passage, die man nicht ausprobieren sollte: „The microcontroller on the 101 runs at 3.3 V but all I/O pins are protected against 5 V overvoltage. This means that the output signals will be in the range 0 – 3.3 V but you can apply up to 5 V on a pin without damaging the board.“

Analyse des Strombedarfs

Schon weil Intel in...

Neugierig geworden? Wir haben diese Angebote für dich:

Angebote für Teams

Für Firmen haben wir individuelle Teamlizenzen. Wir erstellen Ihnen gerne ein passendes Angebot.

Das Library-Modell:
IP-Zugang

Das Company-Modell:
Domain-Zugang