Arduino Nano Every & Adafruit DotStar LEDs

Hello,
I'm working on a project involving a strip of Adafruit DotStar LEDs and an Arduino Nano Every.

When trying to compile the "strandtest" example I face the error below (btw I've tested it with the Adafruit DotStar library v 1.1.4 and both Arduino 1.8.12 and 1.8.16 IDE):

/home/nicola/Arduino/libraries/Adafruit_DotStar/Adafruit_DotStar.cpp: In member function 'void Adafruit_DotStar::show()':
/home/nicola/Arduino/libraries/Adafruit_DotStar/Adafruit_DotStar.cpp:329:5: error: 'SPDR' was not declared in this scope
     SPDR = 0x00;     // 4th is pipelined
     ^~~~
/home/nicola/Arduino/libraries/Adafruit_DotStar/Adafruit_DotStar.cpp:329:5: note: suggested alternative: 'SPI'
     SPDR = 0x00;     // 4th is pipelined
     ^~~~
     SPI
/home/nicola/Arduino/libraries/Adafruit_DotStar/Adafruit_DotStar.cpp:331:16: error: 'SPSR' was not declared in this scope
       while (!(SPSR & _BV(SPIF)))
                ^~~~
/home/nicola/Arduino/libraries/Adafruit_DotStar/Adafruit_DotStar.cpp:331:16: note: suggested alternative: 'SPI'
       while (!(SPSR & _BV(SPIF)))
                ^~~~
                SPI
In file included from /home/nicola/.arduino15/packages/arduino/tools/avr-gcc/7.3.0-atmel3.6.1-arduino5/avr/include/avr/io.h:99:0,
                 from /home/nicola/.arduino15/packages/arduino/tools/avr-gcc/7.3.0-atmel3.6.1-arduino5/avr/include/avr/pgmspace.h:90,
                 from /home/nicola/.arduino15/packages/arduino/hardware/megaavr/1.8.6/cores/arduino/api/String.h:31,
                 from /home/nicola/.arduino15/packages/arduino/hardware/megaavr/1.8.6/cores/arduino/api/Print.h:24,
                 from /home/nicola/.arduino15/packages/arduino/hardware/megaavr/1.8.6/cores/arduino/api/Stream.h:25,
                 from /home/nicola/.arduino15/packages/arduino/hardware/megaavr/1.8.6/cores/arduino/api/Client.h:22,
                 from /home/nicola/.arduino15/packages/arduino/hardware/megaavr/1.8.6/cores/arduino/api/ArduinoAPI.h:29,
                 from /home/nicola/.arduino15/packages/arduino/hardware/megaavr/1.8.6/cores/arduino/Arduino.h:23,
                 from /home/nicola/Arduino/libraries/Adafruit_DotStar/Adafruit_DotStar.h:25,
                 from /home/nicola/Arduino/libraries/Adafruit_DotStar/Adafruit_DotStar.cpp:42:
/home/nicola/Arduino/libraries/Adafruit_DotStar/Adafruit_DotStar.cpp:331:27: error: 'SPIF' was not declared in this scope
       while (!(SPSR & _BV(SPIF)))
                           ^
/home/nicola/Arduino/libraries/Adafruit_DotStar/Adafruit_DotStar.cpp:331:27: note: suggested alternative: 'SPI'
/home/nicola/Arduino/libraries/Adafruit_DotStar/Adafruit_DotStar.cpp:336:18: error: 'SPSR' was not declared in this scope
         while (!(SPSR & _BV(SPIF)))
                  ^~~~
/home/nicola/Arduino/libraries/Adafruit_DotStar/Adafruit_DotStar.cpp:336:18: note: suggested alternative: 'SPI'
         while (!(SPSR & _BV(SPIF)))
                  ^~~~
                  SPI
In file included from /home/nicola/.arduino15/packages/arduino/tools/avr-gcc/7.3.0-atmel3.6.1-arduino5/avr/include/avr/io.h:99:0,
                 from /home/nicola/.arduino15/packages/arduino/tools/avr-gcc/7.3.0-atmel3.6.1-arduino5/avr/include/avr/pgmspace.h:90,
                 from /home/nicola/.arduino15/packages/arduino/hardware/megaavr/1.8.6/cores/arduino/api/String.h:31,
                 from /home/nicola/.arduino15/packages/arduino/hardware/megaavr/1.8.6/cores/arduino/api/Print.h:24,
                 from /home/nicola/.arduino15/packages/arduino/hardware/megaavr/1.8.6/cores/arduino/api/Stream.h:25,
                 from /home/nicola/.arduino15/packages/arduino/hardware/megaavr/1.8.6/cores/arduino/api/Client.h:22,
                 from /home/nicola/.arduino15/packages/arduino/hardware/megaavr/1.8.6/cores/arduino/api/ArduinoAPI.h:29,
                 from /home/nicola/.arduino15/packages/arduino/hardware/megaavr/1.8.6/cores/arduino/Arduino.h:23,
                 from /home/nicola/Arduino/libraries/Adafruit_DotStar/Adafruit_DotStar.h:25,
                 from /home/nicola/Arduino/libraries/Adafruit_DotStar/Adafruit_DotStar.cpp:42:
/home/nicola/Arduino/libraries/Adafruit_DotStar/Adafruit_DotStar.cpp:336:29: error: 'SPIF' was not declared in this scope
         while (!(SPSR & _BV(SPIF)))
                             ^
/home/nicola/Arduino/libraries/Adafruit_DotStar/Adafruit_DotStar.cpp:336:29: note: suggested alternative: 'SPI'
/home/nicola/Arduino/libraries/Adafruit_DotStar/Adafruit_DotStar.cpp:341:14: error: 'SPSR' was not declared in this scope
     while (!(SPSR & _BV(SPIF)))
              ^~~~
/home/nicola/Arduino/libraries/Adafruit_DotStar/Adafruit_DotStar.cpp:341:14: note: suggested alternative: 'SPI'
     while (!(SPSR & _BV(SPIF)))
              ^~~~
              SPI
In file included from /home/nicola/.arduino15/packages/arduino/tools/avr-gcc/7.3.0-atmel3.6.1-arduino5/avr/include/avr/io.h:99:0,
                 from /home/nicola/.arduino15/packages/arduino/tools/avr-gcc/7.3.0-atmel3.6.1-arduino5/avr/include/avr/pgmspace.h:90,
                 from /home/nicola/.arduino15/packages/arduino/hardware/megaavr/1.8.6/cores/arduino/api/String.h:31,
                 from /home/nicola/.arduino15/packages/arduino/hardware/megaavr/1.8.6/cores/arduino/api/Print.h:24,
                 from /home/nicola/.arduino15/packages/arduino/hardware/megaavr/1.8.6/cores/arduino/api/Stream.h:25,
                 from /home/nicola/.arduino15/packages/arduino/hardware/megaavr/1.8.6/cores/arduino/api/Client.h:22,
                 from /home/nicola/.arduino15/packages/arduino/hardware/megaavr/1.8.6/cores/arduino/api/ArduinoAPI.h:29,
                 from /home/nicola/.arduino15/packages/arduino/hardware/megaavr/1.8.6/cores/arduino/Arduino.h:23,
                 from /home/nicola/Arduino/libraries/Adafruit_DotStar/Adafruit_DotStar.h:25,
                 from /home/nicola/Arduino/libraries/Adafruit_DotStar/Adafruit_DotStar.cpp:42:
/home/nicola/Arduino/libraries/Adafruit_DotStar/Adafruit_DotStar.cpp:341:25: error: 'SPIF' was not declared in this scope
     while (!(SPSR & _BV(SPIF)))
                         ^
/home/nicola/Arduino/libraries/Adafruit_DotStar/Adafruit_DotStar.cpp:341:25: note: suggested alternative: 'SPI'
exit status 1
Errore durante la compilazione per la scheda Arduino Nano Every.

How can I solve the issue?
Thank you very much.
na

The SPDR register is specific for the Atmega328p in the old Nano. Yours is a Nano Every using a modern AVR core with different register names. Maybe there's a library specific to the Nano Every?

1 Like

Hi @hzrnbgy and thank you for your support,

don't know if it is the correct way to do the thing but I was eventually able to solve commenting out line 257 of "Adafruit_DotStar.cpp" file:

#define spi_out(n) (void)SPI.transfer(n) ///< Call hardware SPI function
// Pipelining reads next byte while current byte is clocked out
#if (defined(__AVR__) && !defined(__AVR_ATtiny85__)) || defined(CORE_TEENSY)
//#define SPI_PIPELINE // <--- this is the line I've commented out
#endif

Let me know if it works for you also
bye

This topic was automatically closed 120 days after the last reply. New replies are no longer allowed.