Забавно иногда смотреть. Разные программисты в разных городах и часовых поясах используют очень близкие решения.
Я недавно бился со связкой двух мег по I2C. m640+m48. Где м48 использовалась в качестве часов+чтение датчиков, а с точки зрения м640 была 24с01.

И проблемы всплыли толь при уходе от байтового режима в страничный. На этой же шине сидели 2 микрухи 24с512.
Так вот вычислил такой момент. У меня м48 практически постоянно находилась в IDLE. Просыпалась по часам и TWI. Работала от внутреннего генератора 8MHz. Процедуры обработки - минимальны.
У меня м48 не успевала правильно обработать шину i2c в режиме слэйв с частотой свыше 150кГц. Наверное где-то не успевала просыпаться и что-то упускала. Как результат мешала работе 24с512. При снижении частоты ниже 150 - всё прекрасно заработало.
К сожалению подробности не выяснял. Как обычно - некогда.
Кстати. Один раз я использовал для связи двух AVR SPI обмен. Плотность 8000 байт в секунду.

Всё работало совершенно устойчиво. Никаких сбоев и коллизий. Правда микрухи стояли с двух сторон одной и той же платы. То есть длина проводников - 1см.

В серию не пошло. Мы потом всё таки выкинули вторую и впёрли всю обработку в одну.