Добавлено after 20 minutes 7 seconds:
MLX90640. И не только. Хотел бы указать на один момент. Не усложнять программу излишними сущностями. Нужно тщательно анализировать проект. И не нагромождать излишними действиями.
Примеры. Свойства объекта. Всегда смотрим на это. Что имеем на руках. Пусть у нас есть дискретный выход. Его состояние это уже вход для триггера.
Код: Выделить всё
if (LED_1_PORT & (1<<LED_1))) // вариант 1
if (! (check_led_1_state ())) // вариант 2. В этом случае мы не паримся, какой активный сигнал включения светодиода
led_1_on ();
else
led_1_off ();
Теперь, нам надо помигать светодиодом. В программном модуле уже есть признак состояние мигалки светодиода. Теперь мы можем избавиться от триггера tr2. Это ещё минус 2 состояния. Ненужных и непрогнозируемых, возможно, неучтенных.
Это правило верно в случае прямого вывода на пины МК. Оптимизация.
Цитата
Можно рассматривать состояние программы и более упрощенно, в виде совокупности значений всех управляющих переменных - переменных, участвующих в условиях переходов. Тогда изменение значения одной из управляющих переменных будет означать изменение состояния программы, а число состояний программы будет определяться максимально возможным количеством комбинаций значений управляющих переменных, возникающим при ее работе. Предположим, что в программе используются только двоичные управляющие переменные (флаги). В этом случае количество состояний программы, содержащей n двоичных управляющих переменных, будет лежать в интервале от n до 2n.



