Мастеры одновременно (ресеты обьединены) начинают ломиться в еепромку на запись. Но в разные адреса.
М1 ломится в 0А по адресу страницы 00 0F и пишет туда байт 'B'
M2 ломится в 0А по адресу страницы 00 FF и пишет туда байт 'B'
Исходя из правил арбитража М2 арбитраж должна проиграть и свалить с поляны. Однако, что происходит на самом деле:
Итак, осциллограммка для привлечения внимания.

Красный квадратик отмечает место, где идет конфлик уровней. Как видим, запись прошла в ЕЕПРОМ по адресу 00 0F - Еепром подтверждает это.
Что же о процессе думают два контроллера? Я писал в буфер лог работы конечного автомата прерывания TWI (тупо TWSR) и выдавал потом в уарт. Получил такую картину:
М1: 08 18 28 28 28
M2: 08 18 28 28 28
Расшифровка если кто не помнит:
08 - передан СТАРТ
18 - Передан адрес девайса и получен АСК
28 - передан первый байт (00) и получен АСК
28 - передан второй байт (0F vs FF) и получен ACK
28 - передан последний байт 'B' и получен АСК
- дальше будет стоп.
Хотя по логике шины должно быть так
М1: 08 18 28 28 28
M2: 08 18 28 38 ...........08 18 28 28 28
38 - проигрыш арбитража и старт(опционально) после освобождения шины
Почему М2 продолжил передачу, хотя пролажал арбитраж на целой тетраде? Аппаратный глюк контроллера? И как с этим жить?
З.Ы.
Пример сугубо учебно демонстрационный и не стоит задавать вопросы "зачем нужно много мастеров, да еще в таком синхроне".
UPD ах да, по одиночке они спокойно пишут каждая в свой адрес. А вот когда вместе, то вот такое вот садомазо.