Контроллер зависает
Я использую atmega 2560 в качестве основного (главного) контроллера и еще 5 подчиненных 2 atmega 8 и 3 atmega 328p, есть два устройства с аналоговым выходом, подключенные к основному контроллеру atmega 2560 через модуль ads1115, ads1115 преобразует аналоговый сигнал в 16 бит цифровые данные и передать их на atmega 2560 через I2C,
также главный контроллер имеет последовательную связь с ПК и связью I2C. с мазями. а некоторые двигатели также связаны с контроллерами.
Теперь моя проблема заключается в том, что есть одна функция, которая считывает данные из ads1115 для экземпляров исправления и с временным интервалом исправления и распечатывает их. для запуска кода в течение некоторого времени, скажем, 4-5 часов, контроллер зависает между этой функцией. и после этого не работает последовательная связь. мне нужно выключить питание, чтобы перезапустить машину.
@Tushar Chauhan, 👍-1
Обсуждение1 ответ
Трудно что-то сказать наверняка, не видя кода, но для программа, которая зависает при использовании связи I2C, я бы серьезно подозревал библиотека Wire. В этой библиотеке есть несколько циклов здесь и там, где она ожидает определенного условия на шине без без тайм-аута. Видеть twi.c. Если по какой-либо причине условие никогда не наступает, то программа застряла в бесконечном ожидании.
Вы можете попробовать найти другую альтернативную библиотеку I2C или, если вы можете терпеть случайные сбои, включите сторожевой таймер, чтобы выйти из зависает.
- Тактовая частота 2,4 МГц для 3-проводного SPI с использованием Arduino Mega 2560
- Ardunio Mega/ATmega2560: использование порта F или K как для аналоговых входов, так и для цифровых выходов.
- Постоянный выход тактовой частоты Arduino
- Расширение аналоговых входов для Arduino
- ESP8266: system_adc_read_fast() всегда возвращает 1024
- Arduino с 12-битным ЦАП (MCP4725) не работает
- Высокоскоростной внешний АЦП
- Измерение напряжения литий-ионного элемента, используемого для питания Arduino через повышающий модуль
Мы не можем ответить на этот вопрос без вашего кода. Пожалуйста, предоставьте минимальный рабочий пример, который показывает наблюдаемое поведение., @chrisl
вы используете класс String?, @Juraj