перейти к навгации

Перед написанием кода рисуйте блок схемы алгоритмов. Рекомендую использовать yEd.

Перед написанием кода на Си для 8-битного микроконтроллера программы приема и обработки команд с пульта ДУ, как обычно, я нарисовал вполне рабочую (как мне тогда показалось) блок-схему алгоритма. Но уже при кодировании начали появляться смутные ощущения, что в программе что-то не совсем оптимально проработано.

Дальнейшие размышления и взвешивания всех «за» и «против» все же заставили еще раз перерисовать и немного оптимизировать алгоритм приема сигналов с пульта ДУ.

Борьба шла в основном за время нахождения в ISR и разделения ресурса TMR1 и для других процессов. Таймер 16-битный, а процессор 8-ми. Вычисление времени между импульсами требовало 16-битных операций, что давалось двойным увеличением времени и емкости занимаемого программой места в памяти. В итоге, решил в части кода обработку вести с 8-битными данными, нормализованными по величине именно для этой ветки алгоритма.

На схеме вариант алгоритма декодирования стандарта NEC (конечный автомат):

NEC04m

(Алгоритм проверил, вроде работает)

 

До кучи рассчитал точно значения 8-битных констант для более близкого положения значений таймера после преобразования его из 16 в 8 битное значение:

tab_interv

Комментарии

1. Virgis - 1 мая 2016

Спасибо!