#include <avr/io.h>
#include <util/delay.h>

// SPI settings
#define SPI_PORT 	PORTB
#define SPI_DDR  	DDRB
#define CS3			PB0
#define CS2			PB1
#define CS1			PB2
#define CS0			PB3
#define CE		 	PB4
#define MOSI		PB5
#define MISO		PB6
#define SCK			PB7

void SPIWR(unsigned char data)
{
	SPDR = data;
	while(!(SPSR & (1<<SPIF)));
	_delay_us(1);
}

unsigned char SPIRD(void)
{
	SPDR = 0x00;
	while(!(SPSR & (1<<SPIF)));
	_delay_us(1);
	return(SPDR);
}
unsigned char SPIWRD(unsigned char data)
{
	SPDR = data;
	while(!(SPSR & (1<<SPIF)));
	_delay_us(1);
	return(SPDR);
}

void SPI_Init(void)
{
	SPI_DDR |= (1<<SCK)|(1<<MOSI)|(1<<CE)|(1<<CS0)|(1<<CS1)|(1<<CS2);
	SPCR |= (1<<SPE)|(1<<MSTR)|(1<<SPR1)|(1<<SPR0);
	SPCR |= (1<<DORD);
	SPSR |= (0<<SPI2X);
}