Предположим, по каким-то не зависящим от нас причинам потерялся арбитраж. Что делать?
Уйти в прерывание, отключить i2c, заново настроить параметры или пробежаться по ним и проверить что все ок, заново включить i2c и работать дальше? Ну я так думаю. Ещё можно какую нибудь запись в отладочный выход скинуть или в лог записать что произошел отвал, но я тупенький и пока не знаю как принято
Не сработало. Я, в общем, уже пытался раньше, сейчас еще раз убедился. И в основном коде и в прерывании, бит не сбрасывается. Состояние MDR_I2C:CTR:EN_I2C не влияет. При отключенном тактировании все регистры модуля считываются как 0, логично. Но при возврате тактирования все значения регистров возвращаются в том же виде, что и до отключения.
Обсуждают сегодня