diff --git a/src/encoders/sc60228/SC60228.cpp b/src/encoders/sc60228/SC60228.cpp index 4c63920..5157ae0 100644 --- a/src/encoders/sc60228/SC60228.cpp +++ b/src/encoders/sc60228/SC60228.cpp @@ -1,6 +1,6 @@ #include "./SC60228.h" - +#include "Arduino.h" SC60228::SC60228(SPISettings settings, int nCS) : settings(settings), nCS(nCS) { // nix @@ -13,6 +13,7 @@ void SC60228::init(SPIClass* _spi) { if (nCS>=0) pinMode(nCS, OUTPUT); digitalWrite(nCS, HIGH); + delay(1); spi->begin(); readRawAngle(); }; @@ -41,15 +42,15 @@ bool SC60228::isError() { uint16_t SC60228::spi_transfer16(uint16_t outdata){ uint16_t result; + spi->beginTransaction(settings); if (nCS>=0) digitalWrite(nCS, LOW); // min delay here: 250ns - spi->beginTransaction(settings); result = spi->transfer16(outdata); // min delay here: clock period / 2 - spi->endTransaction(); if (nCS>=0) digitalWrite(nCS, HIGH); + spi->endTransaction(); // min delay until next read: 250ns return result; }; diff --git a/src/encoders/sc60228/SC60228.h b/src/encoders/sc60228/SC60228.h index 03b4e50..f476102 100644 --- a/src/encoders/sc60228/SC60228.h +++ b/src/encoders/sc60228/SC60228.h @@ -21,7 +21,7 @@ typedef union { #define SC60228_CPR 4096 #define SC60228_BITORDER MSBFIRST -static SPISettings SC60228SPISettings(8000000, SC60228_BITORDER, SPI_MODE0); // @suppress("Invalid arguments") +static SPISettings SC60228SPISettings(8000000, SC60228_BITORDER, SPI_MODE1); // @suppress("Invalid arguments")