SPI Slave в AtMega, логика работы, подводные камушки

Хотелось бы побольше статей про логику реализации тех или иных аппаратных функций в контроллерах, ибо по документации понять можно не все, приходится разбираться на практике, что иногда отнимает довольно много времени. Вспоминается STM32 с её всем горячо любимой реализацией I2C. Там если не сбросишь в нужный момент какой-нибудь статусный бит, то интерфейс повисает. Но речь сейчас не об этом.
Понадобилось мне сделать простейшую вещь: мега работает слейвом, причём только на отправку, мастер дергает её за ногу, читает нужное количество байт из буфера и отпускает. Причём буфер каждый раз должен читаться с начала, а количество считываемых данных не фиксировано. Казалось бы, что может быть проще, но тут вылезла парочка проблем.

Читать дальше