multiefekt/spi.h

24 lines
567 B
C

#include <avr/io.h>
#include <avr/interrupt.h>
#define SS_LOW PORTB &= ~(1<<PORTB2)
#define SS_HIGH PORTB |= (1<<PORTB2)
//inicjalizacja
void spiInit(void) {
// /SS, MOSI, SCK jako wyjścia
DDRB |= (1<<PORTB2) | (1<<PORTB3) | (1<<PORTB5);
// /SS w stanie wysokim
SS_HIGH;
//SPI włączone, tryb master, podział przez 2 (najwyższa możliwa prędkość)
SPCR = (1<<SPE) | (1<<MSTR);
SPSR |= (1<<SPI2X);
}
//wysłanie jednego bajtu
void spiTransfer(uint8_t data) {
//rozpocznij transmisję
SPDR = data;
//poczekaj na koniec
while(!(SPSR & (1<<SPIF)));
}