Skip to content

SPI API Missing Interrupts #1943

@biscuitWizard

Description

@biscuitWizard

Basic Infos

Hardware

Hardware: ESP-12
Core Version: 2.1.0-rc2

Description

The SPI implementation included in the ESP8266 is missing hardware interrupts. The official API lists this function as:

https://www.arduino.cc/en/Reference/SPIusingInterrupt

Without this, one of my libraries is unable to function.

Debug Messages


C:\Users\User\Documents\Arduino\libraries\Adafruit_VS1053_Library\Adafruit_VS1053.cpp: In member function 'boolean Adafruit_VS1053_FilePlayer::useInterrupt(uint8_t)':
C:\Users\User\Documents\Arduino\libraries\Adafruit_VS1053_Library\Adafruit_VS1053.cpp:99:13: error: 'class SPIClass' has no member named 'usingInterrupt'
         SPI.usingInterrupt(dreqinttable[i+1]);
             ^
C:\Users\User\Documents\Arduino\libraries\Adafruit_VS1053_Library\Adafruit_VS1053.cpp: In member function 'void Adafruit_VS1053_FilePlayer::feedBuffer()':
C:\Users\User\Documents\Arduino\libraries\Adafruit_VS1053_Library\Adafruit_VS1053.cpp:235:14: error: 'SREG' was not declared in this scope
   sregsave = SREG;
              ^
C:\Users\User\Documents\Arduino\libraries\Adafruit_VS1053_Library\Adafruit_VS1053.cpp: In constructor 'Adafruit_VS1053::Adafruit_VS1053(int8_t, int8_t, int8_t, int8_t, int8_t, int8_t, int8_t)':
C:\Users\User\Documents\Arduino\libraries\Adafruit_VS1053_Library\Adafruit_VS1053.cpp:297:14: error: cannot convert 'volatile uint32_t* {aka volatile unsigned int*}' to 'volatile uint8_t* {aka volatile unsigned char*}' in assignment
   clkportreg = portOutputRegister(digitalPinToPort(_clk));
              ^
C:\Users\User\Documents\Arduino\libraries\Adafruit_VS1053_Library\Adafruit_VS1053.cpp:299:15: error: cannot convert 'volatile uint32_t* {aka volatile unsigned int*}' to 'volatile uint8_t* {aka volatile unsigned char*}' in assignment
   misoportreg = portInputRegister(digitalPinToPort(_miso));
               ^
C:\Users\User\Documents\Arduino\libraries\Adafruit_VS1053_Library\Adafruit_VS1053.cpp:301:15: error: cannot convert 'volatile uint32_t* {aka volatile unsigned int*}' to 'volatile uint8_t* {aka volatile unsigned char*}' in assignment
   mosiportreg = portOutputRegister(digitalPinToPort(_mosi));

Want to back this issue? Post a bounty on it! We accept bounties via Bountysource.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions