From a9b90eb11a5d5d12384ec1066dd4eb69833624a6 Mon Sep 17 00:00:00 2001 From: Unknown Date: Wed, 24 Jun 2020 20:34:44 -0400 Subject: [PATCH] Add RLS SPI encoder (single-turn) --- Firmware/MotorControl/encoder.cpp | 7 +++++++ Firmware/MotorControl/encoder.hpp | 1 + 2 files changed, 8 insertions(+) diff --git a/Firmware/MotorControl/encoder.cpp b/Firmware/MotorControl/encoder.cpp index d1545fc1..c9f27a36 100644 --- a/Firmware/MotorControl/encoder.cpp +++ b/Firmware/MotorControl/encoder.cpp @@ -311,6 +311,7 @@ void Encoder::sample_now() { case MODE_SPI_ABS_AMS: case MODE_SPI_ABS_CUI: case MODE_SPI_ABS_AEAT: + case MODE_SPI_ABS_RLS: { axis_->motor_.log_timing(Motor::TIMING_LOG_SAMPLE_NOW); // Do nothing @@ -400,6 +401,11 @@ void Encoder::abs_spi_cb(){ pos = rawVal & 0x3fff; } break; + case MODE_SPI_ABS_RLS: { + uint16_t rawVal = abs_spi_dma_rx_[0]; + pos = (rawVal >> 2) & 0x3fff; + } break; + default: { set_error(ERROR_UNSUPPORTED_ENCODER_MODE); return; @@ -469,6 +475,7 @@ bool Encoder::update() { delta_enc -= 6283; } break; + case MODE_SPI_ABS_RLS: case MODE_SPI_ABS_AMS: case MODE_SPI_ABS_CUI: case MODE_SPI_ABS_AEAT: { diff --git a/Firmware/MotorControl/encoder.hpp b/Firmware/MotorControl/encoder.hpp index fcf94101..99f93e0f 100644 --- a/Firmware/MotorControl/encoder.hpp +++ b/Firmware/MotorControl/encoder.hpp @@ -27,6 +27,7 @@ public: MODE_SPI_ABS_CUI = 0x100, //!< compatible with CUI AMT23xx MODE_SPI_ABS_AMS = 0x101, //!< compatible with AMS AS5047P, AS5048A/AS5048B (no daisy chain support) MODE_SPI_ABS_AEAT = 0x102, //!< not yet implemented + MODE_SPI_ABS_RLS = 0x103, }; const uint32_t MODE_FLAG_ABS = 0x100;