
- •Глава 2
- •Оглавление Разработка программного обеспечения Структура данных
- •Принцип построения программы.
- •Программное обеспечение
- •Тело основного цикла.
- •Прерывание
- •Выдача звуковых сообщений.
- •Модуль клавиатуры.
- •Интерфейсы Интерфейс с синтезатором частоты мс145192
- •Интерфейс с eeprom.
- •Протокол общения с жки
- •Испытания, расчеты и отладка Технология создания программы
- •Расчеты
- •Расчет констант для загрузки в синтезатор
- •Расчет констант для звуковых сообщений.
Протокол общения с жки
ЖКИ состоит из контроллера ЖКИ и , собственно, и самой матрицы на жидких кристаллах. В контроллер ЖКИ зашита таблица ASCII символов и имеется возможность записать 8 своих символов путем записи последовательности из 8 байт в его оперативную память.
Обмен данными с ЖКИ происходит по интерфейсу из 10 проводов. Передача данных в ЖКИ происходит параллельно по 4 бита. Остальные биты задействованы под управляющие сигналы и питание. У ЖКИ существует свой набор команд, через который адресуются знакоместа индикатора и может происходить запись пользовательских символов в оперативную память ЖКИ.
Испытания, расчеты и отладка Технология создания программы
В распоряжении программиста имелись следующие средства проектирования и отладки:
микросхема контроллера с ПЗУ, стираемым ультрафиолетовыми лучами
Ассемблер для микроконтроллеров семейства PIC16CXXMPASMдля платформыINTEL Х86.
Отладчик MPSIM. для платформыINTEL Х86.
Программатор для контроллера, соединенный по параллельному порту с компьютером.
IBM - совместимый компьютер с программным обеспечением для написания и отладки текста программы.
Процесс проектирования состоял из нескольких этапов. Сначала в текстовом редакторе писалась программа на языке ассемблера, затем этот текст компилировался и ассемблировался, проходил начальную проверку на отладчике, и готовый код программы в формате INTEL HEXпрошивался в микросхему. Окончательное тестирование программа проходила уже на рабочем макете радиостанции, где и выяснялись возможные ошибки. Все сигналы микроконтроллера просматривались на осциллографе, где и выяснялась правильность работы того или иного интерфейса.
Отладка программы не могла быть произведена на отладчике полностью так, как в отладчике нет средств симулирования внешних устройств, которые были необходимы для отладки программы.
Испытания программы происходили в лабораторных условиях с помощью большого количества приборов и оборудования (осциллографов, генераторов высокочастотных сигналов, частотомеров и т.д.), по которым оценивались необходимые времена задержки и формы сигнала.
Расчеты
При создании программы приходилось очень часто производить большое количество расчетов, связанных с различными временами, константами для работы программы и с внешними устройствами. Приведем некоторые из них:
Расчет констант для загрузки в синтезатор
Как было описано выше, синтезатор имеет три регистра, управляющие его работой и загружаемые по последовательному интерфейсу.
В синтезаторе происходит деление образцовой и генерируемой частоты до определенной величины - шаг (или частота сравнения), задаваемая программистом в 13-разрядном регистре R-CounterЕго значение равно
Образцовая частота подается на синтезатор с кварцевого генератора и равна 12.8 МГц. Частота сравнения зависит от шага сетки частот и обычно ему равна. Рассмотрим случай для частоты сравнения 25 кГц.
Для задания выходной частоты служит регистр А, состоящий из двух счетчиков 6-ти разрядный А и 12-ти разрядный N. Значение этого регистра это отношение генерируемой частоты к частоте сравнения
Соответственно 6-ти разрядный A_counter=10h, и 12-ти разрядныйN_counter=6Ah.
Но существует и ограничение: величина N-counterдолжна быть больше, чем А-counter. Это требование выполняется.
Исходя из этих сведений и рассчитывается получаемая частота. Для получения частоты до 175 МГц с требуемым шагом мы должны инкрементировать А_counter. При этом его максимальное значение будет равно (175-170)*106/25*103=200=С8h, но так как этот счетчик имеет 6 разрядов, его макс. значение не превышает 3Fh. Остальные два старших разряда от числа С8hдолжны быть прибавлены кN_counter.