Перед написанием кода рисуйте блок схемы алгоритмов. Рекомендую использовать yEd.
Перед написанием кода на Си для 8-битного микроконтроллера программы приема и обработки команд с пульта ДУ, как обычно, я нарисовал вполне рабочую (как мне тогда показалось) блок-схему алгоритма. Но уже при кодировании начали появляться смутные ощущения, что в программе что-то не совсем оптимально проработано.
Дальнейшие размышления и взвешивания всех «за» и «против» все же заставили еще раз перерисовать и немного оптимизировать алгоритм приема сигналов с пульта ДУ.
Борьба шла в основном за время нахождения в ISR и разделения ресурса TMR1 и для других процессов. Таймер 16-битный, а процессор 8-ми. Вычисление времени между импульсами требовало 16-битных операций, что давалось двойным увеличением времени и емкости занимаемого программой места в памяти. В итоге, решил в части кода обработку вести с 8-битными данными, нормализованными по величине именно для этой ветки алгоритма.
На схеме вариант алгоритма декодирования стандарта NEC (конечный автомат):
(Алгоритм проверил, вроде работает)
До кучи рассчитал точно значения 8-битных констант для более близкого положения значений таймера после преобразования его из 16 в 8 битное значение:
- 25 июня 2015, Dim
- Алгоритмы,Новости,Программы,Текущие проекты
Комментарии
Спасибо!