diff --git a/drivers/spi.c b/drivers/spi.c new file mode 100644 index 0000000..bb59a03 --- /dev/null +++ b/drivers/spi.c @@ -0,0 +1,23 @@ +#include "spi.h" +#include + +uint8_t spi_init(uint8_t spcr) { + PORTB |= (1 << 5); // set SCK hi + DDRB |= (1 << 5); // set SCK as output + DDRB &= ~(1 << 4); // set MISO as input + DDRB |= (1 << 3); // set MOSI as output + DDRB |= (1 << 2); // SS must be output for Master mode to work + + SPCR = spcr | SPE; + return(SPSR); +} + +uint8_t spi_transfer(uint8_t in) { + uint8_t v; + SPDR = in; + // wait for transfer to complete + while(! (SPSR & (1< + +uint8_t spi_init(uint8_t spcr); +uint8_t spi_transfer(uint8_t in);