.. | ||
drv | ||
ui | ||
cli.cpp | ||
doxygen-cfg | ||
Makefile | ||
README.md |
B15F Benutzerhandbuch
Hinweise:
- Terminal-Befehle sind fett gedruckt
- Als Student/Studentin können Sie davon ausgehen, dass die Steuersoftware auf Ihrem Arbeitsplatz bereits installiert ist
- D.h. Sie müssen zu Beginn jeder Übung nur die Firmware neu aufspielen (Installation Abschnitt 3)
Einführung
Das gesamte Softwareprojekt besteht aus zwei Teilen:
Die Firmware ist die Software auf dem Mikrocontroller (MCU) des Board 15. Der Mikrocontroller steuert die Peripherie (ADCs, DACs, ...) über einen SPI-BUS.
Der zweite Teil von B15F ist die Steuersoftware, die auf dem PC ausgeführt wird. Diese sendet über eine USART-Schnittstelle (RS-232) Befehle an den Mikrocontroller.
Die Steuersoftware besitzt ein CLI (command line interface) mit einer Benutzerschnittstelle für die einfache Fernsteuerung des B15F.
Außerdem wird eine Bibliothek (b15fdrv) installiert, die eine einfache Entwicklung kleiner Steuerprogramme erlaubt.
Installation
1. Abhängigkeiten installieren
(a) sudo apt-get update
(b) sudo apt-get install git avr-libc avrdude libncurses5-dev g++ astyle
2. Das Repository klonen
(a) cd /home/famulus/
(b) git clone "https://github.com/devfix/b15f.git"
3. Die Firmware installieren
(a) cd "/home/famulus/b15f/firmware"
(b) Passen Sie in der Datei Makefile die Option "MCU = ..." an die MCU des vorliegenden Boards an
(atmega1284 und atmega1284p sind nicht identisch!)
(c) make
Wenn udev richtig konfiguriert wurde:
(d I) make upload
Sonst:
(d II) sudo make upload
4. Die Steuersoftware (Bibliothek & CLI) installieren
(a) cd "/home/famulus/b15f/control/src"
(b) make
(Die Warnungen durch doxygen können ignoriert werden.)
(c) sudo make install
Aktualisierung
(a) cd /home/famulus/b15f/
(b) git pull --prune
(c) cd "/home/famulus/b15f/firmware"
(d) make clean
(e) cd "/home/famulus/b15f/control/src"
(f) make clean
(g) Installation ab Schritt 3 wiederholen
Die CommandLineInterface (CLI) benutzen
(a) Öffnen Sie ein Terminal und maximieren Sie das Fenster
(b) Start des CLI erfolgt durch b15fcli
(c) Die Navigation erfolgt durch <Tab>, die Pfeiltasten und <Enter> oder die Maus
(d) Mit <Strg + c> kann das Programm sofort verlassen werden
Eigene Programme mit B15F schreiben
Grundsätzliches
Verwendet wird die Bibliothekt b15fdrv.
Die wichtigste Klasse für die Steuerung des Board 15 ist B15F.
Dort befindet sich auch eine Übersicht der verfügbaren Befehle.
Beispiele
In dem Verzeichnis b15f/control/examples sind einige Beispiele für die Verwendung einzelner B15F Funktionen.
Zu jedem Beispiel gehört eine main.cpp mit dem Quellcode und eine Makefile-Datei. Durch das Makefile wird beim Kompilieren und Linken die Bibliothek b15fdrv automatisch einbezogen.
Das Beispiel muss durch Sie also nur mit make kompiliert und mit ./main.elf gestartet werden.
Den B15F Treiber verwenden
Benötigt wird der B15F-Header:
#include <b15f/b15f.h>
und der Header für die plottyfile-Generierung, falls mit Kennlinien gearbeitet werden soll:
#include <b15f/plottyfile.h>
Für die Interaktion wird eine Referenz auf die aktuelle Treiberinstanz gespeichert:
B15F& drv = B15F::getInstance();
Falls noch keine existiert, wird automatisch eine erzeugt und Verbindung zum Board hergestellt.
Ab jetzt können auf dem Object drv
verschiedene Methoden angewand werden, siehe B15F.
Kennlinien mit plottyfile generieren
Die Beschreibung zu Plottyfile befindet sich hier.
Nach dem Include von plottyfile kann ein neues Objekt erzeugt und konfiguriert werden:
PlottyFile pf;
pf.setUnitX("V");
pf.setUnitY("V");
pf.setUnitPara("V");
pf.setDescX("U_{OUT}"); // Markdown wird unterstuetzt
pf.setDescY("U_{IN}");
pf.setDescPara("");
pf.setRefX(5);
pf.setRefY(5);
pf.setParaFirstCurve(0);
pf.setParaStepWidth(0);
Messpunkte können anschließend hinzugefügt werden.
Dabei gehören Punkte mit dem gleichen Index für curve
(uint8_t) zur selben Kurve und erhalten durch Plotty automatisch die gleiche Farbe.
pf.addDot(Dot(x, y, curve));
Wichtig: Die Werte für x
und y
sind uint16_t, also keine Gleitkommazahlen. Stattdessen sind sie auf RefX und RefY bezogen.