LTagKirov писал(а):
Регистр конфигурации TCCR1A
COM1A1 COM1B1 FOC1A=0 WGM11
COM1A0 COM1B0 FOC1B=0 WGM10
Регистр конфигурации TCCR1В
ICNC1 = 0 X WGM12
ICES1 = 0 WGM13 CS12 CS11 CS10
Несущая частота ИК и ЦАП звука определяется регистром ICR1 = TOP,
Выбирается из ряда ИК несущих 36,38,56 КГц
ШИМ задаётся для разных каналов отдельно регистрами OCR1A и OCR1B
Можно применить три режима, с установкой верхнего модуля счёта:
Fast PWM f = Fosc / ( N * TOP) WGM = 1110
Phase Corect PWM f = Fosc / ( 2 * N * TOP) WGM = 1010
Phase & Freq Corect PWM f = Fosc / ( 2 * N * TOP) WGM = 1000
Если мы хотим менять скважность несущей ИК - частота ШИМ = Fкварца/256.
Мало того, что кварц прийдется ставить "нестандартный" 36кГц*256=9.216 МГц (слава Богу - такие есть), но и для другой несущей потребуется другой кварц.
Можно, конечно, использовать режим CTC (сброс при совпадении), но скважность не сможем менять и прерываний не будет (изменение состояния вывода OCn при совпадении с регистром сравнения - в данном режиме вызов прерывания блокируется).
А чем тогда будем мерить длительность между прерываниями INT0?
таймер0 - ШИМ для звука. Прерывания не генерируются.
таймер1 - аппаратная генерация несущей. Прерывания не генерируются.
таймер2 - прерывания 8 КГц для формирования звука.
Нужно ещё чем то отмерять длительномть "1" и "0" при приёме/передаче.
Чем отмерять?
Получиться?
ЦАП (ШИМ) звука работает в режиме FAST PWM на частоте кварца.
Частота ШИМ звука = 16 000/256 = 62,5 кГц.
Не вижу смысла тут что то менять.
P.S. Кстати -можно попробовать отлавливать пакеты с TSOPа с помощью Блока захвата таймера. Только надо все пазлы сложить - хватит ли для этого всего ресурсов таймеров?
P.P.S. По счастливой случайности выводы OSC1A (аппаратный ШИМ) и ICP1(вход для блока захвата) не задействованы пока на маленькой платке!
Так что поле для экспериментов огромно...