к примеру надо принять число
такое
10000001
или такое
10000000'00000010
или такое
10000000'00000000'00000011
или такое
10000000'00000000'00000000'00000100
или такое
10000000'00000000'00000000'00000000'00000101.
Надо как Master отправить код 8 бит, и принять код от 8бит до 64бит.
Открыть код
Спойлер
unsigned long SPI_chitat(uint8_t pData){ //отправляем код 8 бит принимаем длинный код до 64бит.SPCR |= (1<<SPE); //Включить SPI
SPCR |= (1<<SPIE); //Включим прерывания
unsigned long buffer;
uint8_t xdata;
//передаю в slave
SPDR = pData;
while(!(SPSR & (1<<SPIF)));
//Установить MISO SCK на вход
DDRB &= ~(1<<PB6);
DDRB &= ~(1<<PB7);
ISR(SPI_STC_vect) //прерывание по приему байта
{
buffer=SPDR;
}
/* не пойму он так код приймет или надо его как то так разбивать.
uint8_t raz=1;
for (uint8_t hf=1; hf<=kol;hf++){
if (raz==1){
raz=2;
buffer=xdata;
}
else{
buffer<<8;
buffer=xdata;
}
}*/
return buffer;
//Выключим прерывания
SPCR &= ~(1<<SPIE);
//Выключить SPI
SPCR &= ~(1<<SPE);
}



