24 lines
496 B
C
24 lines
496 B
C
#include "spi.h"
|
|
#include <avr/io.h>
|
|
|
|
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<<SPIF)) ) {};
|
|
v = SPDR;
|
|
return(v);
|
|
}
|
|
|