Контроллер зависает

Я использую atmega 2560 в качестве основного (главного) контроллера и еще 5 подчиненных 2 atmega 8 и 3 atmega 328p, есть два устройства с аналоговым выходом, подключенные к основному контроллеру atmega 2560 через модуль ads1115, ads1115 преобразует аналоговый сигнал в 16 бит цифровые данные и передать их на atmega 2560 через I2C,

также главный контроллер имеет последовательную связь с ПК и связью I2C. с мазями. а некоторые двигатели также связаны с контроллерами.

Теперь моя проблема заключается в том, что есть одна функция, которая считывает данные из ads1115 для экземпляров исправления и с временным интервалом исправления и распечатывает их. для запуска кода в течение некоторого времени, скажем, 4-5 часов, контроллер зависает между этой функцией. и после этого не работает последовательная связь. мне нужно выключить питание, чтобы перезапустить машину.

, 👍-1

Обсуждение

Мы не можем ответить на этот вопрос без вашего кода. Пожалуйста, предоставьте минимальный рабочий пример, который показывает наблюдаемое поведение., @chrisl

вы используете класс String?, @Juraj


1 ответ


0

Трудно что-то сказать наверняка, не видя кода, но для программа, которая зависает при использовании связи I2C, я бы серьезно подозревал библиотека Wire. В этой библиотеке есть несколько циклов здесь и там, где она ожидает определенного условия на шине без без тайм-аута. Видеть twi.c. Если по какой-либо причине условие никогда не наступает, то программа застряла в бесконечном ожидании.

Вы можете попробовать найти другую альтернативную библиотеку I2C или, если вы можете терпеть случайные сбои, включите сторожевой таймер, чтобы выйти из зависает.

,