Сообщение от urry
|
время в прерывании используют только для анализа и установки флага задачи - и ни на что более - само прерывание должно быть как более коротким
|
Какая разница задача будет выполнятся в прерываниях или в основном цикле..
Главное что бы один проход по ВСЕМ задачам не был более чем необходимый минимальный период времени обработки всех задач. За этот период обрабатывается САМАЯ быстрая задача.. а остальные могут выполнятся 1 раз в несколько проходов... Обычно делаю всё в прерываниях таймеров...
Сообщение от kvark85
|
deCoder, я не понял сути. у меня команда длится 67,2 ms. тоесть квант времени должен быть больше 67,2 ms?
а это невозможно так как полупериод 10 ms длится. обьясните пожалуйста еще раз
|
В данном случае я бы взял 1/4 длительности ОДНОГО бита RC5. С этим периодом запустил таймер.
ЗАДАЧА1 ПРИЁМ битов ИК в буфер
За 4 прохода получаеш 1 бит и кладёш его в буфер..
Каждый проход у тебя получится не более 5-10 микросек.
в каждом проходе делаеш...
1) ожидаеш начала посылки, грузиш счётчик длительности бита=4
2) отсчёт счётчика времени бита - 3-5 команд
3) анализ состояния входа и отсчёт счётчика повторных состояний бита +ещё 10-20 команд
4) сохранение бита в РАМ или регистр, в каждом четвёртом проходе +10-20 команд
по окончанию посылки выставляеш флаг что принята команда.
ЗАДАЧА2 УПРАВЛЕНИЯ СИММИСТОРОМ
1) Отсчёт счётчика длительности периода
сравнение счётчика с установленым значением открытого тиристора и управление выходами примерно=
20-30 команд
2) обнаружение перепада входного напряжения +10-20 команд
ЗАДАЧА3 УПРАВЛЕНИЯ яркостью от принятых команд
её можно выполнять в другом таймере, периодом менее чем период посылок ИК. Ждать флага от задачи приёма посылки, и анализируеш буфер и декодируеш команду, Далее изменяеш длительность открытия тиоистора для ЗАДАЧИ2 регулирования яркости.
Когда то на PIC16F877 (20 мгц) регулировал в 3 фазах Симмиторы, измерял 4 канала АЦП и стабилизировал заданую мощность симмисторами в 4 каналах ...
+10 разрядов АЛС индикация параметров, +7 кнопок управления + сохранение параметров в ЕЕПРОМ если они изменялись пользователем.