Доброго времени суток. Я пытаюсь организовать двустороннюю связь по SPI между NodeMCU esp-12e (esp8266) в качестве мастера и atmega48 в качестве слейва. Данные от мастера слейв получает без проблем, однако ответ от слейва на мастере записать не получается: в мониторе порта всегда 255.
Подскажите, пожалуйста, в чём у меня может быть проблема. Не исключаю, что проблема может быть в аппаратной части:


Порты соеденены напрямую, без какаких-либо подтяжек. Логические уровни согласованы, земля общая. Спасибо
Код мастера:
#include <SPI.h>
uint8_t value = 250;
void setup() {
pinMode(D8,OUTPUT);
digitalWrite(D8,1);
Serial.begin(9600);
delay(1000);
SPI.begin();
SPI.beginTransaction(SPISettings(1000000, MSBFIRST, SPI_MODE0));
}
void loop() {
digitalWrite(D8,0);
SPI.transfer(value);
delayMicroseconds (20);
Serial.println(SPI.transfer(0));
digitalWrite(D8,1);
delay(1000);
}
Код слейва:
#define PIN_SS PB2
#define PIN_MOSI PB3
#define PIN_MISO PB4
#define PIN_SCK PB5
volatile uint8_t received_byte = 0;
void setup() {
pinMode(PIN_SS, INPUT);
pinMode(PIN_MOSI, INPUT);
pinMode(PIN_SCK, INPUT);
pinMode(PD5, OUTPUT);
digitalWrite(PD5,0);
pinMode(PIN_MISO, OUTPUT);
SPCR |= _BV(SPE);
SPCR |= (1 << SPIE);
}
ISR(SPI_STC_vect) {
received_byte = SPDR;
if(received_byte==250)digitalWrite(PD5,1);
else digitalWrite(PD5,0);
SPDR=128;
}
void loop() {}
Мастер | Слейв |
| D8 (HCS) | PB2 (SS) |
| D7 (HMOSI) | PB3 (MOSI) |
| D6 (HMISO) | PB4 (MISO) |
| D5 (HSCLK) | PB5 (SCK) |


Порты соеденены напрямую, без какаких-либо подтяжек. Логические уровни согласованы, земля общая. Спасибо