Правильная работа I2C. Нужен ли ПБ от зависания ?

На этом форуме Вы можете задать вопросы знатокам программы и автору.
Ответить
KulibinOrsk
Лейтенант
Сообщения: 515
Зарегистрирован: 25.02.2018{, 08:48}
Репутация: 21
Откуда: Оренбург
Имя: Александр

Правильная работа I2C. Нужен ли ПБ от зависания ?

#1

Сообщение KulibinOrsk » 25.02.2020{, 07:30}

Хочу спросить у знающих - возможно ли и нужно ли сделать ПБ от зависания при работе по I2C ?
Пример реализации: https://catethysis.ru/i2c-restart-error-handling/ (ну или один из примеров) и возможно для FLprog не помешает такой же блок создать ?
По I2C можно работать передавая данные в одну сторону (например дисплей) или в обе стороны (любой датчик. часы и др)
Вопросы:
- что будет если отсоединить I2C при работе с дисплеем ? (зависнет ли программа, восстановится ли при подключении ? )
- и аналогично что будет если отсоединить при работе с датчиком (тут наверняка зависнет)
слово отсоединить можно интерпретировать как поступление какой то помехи ...что в данном случае равнозначно.

Отправлено спустя 24 минуты 54 секунды:
Интересует конечно "действия" со стороны программного кода - что происходит в коде (то что в железе зависон это и так понятно, а вот почему код блуждать начинает - это интересно и это надо устранять)

Аватара пользователя
Олег
Полковник
Сообщения: 1532
Зарегистрирован: 13.10.2015{, 16:47}
Репутация: 63
Контактная информация:

Правильная работа I2C. Нужен ли ПБ от зависания ?

#2

Сообщение Олег » 25.02.2020{, 08:37}

То что описано в этой статье спасет только от случайной ошибк, а при отключении дисплея или датчика практически ничего не изменится. Цикл прокручивается 200 раз, потом рестарт и опять опять в цикл while. Если I2C подключено в начале программы, то вообще будет сплошной рестарт с опросом шины. Ну разве что после подсоединения подключится автоматически.
Есть вариант после зависания и рестарта отключать опрос шины на какое-то время, чтобы скетч делал свою работу до следующего опроса, но это уже зависит от ТЗ скетча, где-то такое допустимо, где-то нет. ИМХО.

Аватара пользователя
ingener
Лейтенант
Сообщения: 556
Зарегистрирован: 14.10.2018{, 00:26}
Репутация: 20
Имя: Андрей

Правильная работа I2C. Нужен ли ПБ от зависания ?

#3

Сообщение ingener » 25.02.2020{, 11:10}

Есть похожий вопрос, чтобы новую тему не открывать - по защите от зависания самой Ардуино.
Точнее, по защите от возможных последствий.
Есть проект, где она управляет автоматизированным сварочным аппаратом, и возможно зависание именно в момент зажигания дуги.
При этом выход управления дугой остается активен, а движение тележки не начинается, и в итоге прожигается большая дыра.
Можно ли как-то обнаружить зависание внешними устройствами и быстро сделать авто-ресет?
Иными словами, есть ли какие-либо признаки нормальной и "зависшей" работы контроллера (например, сигналы на Rx/Tx пинах?)

Аватара пользователя
Олег
Полковник
Сообщения: 1532
Зарегистрирован: 13.10.2015{, 16:47}
Репутация: 63
Контактная информация:

Правильная работа I2C. Нужен ли ПБ от зависания ?

#4

Сообщение Олег » 25.02.2020{, 11:18}

ingener, По этому поводу несколько тем на форуме, ищите по словосочетаниям Сторожевой таймер или watch dog. Может быть вочдог.

KulibinOrsk
Лейтенант
Сообщения: 515
Зарегистрирован: 25.02.2018{, 08:48}
Репутация: 21
Откуда: Оренбург
Имя: Александр

Правильная работа I2C. Нужен ли ПБ от зависания ?

#5

Сообщение KulibinOrsk » 05.03.2020{, 07:04}

Кто то поможет сделать ПБ из кода приведенного по ссылке ?
Пусть хотя бы будет ПБ для I2C для: спасания от случайной ошибки и помех - это уже большое дело будет для всех рабочих приборов.

bayeck
Сержант
Сообщения: 140
Зарегистрирован: 15.01.2018{, 00:58}
Репутация: 2
Откуда: истра
Имя: роман

Правильная работа I2C. Нужен ли ПБ от зависания ?

#6

Сообщение bayeck » 05.03.2020{, 11:13}

ingener, viewtopic.php?f=42&t=351&p=84620#p84620 вам туда.

Ответить

Вернуться в «Спросить у знатоков»