Xan>> И так в цикле.Non-conformist> В каком?
Ну я когда-то писал, что правильно — в цикле проверять все условия, позволяющие зажигать + наличие команды на поджиг. И каждый раз, когда всё совпало, менять состояние пина.
Тогда, если несколько десятков раз всё совпадёт, будет поджиг.
Цикл может быть привязан к циклу опроса датчиков.
Что-то у меня способность объяснять к ночи пропала.
В общем цикле, хороводом, крутятся несколько задач. Каждая из них (кроме других своих дел) решает, можно ли поджигать. И выставляет в своей ячейке памяти флаг.
И ещё одна смотрит на все флаги, и, если все "за", дергает пин.
Например, одна задача проверяет, что блокирующая чека вынута, выставляет флаг общего разрешения.
Другая задача через радиоканал получила команду на разрешение полёта, она выставляет флаг разрешения полёта.
Третья с датчиков ускорения интегрированием определяет высоту и скорость, если высота большая а скорость маленькая, выставляет флаг, что пора выбрасывать парашют.
Четвёртая проверяет все флаги и, если все они разрешают, один раз щёлкает пином.