fl
АВТОМАТИКА
If
Pulse(410)
Pause(3580)
Pulse(400)
Pause(63200)
Pulse(2000)
Pause(27830)
Pulse(390)
Pause(1580)
Pulse(410)
Pause(3580)
Pulse(400)
#endif
#ifdef Canon
Pulse (480)
/generate pattern
Pause(7324)
Pulse(480)
#endif
Для Nikon и Canon посылка выглядит по-разному, поэтому здесь используется условная трансляция. Реаль-
но в исполняемый код попадет фрагмент для той системы, которая задана в начале программы с помощью
соответствующего #define.
Текст программы, формирующий посылку, выглядит просто и понятно, прямо как на языке высокого уровня,
хоть на самом деле это ассемблер. Благодаря готовым макросам очень легко изменять формируемые ИК-
последовательности.
После того, как посылка передана, процессор снова должен “уснуть”. Однако перед этим нужно дождаться
отпускания кнопки. Причем гарантированного отпускания. Иначе дребезг контактов, который обязательно воз-
никнет при отпускании, может снова вызвать прерывание, и посылка будет передана еще раз. Это наблюда-
лось реально, поэтому пришлось сильно ужесточить контроль отпускания. Для надежного определения отпус-
кания кнопки она опрашивается 100 раз с периодом 1 мс, и если во время опроса будет обнаружено замыкание
контактов, опрос начинается сначала:
waitl
wait 0
sbis
PINB,log2(PBTN)
rjmp
waitl
ldi
temp,100
sbis
PINB,log2(PBTN)
rjmp
waitl
Pause(1000)
dec
temp
brne
waitO
/wait push button release
/load debounce counter
/check push button state
/restart debounce if changed
/wait 1 mS
/advance counter
Но вот кнопка окончательно разомкнулась. Теперь можно "засыпать”, Для этого просто осуществляем пере-
ход на начало основной программы, там уже есть необходимые для этого команды:
rjmp
Main
Вот и вся программа. Теперь ее
можно оттранслировать, чтобы полу-
чить файл прошивки. Для тех, у кого
нечем это сделать, есть готовые фай-
лы прошивки для Nikon и Canon, ко-
торые можно
скачать с сайта журнал
па.
Хотя в готовых прошивках есть
одно “но”: там стоит значение калиб-
ровочной константы внутреннего RC-
генератора для моего экземпляра
микроконтроллера. По идее, это зна-
чение не сильно отличается от экзем-
пляра к экземпляру микроконтролле-
ра, что я и наблюдал на практике.
Пульт, скорее всего, работать будет,
но гарантировать ничего не могу. Для
желающих сделать калибровку ЯС-
генератора для своего экземпляра
микроконтроллера ниже подробно
описана эта процедура.
Осталось прошить микроконтрол-
лер. Микроконтроллеры семейства
А\/Я поддерживают внутрисхемное
программирование, т.е. программиро-
вание прямо в устройстве. Обычно
для этого на плате предусматривают
специальный разъем. Поскольку
наша плата имеет очень маленькие
размеры, разъем установить просто
негде. С другой стороны, не сильно он
[) Радиолюбитель - 04/2007
24
предыдущая страница 24 Радиолюбитель 2007-04 читать онлайн следующая страница 26 Радиолюбитель 2007-04 читать онлайн Домой Выключить/включить текст