Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
МВБА_МК метода.doc
Скачиваний:
83
Добавлен:
13.04.2015
Размер:
1.45 Mб
Скачать

4.2 Описание лабораторной установки

Лабораторная работа выполняется в индивидуальном порядке. На каждом рабочем месте должны быть установлены: многофункциональный лабораторный макет на базе микроконтроллера AVR ATMEGA 128, ПЭВМ типа IBM PC/AT c инсталлированным программным обеспечением: операционной системой MS–WINDOWS v. 9x, 2000, XP и программатором на основе кросс-компилятора языка программирования C CodeVision AVR. Задания выполняются на лабораторном макете на базе 8-ми разрядного микроконтроллера AVR ATMEGA 128. Исследуемые в работе таймеры - счетчики Т0 и Т1 входят в состав микроконтроллера. Для индикации режимов работы таймеров дополнительно используется блок из 8 светодиодов (см. рисунок 1.7), подключенных к микроконтроллеру через порт D в соответствие со схемой, приведенной на рисунке 1.9 (катоды светодиодов подключены к выводам порта D, на аноды светодиодов подано положительное напряжение). Подробное описание лабораторного макета приведено в пункте 1.2 лабораторной работы № 1.

    1. Порядок проведения работы и указания по ее выполнению

Перед началом выполнения практической части лабораторной работы проводится экспресс–контроль знаний по принципам функционирования таймеров/счетчиков, входящих в состав микроконтроллера AVR ATMEGA 128, а также по способам задания и измерения временных интервалов. При подготовке к лабораторной работе необходимо составить предварительный вариант листинга программы, в соответствие с индивидуальным заданием (см. таблицу 4.7).

Задание. Разработать в среде программирования Code Vision AVR программу на языке С для микроконтроллера AVR ATMEGA 128, управляющую блоком из 8-ми светодиодов. Временные параметры индикации задаются с помощью установок таймеров – счетчиков Т1 или Т0. Варианты индивидуальных заданий представлены в таблице 4.7.

Порядок выполнения задания:

  1. Включить лабораторный макет (установить выключатель электропитания в положение I, и убедиться в свечении индикатора электропитания красным цветом).

  2. Запустить компилятор Code Vision AVR.

  3. Создать пустой проект.

  4. Создать файл ресурса для кода программы и подключить его к проекту.

  5. Ввести код исходного модуля программы управления блоком светодиодов в соответствие с вариантом задания, указанном в таблице 4.7.

  6. Выполнить компиляцию (нажав клавишу F9) исходного модуля программы и устранить ошибки, полученные на данном этапе.

  7. Настроить параметры программатора.

  8. Создать загрузочный модуль программы (нажав комбинацию клавиш Shift+F9) и выполнить программирование микроконтроллера.

  9. Проверить работоспособность загруженной в микроконтроллер программы и показать результаты работы преподавателю.

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

Пример выполнения задания: разработать программу, выполняющую в бесконечном цикле управление блоком светодиодов в режиме “бегущий огонь” (с последовательным включением/выключением светодиодов блока индикации). Задание временных интервалов выполнить с помощью следующих настроек таймера Т1: управляющее прерывание TIM1_OVF, частота счета fр1 = 43 КГц.

Решение: Программное управление блоком светодиодов в режиме “бегущий огонь” можно обеспечить, записывая во все, кроме нулевого, разряды регистра PORTD порта D уровни “логической единицы” (погасить все светодиоды кроме нулевого), а затем выполняя циклическое перемещение нулевого уровня по линиям порта D. Данные действия необходимо разметить в обработчике прерывания TIM1_OVF по переполнению от таймера – счетчика Т1.

Частота изменения значений в счетном регистре TCNT1 таймера – счетчика Т1 равна 43 КГц (см. таблицу 4.6):

fр1 = CLK/256 = 11 Мгц/256 = 43 КГц

Соответственно значение, заносимое в регистр TCCR1B, равняется 4.

Период изменения значений в счетном регистре TCNT1:

Тр1=1/ fр1=23 мкс.

Соответственно длительность одного полного цикла счета таймера Т1 равна:

t1=23 мкс · 65536 ≈1,5 с.

Таким образом, с интервалом 1,5 с будет осуществляться циклическое перемещение зажженного светодиода (согласно алгоритму, приведенному на рисунке 4.7).

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

#include <mega128.h> Подключить заголовочный файл mega128.h;

unsigned char ld_stat=0xFE; описание глобальной переменной ld_stat

с присвоением начального значения 0xfe;

interrupt [TIM1_OVF] void timer1_overflow(void) процедура обработки

{ прерывания по переполнению от таймера–счетчика Т1;

led_stat<<=1; выполнить логический сдвиг на 1 разряд значения в ld_stat;

ld_stat|=1; выполнить операцию логического ИЛИ над младшим битом

переменной ld_stat;

if (ld_stat==0xFF) ld_stat=0xFE; при переносе нулевого значения из 7-го бита (за пределы левой границы блока светодиодов) загрузить в переменную ld_stat начальное значение 0xFE;

PORTD=ld_stat; вывести значение led_status в PORTD для индикации;

} завершение процедуры обработки прерывания;

main() { основная часть программы;

DDRD=0xFF; настроить порт D на вывод данных;

PORTD=0xFF; погасить все светодиоды;

TCCR1A=0; задание режимов работы для таймера-счетчика Т1;

TCCR1B=4; задание частоты работы для таймера-счетчика Т1;

TIMSK=4; разрешить прерывание TIM1_OVF по переполнению

16 разрядного таймера/счетчика Т1;

#asm("sei"); установить бит I общего разрешения прерываний;

while (1) { } установить цикл с бесконечным числом итераций;

} завершающая операторная скобка программы.

Рисунок 4.7 – Алгоритм программы управления блоком светодиодов

в режиме “бегущий огонь”.

Таблица 4.7 – Варианты индивидуальных заданий

№ п.п.

Задание

1

Разработать программу, выполняющую в бесконечном цикле включение/выключение 1–го светодиода: управляющее прерывание TIM1_OVF, частота счета fр1 = 43 КГц.

2

Разработать программу, выполняющую в бесконечном цикле включение/выключение 2–го светодиода: управляющее прерывание TIM0_OVF, частота счета fр1 = 11,7 КГц.

3

Разработать программу, выполняющую в бесконечном цикле включение/выключение 3–го светодиода: управляющее прерывание TIM1_COMPA, fр1 = 43 КГц, OCR1A=40000.

4

Разработать программу, выполняющую в бесконечном цикле включение/выключение 0–го и 7–го светодиодов: управляющее прерывание TIM1_COMPВ, fр1 = 43 КГц, OCR1В=50000.

5

Разработать программу, выполняющую в бесконечном цикле включение/выключение 4–го и 5–го светодиодов: управляющее прерывание TIM1_COMPB, fр1 = 43 КГц, OCR1B=30000.

6

Разработать программу, выполняющую в бесконечном цикле включение/выключение 3–го и 6–го светодиодов: управляющее прерывание TIM0_OVF, частота счета fр1 = 11 КГц, OCR0=200.

7

Разработать программу, выполняющую в бесконечном цикле включение/выключение 2–го светодиода: управляющее прерывание TIM1_COMPA, fр1 = 11 КГц, OCR1A=10000.

8

Разработать программу, выполняющую в бесконечном цикле включение/выключение 3–го и 6–го светодиодов: управляющее прерывание TIM1_OVF, частота счета fр1 = 86 КГц.

9

Разработать программу, выполняющую в бесконечном цикле включение/выключение 1–го и 2–го светодиодов: управляющее прерывание TIM1_OVF, частота счета fр1 = 11 КГц.

10

Разработать программу, выполняющую в бесконечном цикле включение/выключение 0–го и 5–го светодиодов: управляющее прерывание TIM1_COMPВ, fр1 = 43 КГц, OCR1В=30000.

* задания повышенной сложности.

    1. Содержание отчета

В отчете необходимо привести следующее:

характеристики лабораторной вычислительной системы;

исходный модуль разработанной программы;

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

    1. Контрольные вопросы и задания

  1. B чем преимущества обмена по прерываниям по сравнению с другими известными вам способами обмена информацией ?

  2. Что включает в себя понятия системы прерываний ?

  3. Поясните понятия вектора прерываний и таблицы векторов прерываний.

  4. Какие действия выполняет микроконтроллер при переходе на процедуру обработки прерывания ?

  5. Поясните принципы формирования временных интервалов с помощью 8–разрядного таймера–счетчика.

  6. Поясните принципы формирования временных интервалов с помощью 16–разрядного таймера–счетчика.