@@ -17,9 +17,10 @@ AS5047U::~AS5047U() {
1717
1818void AS5047U::init (SPIClass* _spi) {
1919 spi = _spi;
20- if (nCS>=0 )
20+ if (nCS>=0 ) {
2121 pinMode (nCS, OUTPUT);
22- digitalWrite (nCS, HIGH);
22+ digitalWrite (nCS, HIGH);
23+ }
2324 // SPI has an internal SPI-device counter, it is possible to call "begin()" from different devices
2425 spi->begin ();
2526 readRawAngle (); // read an angle
@@ -291,13 +292,13 @@ uint16_t AS5047U::nop16(){
291292
292293
293294uint16_t AS5047U::spi_transfer16 (uint16_t outdata) {
295+ spi->beginTransaction (settings);
294296 if (nCS>=0 )
295297 digitalWrite (nCS, 0 );
296- spi->beginTransaction (settings);
297298 uint16_t result = spi->transfer16 (outdata);
298- spi->endTransaction ();
299299 if (nCS>=0 )
300300 digitalWrite (nCS, 1 );
301+ spi->endTransaction ();
301302 errorflag = ((result&AS5047U_ERROR)>0 );
302303 warningflag = ((result&AS5047U_WARNING)>0 );
303304 return result;
@@ -321,26 +322,26 @@ uint16_t AS5047U::writeRegister24(uint16_t reg, uint16_t data) {
321322 buff[0 ] = (reg>>8 )&0x3F ;
322323 buff[1 ] = reg&0xFF ;
323324 buff[2 ] = calcCRC (reg);
325+ spi->beginTransaction (settings);
324326 if (nCS>=0 )
325327 digitalWrite (nCS, 0 );
326- spi->beginTransaction (settings);
327328 spi->transfer (buff, 3 );
328- spi->endTransaction ();
329329 if (nCS>=0 )
330330 digitalWrite (nCS, 1 );
331+ spi->endTransaction ();
331332 errorflag = ((buff[0 ]&0x40 )>0 );
332333 warningflag = ((buff[0 ]&0x80 )>0 );
333334
334335 buff[0 ] = (data>>8 )&0x3F ;
335336 buff[1 ] = data&0xFF ;
336337 buff[2 ] = calcCRC (data);
338+ spi->beginTransaction (settings);
337339 if (nCS>=0 )
338340 digitalWrite (nCS, 0 );
339- spi->beginTransaction (settings);
340341 spi->transfer (buff, 3 );
341- spi->endTransaction ();
342342 if (nCS>=0 )
343343 digitalWrite (nCS, 1 );
344+ spi->endTransaction ();
344345 errorflag = ((buff[0 ]&0x40 )>0 );
345346 warningflag = ((buff[0 ]&0x80 )>0 );
346347
0 commit comments