40 lines
880 B
C++
40 lines
880 B
C++
#include <avr/io.h>
|
|
#include <util/delay.h>
|
|
|
|
#define SPI_MISO 5
|
|
|
|
#define SPI_PORTX PORTB
|
|
#define SPI_DDRX DDRB
|
|
|
|
void SPI_SlaveInit(void)
|
|
{
|
|
/* Настройка ножки порта MISO как выход,
|
|
все остальные сигналы как вход: */
|
|
SPI_DDRX = (1 << SPI_MISO);
|
|
/* Разрешить работу SPI: */
|
|
SPCR = (1 << SPE);
|
|
}
|
|
|
|
char SPI_SlaveReceive(void)
|
|
{
|
|
/* Ожидание завершения приема: */
|
|
while(!(SPSR & (1 << SPIF)));
|
|
/* Чтение принятых данных и возврат: */
|
|
return SPDR;
|
|
}
|
|
|
|
void setup() {
|
|
SPI_SlaveInit();
|
|
Serial.begin(9600);
|
|
Serial.println("Arduino 2 started");
|
|
}
|
|
|
|
void loop() {
|
|
SPDR = 0;
|
|
char str[2];
|
|
str[0] = SPI_SlaveReceive(); // Прием данных
|
|
str[1] = '\n';
|
|
Serial.println(str);
|
|
|
|
}
|