#include "SPI.h"
unsigned char theByte = SPI_DONTCARE;
void SPI_MASTER_Init(void) {
pinMode(SPI_SCK,OUTPUT);
pinMode(SPI_MOSI,OUTPUT);
pinMode(SPI_MISO,INPUT);
pinMode(SPI_SS1,OUTPUT);
pinMode(SPI_SS2,OUTPUT);
// SPI2X SPR1 SPR0
// 0 0 0 f/4 = 4Mhz
// 0 0 1 f/16 = 1Mhz
// 0 1 0 f/64 = 250Khz
// 0 1 1 f/128 = 125Khz
// 1 0 0 f/2 = 8Mhz
// 1 0 1 f/8 = 2Mhz
// 1 1 0 f/32 = 500Khz
// 1 1 1 f/64 = 250Khz
// enable double rate
SPSR = (0<<SPI2X);
}
pinMode(SPI_SCK,INPUT);
pinMode(SPI_MOSI,INPUT);
pinMode(SPI_MISO,OUTPUT);
pinMode(SPI_SS,INPUT);
// SPI2X SPR1 SPR0
// 0 0 0 f/4 = 4Mhz
// 0 0 1 f/16 = 1Mhz
// 0 1 0 f/64 = 250Khz
// 0 1 1 f/128 = 125Khz
// 1 0 0 f/2 = 8Mhz
// 1 0 1 f/8 = 2Mhz
// 1 1 0 f/32 = 500Khz
// 1 1 1 f/64 = 250Khz
// enable double rate
SPSR = (0<<SPI2X); // we will now gain fck/2 instead of fck/4
}
// set data to send into SPI data register
SPDR = data;
// Wait for transmission complete
while(!(SPSR & (1<<SPIF)));
// return data read from SPI (if any)
return SPDR;
}
#define SPI_MISO 12
#define SPI_MOSI 11
#define SPI_SS 10
#define SPI_SS1 10
#define SPI_SS2 9
void SPI_SLAVE_Init(void);
unsigned char SPI_ReadWrite(unsigned char data);