Создал класс для считывания данных с АЦП со следующими методами:
Создал в mainwindow.cpp таймер с периодом в 10 мили секунд. По сигналу timeout() вызываю слот:
void MainWindow::slotPowerSypply()
{
if(readingVoltage_24V() <= 1.1){
system("poweroff");
}
}
В нем проверяю напряжение по уровню. И если уровень меньше 1,1 Вольта то выключаю тион. В схеме есть батарея конденсаторов для резервного выключения.
Через некоторое время работы в программе перестает работать тачскрин. Не понимаю как так. В терминал ошибки не пишет.
Могу только предположить, что столь частый опрос АЦП ломает его работу по обслуживанию тачскрина. Версия линукс 4.19.46
Buildroot 2018.11.4
сделайте опрос реже - сразу ясно станет :) у меня такой платы нет чтобы проверить. Да и как то усложнено у вас c АЦП и програмным монитором - тут какой-нибуть компаратор лучше и выход на GPIO с прерыванием чтобы процессор не грузить постоянным опросом. Возможно подобным образом можно и АЦП запрограммировать - надо смотреть даташит и драйвер.
Делал опрос 1 секунду. Но проблема повторилась. Потом понял, что если вызовется опрос АЦП по таймеру и в этот момент нажал кнопку на тачьскрин, то АЦП зависает.