Кондёр на сбросе - зло. Он даёт очень пологий фронт, к тому же зависящий от числа и типа модулей расширения. В результате бывают случаи, что именно на включении он не сбрасывает. Может быть, например, ЦП уже заработал, а какое -то устройство ещё вроде как в сбросе. В оригинале стоит 531я микруха буфером, перед ней кондёр, а её выход уже в ресет уходит.
В то же время нет проблем сделать софтовый сброс - т.е. удерживать ресет полсекунды через полевик, при инициализации меги.
Но это всё фигня.
Не фигня другое: в slave mode SPI у тебя встаёт в модуле init.c, это программно задаётся. B1 - это, фактически, у тебя внутреннее управление линией !SS, которая разрешает работу передатчика MISO.
И вот какая штука в связи с этим: когда передача заканчивается, судя по осцилограммам, атмега ставит MISO в нулевой уровень независимо от значения последнего переданного бита (я не нашел описания этого явления в доках, так что будем полагать, что это - недокументированая особенность). В тот же момент она генерирует прерывание от SPI и ты B1 ставишь в "1", что сразу гасит MISO и он подлетает к "1". Это происходит очень быстро, но это даёт небольшой коротенький переход 1->0->1 на MISO. А поскольку на материнке начало передачи ловит совершенно асинхронный триггер, то ему на длительность и момент этого импульса относительно синхролинии начхать. И он думает, будто сейчас побежит ещё один байт.
Я пока не закончил изучать это всё явление, в четверг продолжу, наверное.
Но пока мне видится либо кондёр на data-линии, либо инвертор data и инверсия даты в программе. А !SS вообще заземлить навечно.