diff --git a/drv/b15f.cpp b/drv/b15f.cpp index 427e6e4..0c41842 100644 --- a/drv/b15f.cpp +++ b/drv/b15f.cpp @@ -151,7 +151,7 @@ std::vector B15F::getBoardInfo(void) } } -bool B15F::digitaleAusgabe0(uint8_t port) +bool B15F::digitalWrite0(uint8_t port) { try { @@ -164,11 +164,11 @@ bool B15F::digitaleAusgabe0(uint8_t port) catch(DriverException& de) { reconnect(); - return digitaleAusgabe0(port); + return digitalWrite0(port); } } -bool B15F::digitaleAusgabe1(uint8_t port) +bool B15F::digitalWrite1(uint8_t port) { try { @@ -181,11 +181,11 @@ bool B15F::digitaleAusgabe1(uint8_t port) catch(DriverException& de) { reconnect(); - return digitaleAusgabe1(port); + return digitalWrite1(port); } } -uint8_t B15F::digitaleEingabe0() +uint8_t B15F::digitalRead0() { try { @@ -195,11 +195,11 @@ uint8_t B15F::digitaleEingabe0() catch(DriverException& de) { reconnect(); - return digitaleEingabe0(); + return digitalRead0(); } } -uint8_t B15F::digitaleEingabe1() +uint8_t B15F::digitalRead1() { try { @@ -209,11 +209,11 @@ uint8_t B15F::digitaleEingabe1() catch(DriverException& de) { reconnect(); - return digitaleEingabe1(); + return digitalRead1(); } } -bool B15F::analogeAusgabe0(uint16_t value) +bool B15F::analogWrite0(uint16_t value) { try { @@ -226,11 +226,11 @@ bool B15F::analogeAusgabe0(uint16_t value) catch(DriverException& de) { reconnect(); - return analogeAusgabe0(value); + return analogWrite0(value); } } -bool B15F::analogeAusgabe1(uint16_t value) +bool B15F::analogWrite1(uint16_t value) { try { @@ -243,11 +243,11 @@ bool B15F::analogeAusgabe1(uint16_t value) catch(DriverException& de) { reconnect(); - return analogeAusgabe1(value); + return analogWrite1(value); } } -uint16_t B15F::analogeEingabe(uint8_t channel) +uint16_t B15F::analogRead(uint8_t channel) { try { @@ -258,13 +258,14 @@ uint16_t B15F::analogeEingabe(uint8_t channel) catch(DriverException& de) { reconnect(); - return analogeEingabe(channel); + return analogRead(channel); } } bool B15F::analogEingabeSequenz(uint8_t channel_a, uint16_t* buffer_a, uint32_t offset_a, uint8_t channel_b, uint16_t* buffer_b, uint32_t offset_b, uint16_t start, int16_t delta, uint16_t count) { + discard(); try { @@ -278,23 +279,21 @@ bool B15F::analogEingabeSequenz(uint8_t channel_a, uint16_t* buffer_a, uint32_t if(aw != MSG_OK) { - throw std::runtime_error("Out of sync"); - //discard(); - //return analogEingabeSequenz(channel_a, buffer_a, offset_a, channel_b, buffer_b, offset_b, start, delta, count); + std::cout << PRE << "Out of sync" << std::endl; + return analogEingabeSequenz(channel_a, buffer_a, offset_a, channel_b, buffer_b, offset_b, start, delta, count); } - + + uint8_t block[4]; for(uint16_t i = 0; i < count; i++) { - uint8_t block[4]; - bool crc_ok = true; - do + bool crc_ok = readBlock(&block[0], 0); + + if (!crc_ok) { - crc_ok = readBlock(&block[0], 0); - if(!crc_ok) - std::cout << "fordere neu an" << std::endl; + std::cout << PRE << "bad crc" << std::endl; + return analogEingabeSequenz(channel_a, buffer_a, offset_a, channel_b, buffer_b, offset_b, start, delta, count); } - while(!crc_ok); - std::cout << "OK" << std::endl; + buffer_a[offset_a + i] = ((uint16_t) block[0]) | (((uint16_t) block[1]) << 8); buffer_b[offset_b + i] = ((uint16_t) block[2]) | (((uint16_t) block[3]) << 8); @@ -305,7 +304,6 @@ bool B15F::analogEingabeSequenz(uint8_t channel_a, uint16_t* buffer_a, uint32_t return aw; std::cout << PRE << "Da ging etwas verloren" << std::endl; - discard(); return analogEingabeSequenz(channel_a, buffer_a, offset_a, channel_b, buffer_b, offset_b, start, delta, count); } catch(DriverException& de) @@ -399,14 +397,7 @@ bool B15F::readBlock(uint8_t* buffer, uint16_t offset) while(len--) { - int code = read(usart, buffer, 1); - if(code != 1) - { - std::cout << PRE << "read code: " << code << std::endl; - tcflush(usart, TCIFLUSH); // leere Eingangspuffer - writeByte(MSG_FAIL); - return false; - } + *buffer = readByte(); crc ^= *buffer++; for (uint8_t i = 0; i < 8; i++) diff --git a/drv/b15f.h b/drv/b15f.h index 870fb1b..aa0c9c8 100644 --- a/drv/b15f.h +++ b/drv/b15f.h @@ -30,13 +30,13 @@ public: std::vector getBoardInfo(void); // Board Befehle - bool digitaleAusgabe0(uint8_t); - bool digitaleAusgabe1(uint8_t); - uint8_t digitaleEingabe0(void); - uint8_t digitaleEingabe1(void); - bool analogeAusgabe0(uint16_t); - bool analogeAusgabe1(uint16_t); - uint16_t analogeEingabe(uint8_t); + bool digitalWrite0(uint8_t); + bool digitalWrite1(uint8_t); + uint8_t digitalRead0(void); + uint8_t digitalRead1(void); + bool analogWrite0(uint16_t); + bool analogWrite1(uint16_t); + uint16_t analogRead(uint8_t); bool analogEingabeSequenz(uint8_t channel_a, uint16_t* buffer_a, uint32_t offset_a, uint8_t channel_b, uint16_t* buffer_b, uint32_t offset_b, uint16_t start, int16_t delta, uint16_t count); // Serielle Verbindung @@ -53,7 +53,7 @@ public: private: int usart = -1; - uint16_t timeout = 200; // ms + uint16_t timeout = 32; // ms uint16_t block_timeout = 1; // ms int TEST = 0; diff --git a/drv/b15f.o b/drv/b15f.o index 34cee54..3e69e16 100644 Binary files a/drv/b15f.o and b/drv/b15f.o differ diff --git a/main b/main index 4ec05e8..5e14dec 100755 Binary files a/main and b/main differ diff --git a/main.cpp b/main.cpp index 8eec356..60a41d3 100644 --- a/main.cpp +++ b/main.cpp @@ -32,7 +32,7 @@ void kennlinieErsterQuadrant() uint8_t curve = 0; for(uint16_t u_gs = u_gs_start; u_gs <= u_gs_end; u_gs += u_gs_delta) { - drv.analogeAusgabe1(u_gs); + drv.analogWrite1(u_gs); drv.analogEingabeSequenz(0, &ba[0], 0, 1, &bb[0], 0, 0, delta, sample_count); drv.delay(10); @@ -79,7 +79,7 @@ void kennlinieZweiterQuadrant() uint8_t curve = 0; for(uint16_t u_gs = u_gs_start; u_gs <= u_gs_end; u_gs += u_gs_delta) { - drv.analogeAusgabe1(u_gs); + drv.analogWrite1(u_gs); drv.analogEingabeSequenz(0, &ba[0], 0, 1, &bb[0], 0, 0, delta, sample_count); @@ -102,7 +102,15 @@ int main() B15F& drv = B15F::getInstance(); drv.init(); - kennlinieZweiterQuadrant(); + int n = 0; + while(1) + { + uint16_t ba[1024]; + uint16_t bb[1024]; + drv.analogEingabeSequenz(0, &ba[0], 0, 1, &bb[0], 0, 0, 1, 1023); + + std::cout << n++ << std::endl; + } // speichern und plotty starten pf.writeToFile("test_plot"); diff --git a/main.o b/main.o index b589bad..7878d59 100644 Binary files a/main.o and b/main.o differ