Курсовая работа: Построение и программирование микропроцессорного таймера

Рассмотрим эти алгоритмы более подробно.

Блок начальной инициализации системы содержит операции для программирования таймера, UART-интерфейса и других различных настроек.

Инициализация UART заключается в установке скорости его работы в значение 9600 бит/с путём загрузки в регистр UBRR значения 25, а также в настройке его на чтение (а не на запись), что осуществляется записью в UCR значения 144.

Инициализация таймера заключается в задании режима его работы от внешнего резонатора (а не от внутреннего генератора частоты), разрешении прерываний таймера (по переполнению). Далее осуществляется запуск таймера.

Блок обработчиков прерываний обслуживает возникающие в системе прерывания в соответствии с заложенным алгоритмом. Выделено два обработчика прерываний: от таймера и от UART-интерфейса.

Обработчик прерывания UART осуществляет запоминание введённой пользователем по последовательному интерфейсу команды в одном из внутренних регистров процессора, что позволяет произвести её обработку в подходящий момент времени, не нарушая работы канала передачи.

Обработчик прерывания таймера осуществляет корректировку текущего времени, увеличивая счётчик секунд, минут, часов, дней и месяцев. Одна секунда отсчитывается таймером (частота работы которого задаётся от внешнего резонатора частотой 32768 Гц) за 32768 цикла. Использовать делители частоты при работе от внешнего резонатора, в отличие от работы от внутреннего генератора, нельзя, а частота кварца 32768 Гц рекомендована производителем МК для реализации часов реального времени.

Так как таймер 8-ми разрядный, то у нас есть возможность досчитать только до 256, таким образом, необходимо организовать ещё дополнительный множитель 128, что и организовано в регистре R28.

По прошествии одной секунды увеличивается значение секунд в регистре R27, а затем полученное значение сравнивается с 60-ю. При получении равенства, счётчик секунд обнуляется, а счётчик минут инкрементируется, с последующим сравнением количества минут с 60-ю и возможной инкрементацией счётчика часов. И так продолжается до тех пор, пока все значения (месяца, дня, часа, минуты, секунды) не будут посчитаны.

Блок обработки режимов микроконтроллера содержит три основные подпрограммы для каждого из возможных режимов работы микроконтроллера: режима корректировки времени, режима установки времени и режима установки расписания.

Режим корректировки времени осуществляет увеличение счётчика дней на 1, с последующей проверкой на достижение 32-х с возможной корректировкой месяца. Это может использоваться пользователем, когда прошлый месяц содержал только 30 дней, и первого числа следующего месяца часы показывают 31-е (так нет разграничения на 30-ти и 31-но дневные месяцы). Тогда выбором этого режима пользователь легко корректирует дату.

Режим установки времени позволяет установить текущие значения даты и времени, без проверки их правильности. После выбора этого режима программа ожидает от пользователя ввода текущего месяца, затем дня, часа и минуты. После выполнения всех действий и вступления изменений в силу, программа возвращается в нормальный режим работы.

Режим установки расписания позволяет пользователю задать дату и время включения и выключения выбранного им прибора. После выбора этого режима микроконтроллер ожидает ввода номера прибора, для которого будет задаваться расписание. После выбора прибора пользователь должен ввести дату и время включения выбранного прибора в формате ММ-ДД-ЧЧ-мм, а затем дату и время выключения данного прибора в том же формате. После ввода система переходит в обычный режим работы.

Блок служебных подпрограмм представляет собой остальные подпрограммы, необходимые для работы. К ним относятся подпрограмма предварительной очистки EEPROM (хотя её можно было отнести к блоку инициализации), подпрограмма ожидания (основной режим), а также подпрограмма, осуществляющая включение или выключение приборов при совпадении текущего времени с каким-либо расписанием.

После запуска прибора выполняется блок инициализации программы, осуществляющий загрузку начальных значений и установку режимов работы устройств микроконтроллера. Также производится запуск таймера.

Далее программа переходит в основной режим своей работы, в течение которого вызывается подпрограмма проверки расписания, осуществляющая сравнение текущей даты-времени со всеми значениями расписания в памяти и вызов при необходимости подпрограммы активации/деактивации подключенных устройств. Также основная программа постоянно опрашивает значение регистра, работающего с UART для обнаружения факта задания одного из режимов работы МК. При обнаружении этого факта управление передаётся подпрограмме выявления номера режима, и далее на обработчик выбранного режима.

Если режим не задан, то основная программа вновь осуществляет проверку расписания. Это необходимо делать довольно часто в связи с достаточно большим объемом программного кода, осуществляющего эту проверку, а также в связи с достаточно большим значением самих проверяемы значений (80 байт).

При подаче пользователем через последовательный интерфейс сигнала о выборе режима, генерируется прерывание от UART, что впоследствии быстро выявляется в основной программе.


5. Отладка Программы для микроконтроллера

Успешная трансляция ещё не означает, что код не содержит ошибок. Она означает, что нет ошибок синтаксического плана, но сам алгоритм может работать совершенно неверно. Для его отладки необходимо проверить все его ветви и возможные переходы. Программа была отлажена с помощью Win32 AVRStudio 4. Листинг программы представлен в приложении 1.

Изначально проектировалась секция инициализации, и основная часть – режим ожидания. Запуск на выполнение позволял полностью отладить программу.

При проектировании обработчика прерывания таймера, как собственно и остальных участков программы отладка производилась в пошаговом режиме с постоянным контролем содержимого регистров портов и т.п. Иногда было необходимо вставлять дополнительные операторы, для выявления некоторых ситуаций (чаще всего это операторы присвоения). Такой подход позволял полностью выявить ошибки в коде.

При разработке подпрограммы работы с UART и обработки режимов микроконтроллера, возникла необходимость моделирования внешнего устройства (COM-порта), по которому пользователь будет посылать управляющие сигналы на МК. В этом случае производилась отладка кода до момента непосредственно ввода пользовательских данных (в пошаговом режиме или режиме «запуск до курсора), затем вручную менялось содержимое какого-либо порта или регистра и затем выполнение продолжалось далее в пошаговом режиме. Такой способ позволил довольно легко отладить участки кода, где требовалось непосредственное вмешательство пользователя в содержимое регистров и портов микроконтроллера.


6. Программирование МК

МК AT90S8535 предоставляет 8 Кб перепрограммируемой FLASH – памяти. Для программирования может использоваться высоковольтный параллельный или низковольтный последовательный режимы программирования. Первый способ используется для программирования памяти с невозможностью её последующего изменения пользователем. Второй же предоставляет возможность загружать программу пользователем. Каждый метод предусматривает свой алгоритм загрузки программы, каждый из которых подробно рассмотрен в документации на микроконтроллер.

Параллельное программирование.

Схема для осуществления параллельного программирования изображена на рисунке 7. Сигналы:

- 1 – Устройство готово к программированию

- 0 - Разрешение вывода

- Импульс записи

К-во Просмотров: 453
Бесплатно скачать Курсовая работа: Построение и программирование микропроцессорного таймера