From 2dfff2a7d6ecfb2601207891b68421b2a7483625 Mon Sep 17 00:00:00 2001 From: Unknown Date: Wed, 1 Jan 2020 01:52:03 -0500 Subject: [PATCH] Only access abs_spi_dma_rx_ once --- Firmware/MotorControl/encoder.cpp | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/Firmware/MotorControl/encoder.cpp b/Firmware/MotorControl/encoder.cpp index a226e905..c1223d07 100644 --- a/Firmware/MotorControl/encoder.cpp +++ b/Firmware/MotorControl/encoder.cpp @@ -373,11 +373,12 @@ void Encoder::abs_spi_cb(){ switch (config_.mode) { case MODE_SPI_ABS_AMS: { uint8_t parity_calc, parity_bit; - parity_calc = parity(abs_spi_dma_rx_[0]&0x7FFF); - parity_bit = abs_spi_dma_rx_[0] >>15; + auto rawVal = abs_spi_dma_rx_[0]; + parity_calc = parity(rawVal & 0x7FFF); + parity_bit = rawVal >>15; if (parity_calc == parity_bit) { - pos_abs_ = abs_spi_dma_rx_[0] & 0x3FFF; + pos_abs_ = rawVal & 0x3FFF; // 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