<p>Das gesamte Softwareprojekt besteht aus zwei Teilen: <br/>
Die <em><b>Firmware</b></em> ist die Software auf dem Mikrocontroller (MCU) des Board 15. Der Mikrocontroller steuert die Peripherie (ADCs, DACs, ...) über einen SPI-BUS. <br/>
Der zweite Teil von <aclass="el"href="classB15F.html">B15F</a> ist die <em><b>Steuersoftware</b></em>, die auf dem PC ausgeführt wird. Diese sendet über eine USART-Schnittstelle (RS-232) Befehle an den Mikrocontroller. <br/>
Die Steuersoftware besitzt ein <em>CLI</em> (command line interface) mit einer Benutzerschnittstelle für die einfache Fernsteuerung des <aclass="el"href="classB15F.html">B15F</a>. <br/>
Außerdem wird eine Bibliothek (<em>b15fdrv</em>) installiert, die eine einfache Entwicklung kleiner Steuerprogramme erlaubt.</p>
<p>(a) Laden Sie das <ahref="https://raw.githubusercontent.com/devfix/b15f/master/install">Installationsscript</a> herunter, am besten nach ** /tmp/** <br/>
(b) Passen Sie in der Datei <em>Makefile</em> (im aktuellen Verzeichnis) die Option "MCU = ..." an die MCU des vorliegenden Boards an. <br/>
<b>Achtung</b>: <em>atmega1284</em> und <em>atmega1284p</em> sind nicht identisch! <br/>
(c) Fügen Sie den Nutzer <em>famulus</em> zu Gruppe <em>dialout</em> hinzu: <b>sudo adduser famulus dialout</b><br/>
(d) Schreiben Sie (mit root-Rechten) Folgendes in die Datei "/etc/udev/rules.d/60-olimex.rules": <br/>
</p><divclass="fragment"><divclass="line">ATTR{idVendor}=="03eb", ATTR{idProduct}=="2104", MODE="660", GROUP="dialout"</div></div><!-- fragment --><p> Damit wird per udev-rule der Zugriff auf das ISP-Programmiergerät ohne root-Rechte erlaubt. <br/>
(e) Laden Sie die udev-Regeln neu ein: <b>sudo udevadm control –reload-rules</b><br/>
(f) Stoße Verarbeitung der udev-Regeln an: <b>sudo udevadm trigger</b><br/>
(g) Programmiergerät rausziehen, drei Sekunden warten, wieder hineinstecken <br/>
(h) Kompiliere Firmware: <b>make</b><br/>
(i) Lade Firmware auf das B15: <b>make upload</b><br/>
<p>Verwendet wird die Bibliothekt <em>b15fdrv</em>. Die wichtigste Klasse für die Steuerung des Board 15 ist <ahref="https://devfix.github.io/b15f/html/classB15F.html">B15F</a>. <br/>
Dort befindet sich auch eine Übersicht der verfügbaren Befehle. <br/>
Hinweise zur Struktur (sind für die Verwendung nicht weiter wichtig): <br/>
Die Header-Dateien sind global unter "/usr/include/b15f/" installiert. Die <em>b15fdrv</em>-Bibliothekt befindet sich in dem Verzeichnis "/usr/lib/" und die ausführbaren Programme (plotty, b15fcli) "/usr/bin/".</p>
<p>In dem Verzeichnis <ahref="https://github.com/devfix/b15f/tree/master/control/examples">b15f/control/examples</a> (des Repositories) sind einige Beispiele für die Verwendung einzelner <aclass="el"href="classB15F.html">B15F</a> Funktionen. <br/>
Zu jedem Beispiel gehört eine <em>main.cpp</em> mit dem Quellcode und eine <em>Makefile</em>-Datei. Durch das Makefile wird beim Kompilieren und Linken die Bibliothek <em>b15fdrv</em> automatisch einbezogen. <br/>
Das Beispiel muss durch Sie also nur mit <b>make</b> kompiliert und mit .**/main.elf** gestartet werden.</p>
Falls noch keine existiert, wird automatisch eine erzeugt und Verbindung zum Board hergestellt. <br/>
Ab jetzt können auf dem Object <code>drv</code> verschiedene Methoden angewand werden, siehe <ahref="https://devfix.github.io/b15f/html/classB15F.html">B15F</a>. <br/>
<p>Die Beschreibung zu Plottyfile befindet sich <ahref="https://devfix.github.io/b15f/html/classPlottyFile.html">hier</a>. <br/>
Nach dem Include von plottyfile kann ein neues Objekt erzeugt und konfiguriert werden: <br/>
</p><divclass="fragment"><divclass="line"> {C++}</div><divclass="line">PlottyFile pf; </div><divclass="line">pf.setUnitX("V"); </div><divclass="line">pf.setUnitY("V"); </div><divclass="line">pf.setUnitPara("V"); </div><divclass="line">pf.setDescX("U_{OUT}"); // Markdown wird unterstuetzt </div><divclass="line">pf.setDescY("U_{IN}"); </div><divclass="line">pf.setDescPara(""); </div><divclass="line">pf.setRefX(5); </div><divclass="line">pf.setRefY(5); </div><divclass="line">pf.setParaFirstCurve(0); </div><divclass="line">pf.setParaStepWidth(0);</div></div><!-- fragment --><p> Messpunkte können anschließend hinzugefügt werden. <br/>
Dabei gehören Punkte mit dem gleichen Index für <code>curve</code> (<em>uint8_t</em>) zur selben Kurve und erhalten durch Plotty automatisch die gleiche Farbe. <br/>
</p><divclass="fragment"><divclass="line"> {C++}</div><divclass="line">pf.addDot(Dot(x, y, curve));</div></div><!-- fragment --><p><em>Wichtig</em>: Die Werte für <code>x</code> und <code>y</code> sind <em>uint16_t</em>, also keine Gleitkommazahlen. Stattdessen sind sie auf RefX und RefY bezogen. </p>