From c200f5da63bd9e6fd7abba6b5e813b7cc0e10ebb Mon Sep 17 00:00:00 2001 From: Tristan Krause Date: Wed, 15 May 2019 15:39:16 +0200 Subject: [PATCH] install added --- driver/{src => examples}/main.cpp | 0 driver/examples/pegel/Makefile | 30 +++++ driver/examples/pegel/main.cpp | 178 ++++++++++++++++++++++++++++++ driver/src/Makefile | 17 ++- 4 files changed, 221 insertions(+), 4 deletions(-) rename driver/{src => examples}/main.cpp (100%) create mode 100644 driver/examples/pegel/Makefile create mode 100644 driver/examples/pegel/main.cpp diff --git a/driver/src/main.cpp b/driver/examples/main.cpp similarity index 100% rename from driver/src/main.cpp rename to driver/examples/main.cpp diff --git a/driver/examples/pegel/Makefile b/driver/examples/pegel/Makefile new file mode 100644 index 0000000..fc23b62 --- /dev/null +++ b/driver/examples/pegel/Makefile @@ -0,0 +1,30 @@ +# Name: Makefile +# Project: B15F (board15 Famulus Edition) +# Author: Tristan Krause +# Creation Date: 2019-05-15 + +# Environment +COMPILER_PATH = g++ + +# Options +CFLAGS = -std=c++17 -O3 -Wall -Wextra +LDFLAGS = -lb15fdrv +OBJECTS = main.o +OUT = main.elf + +COMPILE = $(COMPILER_PATH) $(CFLAGS) + +main: $(OBJECTS) + $(COMPILE) $(OBJECTS) -o $(OUT) $(LDFLAGS) + +help: + @echo "This Makefile has the following targets:" + @echo "make main .... to compile" + @echo "make clean ... to delete objects and executables" + +clean: + @echo "Cleaning..." + rm -f $(OBJECTS) $(OUT) + +.cpp.o: + $(COMPILE) -c $< -o $@ diff --git a/driver/examples/pegel/main.cpp b/driver/examples/pegel/main.cpp new file mode 100644 index 0000000..84e29b0 --- /dev/null +++ b/driver/examples/pegel/main.cpp @@ -0,0 +1,178 @@ +#include +#include +#include +#include + + +void kennlinieErsterQuadrant() +{ + + B15F& drv = B15F::getInstance(); + PlottyFile pf; + + uint16_t ba[1024]; + uint16_t bb[1024]; + + const uint16_t sample_count = 1024; + const uint16_t delta = 1; + + const uint16_t u_gs_start = 440; + const uint16_t u_gs_delta = 20; + const uint16_t u_gs_end = 600; + + pf.setUnitX("V"); + pf.setUnitY("mA"); + pf.setUnitPara("V"); + pf.setDescX("U_{DS}"); + pf.setDescY("I_D"); + pf.setDescPara("U_{GS}"); + pf.setRefX(5); + pf.setRefY(50); + pf.setParaFirstCurve(u_gs_start); + pf.setParaStepWidth(u_gs_delta); + + uint8_t curve = 0; + + std::cout << "Erfasse Kennlinie erster Quadrant..." << std::endl << std::flush; + + for(uint16_t u_gs = u_gs_start; u_gs <= u_gs_end; u_gs += u_gs_delta) + { + drv.analogWrite1(u_gs); + + drv.analogSequence(0, &ba[0], 0, 1, &bb[0], 0, 0, delta, sample_count); + + for(uint16_t k = 0; k < sample_count; k++) + { + uint16_t i_d = ba[k] - bb[k]; + uint16_t u_ds = bb[k]; + pf.addDot(Dot(u_ds, i_d, curve)); + } + + std::cout << "\033[1K\r" << 1e2 * (u_gs - u_gs_start) / (u_gs_end - u_gs_start) << "%" << std::flush; + + curve++; + } + + std::cout << "\033[1K\r" << std::flush; + + // speichern und plotty starten + pf.writeToFile("test_plot"); + pf.startPlotty("test_plot"); +} + +void kennlinieZweiterQuadrant() +{ + B15F& drv = B15F::getInstance(); + PlottyFile pf; + + uint16_t ba[1024]; + uint16_t bb[1024]; + + const uint16_t sample_count = 1024; + const uint16_t delta = 1; + + const uint16_t u_gs_start = 300; + const uint16_t u_gs_delta = 25; + const uint16_t u_gs_end = 700; + + pf.setQuadrant(2); + pf.setUnitX("V"); + pf.setUnitY("mA"); + pf.setUnitPara("V"); + pf.setDescX("U_{GS}"); + pf.setDescY("I_D"); + pf.setDescPara("U_{DS}"); + pf.setRefX(5); + pf.setRefY(50); + pf.setParaFirstCurve(u_gs_start); + pf.setParaStepWidth(u_gs_delta); + + uint8_t curve = 0; + + std::cout << "Erfasse Kennlinie zweiter Quadrant..." << std::endl << std::flush; + + for(uint16_t u_gs = u_gs_start; u_gs <= u_gs_end; u_gs += u_gs_delta) + { + drv.analogWrite1(u_gs); + + drv.analogSequence(0, &ba[0], 0, 1, &bb[0], 0, 0, delta, sample_count); + + curve = 0; + for(uint16_t k = 0; k < sample_count; k++) + { + if(ba[k] > bb[k] && bb[k] % 50 == 0 && bb[k] != 0) + { + uint16_t i_d = ba[k] - bb[k]; + pf.addDot(Dot(u_gs, i_d, bb[k] / 50)); + } + curve++; + } + + std::cout << "\033[1K\r" << 1e2 * (u_gs - u_gs_start) / (u_gs_end - u_gs_start) << "%" << std::flush; + } + + std::cout << "\033[1K\r" << std::flush; + + // speichern und plotty starten + pf.writeToFile("test_plot"); + pf.startPlotty("test_plot"); +} + +void testFunktionen() +{ + B15F& drv = B15F::getInstance(); + + std::cout << "DIP-Switch: " << (int) drv.readDipSwitch() << std::endl; + + + drv.digitalWrite0(0xFF); + drv.analogWrite0(128); + std::cout << (int) drv.digitalRead0() << std::endl;; + std::cout << "adc: " << (int) drv.analogRead(4) << std::endl; + + drv.digitalWrite0(0x00); + drv.analogWrite0(0); + std::cout << (int) drv.digitalRead0() << std::endl;; + std::cout << "adc: " << (int) drv.analogRead(4) << std::endl; + + drv.digitalWrite0(0xFF); + drv.analogWrite0(255); + std::cout << (int) drv.digitalRead0() << std::endl; + std::cout << "adc: " << (int) drv.analogRead(4) << std::endl; + + + std::cout << "Kennlinie..." << std::endl; + uint16_t a[1024]; + uint16_t b[1024]; + drv.analogSequence(0, &a[0], 0, 1, &b[0], 0, 0, 1, 1024); + + /*for(uint16_t i= 0; i < sizeof(a) / sizeof(uint16_t); i++) + { + std::cout << (int) i << " : " << a[i] << " " << b[i] << std::endl; + }*/ + +} + +int main() +{ + //testFunktionen(); + //kennlinieZweiterQuadrant(); + + B15F& drv = B15F::getInstance(); + while(1) + { + //uint8_t be0 = drv.digitalRead0(); + //uint8_t be1 = drv.digitalRead1(); + //uint8_t dsw = drv.readDipSwitch(); + drv.analogRead(0); + drv.analogRead(1); + drv.analogRead(2); + drv.analogRead(3); + drv.analogRead(4); + drv.analogRead(5); + drv.analogRead(6); + drv.analogRead(7); + } + + std::cout << "Schluss." << std::endl; +} diff --git a/driver/src/Makefile b/driver/src/Makefile index 71d3ca8..f3a2495 100644 --- a/driver/src/Makefile +++ b/driver/src/Makefile @@ -8,11 +8,14 @@ COMPILER_PATH = g++ # Options LIB_DRV = ../lib/libb15fdrv.so +LIB_PATH = /usr/lib/ +INCLUDE_PATH = /usr/include/b15f OBJ_MAIN = main.o OUT_CLI = ../bin/cli.elf OBJ_CLI = cli.o CFLAGS = -std=c++17 -O3 -Wall -Wextra -fPIC -LDFLAGS = -lcurses -lpthread +LDFLAGS_DRV = -lcurses -lpthread +LDFLAGS = $(LDFLAGS_DRV) -lb15fdrv OBJECTS_DRV = drv/usart.o drv/b15f.o drv/plottyfile.o drv/dot.o OBJECTS_UI = ui/view.o ui/view_selection.o ui/view_promt.o ui/view_info.o ui/view_monitor.o ui/ui.o @@ -26,13 +29,19 @@ drv: $(OBJECTS_DRV) $(LIB_DRV) cli: drv $(OBJECTS_UI) $(OBJ_CLI) @echo "Linking cli..." mkdir -p ../bin - $(COMPILE) $(OBJ_CLI) $(OBJECTS_UI) -L../lib -Wl,-rpath=../lib -lb15fdrv -o $(OUT_CLI) $(LDFLAGS) + $(COMPILE) $(OBJ_CLI) $(OBJECTS_UI) -L../lib -Wl,-rpath=../lib -o $(OUT_CLI) $(LDFLAGS) +install: drv + cp $(LIB_DRV) $(LIB_PATH) + mkdir -p $(INCLUDE_PATH) + cp drv/*.h $(INCLUDE_PATH) + help: @echo "This Makefile compiles the b15f driver lib and command line interface (CLI):" @echo "make ......... to compile all" @echo "make drv ..... to compile the b15f driver lib" - @echo "make cli .... to compile the cli" + @echo "make cli ..... to compile the cli" + @echo "make install . to install the lib and headers on this machine" @echo "make clean ... to delete objects and executables" clean: @@ -45,4 +54,4 @@ clean: $(LIB_DRV): @echo "Linking driver library..." mkdir -p ../lib - $(COMPILE) $(OBJECTS_DRV) -shared -o $(LIB_DRV) $(LDFLAGS) + $(COMPILE) $(OBJECTS_DRV) -shared -o $(LIB_DRV) $(LDFLAGS_DRV)