From bb31f042da7c453998f62a57750fa06a3a1497f5 Mon Sep 17 00:00:00 2001 From: Unknown Date: Wed, 1 Jan 2020 01:52:21 -0500 Subject: [PATCH] Revert "Fix parity calculation" This reverts commit 27b3c69e8eaa7381ed846d39e5bbd2ba451f71b6. --- Firmware/MotorControl/encoder.cpp | 8 ++++++-- Firmware/Tests/test_runner.cpp | 9 +++------ Firmware/Tupfile.lua | 2 +- ODrive_Workspace.code-workspace | 9 +-------- 4 files changed, 11 insertions(+), 17 deletions(-) diff --git a/Firmware/MotorControl/encoder.cpp b/Firmware/MotorControl/encoder.cpp index 6de18e9c..c1223d07 100644 --- a/Firmware/MotorControl/encoder.cpp +++ b/Firmware/MotorControl/encoder.cpp @@ -366,7 +366,7 @@ uint8_t parity(uint16_t v){ v ^= v >> 4; v ^= v >> 2; v ^= v >> 1; - return (~v) & 1; + return v & 1; } void Encoder::abs_spi_cb(){ HAL_GPIO_WritePin(abs_spi_cs_port_, abs_spi_cs_pin_, GPIO_PIN_SET); @@ -379,7 +379,11 @@ void Encoder::abs_spi_cb(){ if (parity_calc == parity_bit) { pos_abs_ = rawVal & 0x3FFF; - abs_spi_pos_updated_ = true; + // We are going to ignore values all high or low + // This might happen in normal operation, but its unlikely + // The filter will handle these cases + if (pos_abs_ != 0 && pos_abs_ != 0x3FFF) + abs_spi_pos_updated_ = true; } } break; case MODE_SPI_ABS_AEAT: { diff --git a/Firmware/Tests/test_runner.cpp b/Firmware/Tests/test_runner.cpp index 7d38c29f..cae2441c 100644 --- a/Firmware/Tests/test_runner.cpp +++ b/Firmware/Tests/test_runner.cpp @@ -295,7 +295,7 @@ TEST_SUITE("vel_ramp") { v ^= v >> 4; v ^= v >> 2; v ^= v >> 1; - return (~v) & 1; + return v & 1; } TEST_CASE("Blah") { @@ -321,10 +321,7 @@ TEST_SUITE("vel_ramp") { } TEST_CASE("Parity") { - CHECK(parity(0x0DDF & 0x7FFF) == 1); - CHECK(parity(0x8DDF & 0x7FFF) == 1); - CHECK(parity(0x5BFF & 0x7FFF) == 0); - CHECK(parity(0x0 & 0x7FFF) == 1); - CHECK(__builtin_parity(0x5BFF & 0x7FFF) == 1); + CHECK(parity(0x0DDF) == 0); + CHECK(parity(0x8DDF) == 1); } } \ No newline at end of file diff --git a/Firmware/Tupfile.lua b/Firmware/Tupfile.lua index d329e4e7..16e3aa2a 100644 --- a/Firmware/Tupfile.lua +++ b/Firmware/Tupfile.lua @@ -191,6 +191,6 @@ build{ if tup.getconfig('DOCTEST') == 'true' then TEST_INCLUDES = '-IC:/Tools/doctest/doctest' - tup.frule{inputs='Tests/test_runner.cpp', command='g++ -O3 -std=gnu++17 '..TEST_INCLUDES..' %f -o %o', outputs='Tests/test_runner.exe'} + tup.frule{inputs='Tests/test_runner.cpp', command='g++ -std=gnu++17 '..TEST_INCLUDES..' %f -o %o', outputs='Tests/test_runner.exe'} tup.frule{inputs='Tests/test_runner.exe', command='%f'} end \ No newline at end of file diff --git a/ODrive_Workspace.code-workspace b/ODrive_Workspace.code-workspace index 2012b56e..6e9385a0 100644 --- a/ODrive_Workspace.code-workspace +++ b/ODrive_Workspace.code-workspace @@ -57,14 +57,7 @@ "fstream": "cpp", "iomanip": "cpp", "optional": "cpp", - "sstream": "cpp", - "atomic": "cpp", - "iterator": "cpp", - "memory_resource": "cpp", - "ratio": "cpp", - "string": "cpp", - "mutex": "cpp", - "thread": "cpp" + "sstream": "cpp" } } }