1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47
|
#include <avr/io.h>
#define SPI_CS 2
#define SPI_MOSI 3
#define SPI_MISO 4
#define SPI_SCK 5
int main() {
DDRB |= (1<<SPI_CS);
DDRB |= (1<<SPI_MOSI);
DDRB &=~(1<<SPI_MISO);
DDRB |= (1<<SPI_SCK);
// reset slave
PORTB |= _BV(SPI_CS);
PORTB &= ~_BV(SPI_CS);
SPCR = (1<<SPE)|(1<<MSTR)|(1<<DORD)|(1<<CPHA)|(1<<CPOL);
SPDR = 0x35;
while(!(SPSR & (1<<SPIF)));
SPDR = 0x12;
while(!(SPSR & (1<<SPIF)));
SPDR = 0x01;
while(!(SPSR & (1<<SPIF)));
SPDR = 0x56;
while(!(SPSR & (1<<SPIF)));
SPDR = 0x35;
while(!(SPSR & (1<<SPIF)));
SPDR = 0x12;
while(!(SPSR & (1<<SPIF)));
SPDR = 0x00;
while(!(SPSR & (1<<SPIF)));
SPDR = 0x00;
while(!(SPSR & (1<<SPIF))); SPDR=SPDR;
while(!(SPSR & (1<<SPIF)));
}
|