Спасибо. Нашёл информацию на Радио Коте, прочитал.
Появился вопрос о приоритетности или иерархичности прерываний (возможно ли прерывание в прерывании?). Т.е. как быть, если у меня, например:
1) в процессе выполнения прерывания произошло событие, которое важнее текущего прерывания. Получается, что нужно как-то начать другое прерывание в текущем прерывании? как?
2) а как быть, если нужно чтобы одновременно оба прерывания выполнялись?
Вот что имеется сейчас (система по автоматическому наполнению резервуаров в двух увлажнителях воздуха и поливу цветов в комнате):
мониторить датчки о недостатке воды
получить сигнал с датчика №X
открыть клапан №X
включить помпу
ждать сигнала с датчика №X2 о заполнении резервуара
выключить помпу
закрыть клапан №X
вернуться к началу (к мониторингу датчиков)
Прервать если прошли сутки (24 часа)
выключить помпу
запомнить какие клапаны сейчас открыты
закрыть открытые клапаны
полить цветы (открыть клапан цветов, включить помпу, подождать n-секунд, выключить помпу, закрыть клапан цветов)
открыть клапаны, которые запоминали
включить помпу
выйти из прерывания
Как это сделать я понимаю.
Но как добавить сюда ещё и тумблеры, которые могут принудительно (несмотря на то, что по датчику воды ещё достаточно) включить его. При этом самым важным/приоритетным событием должны быть датчики протечки, т.е. если есть протечка, то нужно отключить тот модуль, около которого протечка, несмотря на даже "принуждающий тумблер" или на прерывание по таймеру (прерывание полива цветов). Получается прерывание в прерывании (в случае с цветами)...
P.S.- пишу на Асме для AtMega8.