1515#include < WProgram.h>
1616#include < avr/pgmspace.h>
1717
18- enum SPIClockDivider {
19- SPI_ClkDiv_4,
20- SPI_ClkDiv_16,
21- SPI_ClkDiv_64,
22- SPI_ClkDiv_128,
23- };
24-
25- enum SPIDataOrder {
26- SPI_DataOrder_LSB,
27- SPI_DataOrder_MSB,
28- };
29-
30- enum SPIMode {
31- SPI_Mode_SampleRising,
32- SPI_Mode_SetupRising,
33- SPI_Mode_SampleFalling,
34- SPI_Mode_SetupFalling,
35- };
18+ #define SPI_CLOCK_DIV4 0x00
19+ #define SPI_CLOCK_DIV16 0x01
20+ #define SPI_CLOCK_DIV64 0x02
21+ #define SPI_CLOCK_DIV128 0x03
22+ #define SPI_CLOCK_DIV2 0x04
23+ #define SPI_CLOCK_DIV8 0x05
24+ #define SPI_CLOCK_DIV32 0x06
25+ #define SPI_CLOCK_DIV64 0x07
26+
27+ #define SPI_MODE0 0x00
28+ #define SPI_MODE1 0x04
29+ #define SPI_MODE2 0x08
30+ #define SPI_MODE3 0x0C
31+
32+ #define SPI_MODE_MASK 0x0C // CPOL = bit 3, CPHA = bit 2 on SPCR
33+ #define SPI_CLOCK_MASK 0x03 // SPR1 = bit 1, SPR0 = bit 0 on SPCR
34+ #define SPI_2XCLOCK_MASK 0x01 // SPI2X = bit 0 on SPSR
3635
3736class SPIClass {
3837public:
@@ -48,13 +47,9 @@ class SPIClass {
4847 inline static void begin (); // Default
4948 inline static void end ();
5049
51- static void setDataOrder (SPIDataOrder);
52-
53- static void setSPIMode (SPIMode);
54-
55- static void setClockDivider (SPIClockDivider);
56- inline static void doubleSpeed ();
57- inline static void noDoubleSpeed (); // Default
50+ static void setBitOrder (uint8_t );
51+ static void setDataMode (uint8_t );
52+ static void setClockDivider (uint8_t );
5853};
5954
6055extern SPIClass SPI ;
@@ -82,12 +77,4 @@ void SPIClass::end() {
8277 SPCR &= ~_BV (SPE );
8378}
8479
85- void SPIClass::doubleSpeed () {
86- SPSR |= _BV (SPI2X );
87- }
88-
89- void SPIClass::noDoubleSpeed () {
90- SPSR &= ~_BV (SPI2X );
91- }
92-
9380#endif
0 commit comments