00001
00002
00003 #include "spi.h"
00004
00006 #define spi_wait() while (!(SPSR & (1 << SPIF)));
00007
00009 void spi::init()
00010 {
00011
00012 SPI_DDR |= ( 1 << SPI_MOSI ) | ( 1 << SPI_SCK ) | ( 1<< SPI_SS );
00013
00014
00015 SPI_DDR &= ~( 1 << SPI_MISO );
00016
00017
00018
00019 SPCR = ( 1 << SPE ) | ( 1 << MSTR ) | ( 0 << SPR1 ) | ( 0 << SPR0 );
00020
00021
00022
00023
00024
00025
00026 }
00027
00029 char spi::transfer( char data )
00030 {
00031
00032 SPDR = data;
00033
00034
00035 spi_wait();
00036
00037 return SPDR;
00038 }
00039