multiefekt/spi.h

24 lines
567 B
C
Raw Permalink Normal View History

2022-06-01 08:34:17 +02:00
#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
2022-06-08 08:20:11 +02:00
void spiTransfer(uint8_t data) {
2022-06-01 08:34:17 +02:00
//rozpocznij transmisję
SPDR = data;
//poczekaj na koniec
2022-06-08 08:20:11 +02:00
while(!(SPSR & (1<<SPIF)));
2022-06-01 08:34:17 +02:00
}