mirror of https://github.com/arendst/Tasmota.git
53 lines
1.1 KiB
C++
53 lines
1.1 KiB
C++
// ATTiny support code is from https://github.com/jscrane/RF24
|
|
|
|
/**
|
|
* @file spi.h
|
|
* \cond HIDDEN_SYMBOLS
|
|
* Class declaration for SPI helper files
|
|
*/
|
|
|
|
#include <stdio.h>
|
|
#include <Arduino.h>
|
|
#include <avr/pgmspace.h>
|
|
|
|
#define SPI_CLOCK_DIV4 0x00
|
|
#define SPI_CLOCK_DIV16 0x01
|
|
#define SPI_CLOCK_DIV64 0x02
|
|
#define SPI_CLOCK_DIV128 0x03
|
|
#define SPI_CLOCK_DIV2 0x04
|
|
#define SPI_CLOCK_DIV8 0x05
|
|
#define SPI_CLOCK_DIV32 0x06
|
|
//#define SPI_CLOCK_DIV64 0x07
|
|
|
|
#define SPI_MODE0 0x00
|
|
#define SPI_MODE1 0x04
|
|
#define SPI_MODE2 0x08
|
|
#define SPI_MODE3 0x0C
|
|
|
|
#define SPI_MODE_MASK 0x0C // CPOL = bit 3, CPHA = bit 2 on SPCR
|
|
#define SPI_CLOCK_MASK 0x03 // SPR1 = bit 1, SPR0 = bit 0 on SPCR
|
|
#define SPI_2XCLOCK_MASK 0x01 // SPI2X = bit 0 on SPSR
|
|
|
|
|
|
|
|
class SPIClass {
|
|
public:
|
|
static byte transfer(byte _data);
|
|
|
|
// SPI Configuration methods
|
|
|
|
inline static void attachInterrupt();
|
|
inline static void detachInterrupt(); // Default
|
|
|
|
static void begin(); // Default
|
|
static void end();
|
|
|
|
static void setBitOrder(uint8_t);
|
|
static void setDataMode(uint8_t);
|
|
static void setClockDivider(uint8_t);
|
|
};
|
|
extern SPIClass SPI;
|
|
|
|
/**
|
|
* \endcond
|
|
*/ |