Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
BEAR / PART2.DOC
Скачиваний:
15
Добавлен:
16.04.2013
Размер:
1.65 Mб
Скачать

Программное обеспечение

Подробные блок-схемы всех частей программы приведены в приложении 2.

Тело основного цикла.

После PowerON Resetпо векторуresetпрограмма попадает на процедуру начальной инициализации, которая подготавливает контроллер к началу работы. В ее функции входит:

  • подготовка портов к работе

  • подготовка таймеров

  • подготовка начальных данных (инициализация)

  • восстановление сохраненных переменных из EEPROM

  • подготовка индикатора

  • перевод в режим Stand Byвсех внутренних устройств контроллера

  • перевод в режим Stand Byвсех внешних устройств (приемника, передатчика и синтезатора)

После инициализации программа попадает в основной цикл, где выполняются все не терпящие прерываний процедуры общения с внешними устройствами:

  • загрузка приемника

  • загрузка передатчика

  • сохранение данных в EEPROM

  • обработка звуковых сообщений

  • обработка автоповтора

  • обработка клавиатуры

Прерывание

Прерывания происходят по переполнению таймера TIMER1, которые происходят каждые 16мс. Здесь происходит отсчет всех времен (введены счетчики для определения времени проверки напряжения питания, автоповтора, звука, переключения между дежурным и текущим каналами и т.д.). Это время и является минимальным квантом времени в радиостанции.

Специфика этого микроконтроллера не позволяет при входе в прерывание автоматически сохранить все системные регистры, поэтому об этой проблеме следует позаботиться программисту. Он сам должен сохранить нужные ему для дальнейшей работы в основном цикле регистры. На процедуры сохранения и восстановления регистров уходит достаточно большое время и при такой низкой тактовой частоте процессора (500 КГц) введение еще одного или нескольких прерываний отняло бы массу вычислительных ресурсов процессора.

После сохранения регистров идет выяснение режима работы станции (прием или передача) и в зависимости от этого выполняются различные действия.

При загруженном передатчике требуется в зависимости от кнопки «>» подать или высокую или низкую мощность в УВЧ передатчика

При загруженном приемнике определяется наличие несущей частоты полезного сигнала в эфире. Если станция ее обнаруживает (уровень несущей больше уровня порога шумоподавителя), включается УНЧ и сигнал проходит на динамик. В случае отсутствия несущей уменьшается счетчик SLEEP, при обнулении которого станция переходит в режим сохранения энергииSTAND BY, откуда по прошествии определенного времени (не более 100 мс) она выходит и переходит в режим приема, но уже в другом прерывании.

После опроса приемника и передатчика станция опрашивает клавиатуру. Происходит аналого-цифровое преобразование, в результате которого на выходе АЦП получается 8ми разрядный двоичный код комбинации нажатых клавиш. Во избежание дребезга в следующем прерывании также считывается код и сравнивается с предыдущим. В случае их совпадения делается вывод о том, что комбинация считана. Но так, как клавиш всего четыре, а вместе с комбинациями из двух клавиш 16, требуется определить номер комбинации. Для этого создана клавиатурная таблица, расположенная во второй странице программной памяти и состоящая из 256 значений. По ней однозначно определяется нажатая комбинация.

После этого раз в секунду происходит проверка питающего напряжения и подача звукового сигнала в случае его несоответствия норме (это часто бывает при подсевших аккумуляторах в режиме передачи). Для выставления флага о сохранении данных в EEPROMтребуется соблюдение следующих условий : нет режима передачи и прошествие 7 сек со времени последнего нажатия на клавиатуру. Затем выставляется флаг об обработке звука, восстановление сохраненных регистров и выход из прерывания.

Соседние файлы в папке BEAR