
- •Глава 2
- •Оглавление Разработка программного обеспечения Структура данных
- •Принцип построения программы.
- •Программное обеспечение
- •Тело основного цикла.
- •Прерывание
- •Выдача звуковых сообщений.
- •Модуль клавиатуры.
- •Интерфейсы Интерфейс с синтезатором частоты мс145192
- •Интерфейс с eeprom.
- •Протокол общения с жки
- •Испытания, расчеты и отладка Технология создания программы
- •Расчеты
- •Расчет констант для загрузки в синтезатор
- •Расчет констант для звуковых сообщений.
Расчет констант для звуковых сообщений.
Рисунок 2-5 : структура
модуля ШИМ
Для этого вывод 2 порта С должен быть сконфигурирован как выход. В режиме ШИМ программист записывает 8 битное значение рабочего цикла в регистр CCPR1L(старший байт этого регистра используется как буфер для младшего регистра), а два младших бита берутся изCCP1CON<5:4>. Запись из младшего регистра в старший происходит при начале рабочего цикла.CCPR1Hдоступен по чтению, но не для записи. Период определяется регистромPR2.
PWM период ={PR2+1}*4Tosc*(TMR2 предделитель)
PWMрабочий цикл = (DC1)* Tosc*(TMR2 предделитель)
Где DC1это 10-битное значение изCCPR1L, соединенного сCCP1CON<5:4>.
В программе каждая нота задается байтом, в котором первые три бита кодируют длительность, а остальные пять - номер ноты. По номеру ноты из таблицы выбирается значение для загрузки в регистр периода звука, скважность получаемого сигнала равна 2.
...............
retlw d'169' ;нота8 (740.00 гц)739.64
retlw d'159' ;нота9 (783.99 гц)786.16
retlw d'150' ;нота10 (830.60 гц)833.33
retlw d'142' ;нота11 (880.00 гц)880.28 ;ля 2 окт
retlw d'134' ;нота12 (932.30 гц)932.83
retlw d'127' ;нота13 (987.77 гц)984.25
.............
Рассчитаем период ноты ЛЯ 2 октавы (частота 880 Гц), значит период одного звукового колебания 1/880=0.0011сек.
Tosc=1/500000=2мкс.
TMR2 предделитель =1.
Соответственно 0.0011=PR2*4*2*10-6*1
Откуда PR2=0.0011/4*2*10-6*1=142
Аналогично рассчитываются и остальные ноты.