- •Содержание
- •Введение
- •1 Изучение системы команд и основных принципов программирования микроконтроллеров на примере управления блоком светодиодов
- •1.1 Указания по организации самостоятельной работы
- •1.1.2. Программная модель микроконтроллера avr mega128. Механизм работы с регистрами, памятью и портами ввода/вывода.
- •1.1.3 Система команд микроконтроллера avr mega128.
- •1.1.4. Синтаксис и основные операторы языка с.
- •1.1.5. Принципы программного управления светодиодами, подключенными к внешним выводам портов ввода/вывода микроконтроллера avr atmega128.
- •1.2 Описание лабораторной установки
- •1.2.1. Описание лабораторного макета.
- •Микроконтроллера avr atmega 128
- •1.2.2. Описание блока светодиодов лабораторного макета.
- •1.2.3. Описание интерфейса компилятора языка с CodeVision avr.
- •1.3 Порядок проведения работы и указания по ее выполнению
- •1.5 Контрольные вопросы и задания
- •2 Изучение режима программного опроса клавиатуры
- •2.1 Указания по организации самостоятельной работы
- •2.1.1. Принципы анализа нажатия стандартных кнопок с помощью микроконтроллера avr mega128.
- •2.1.2. Принципы считывания данных с матричной клавиатуры с помощью микроконтроллера avr атmega128 в режиме программного опроса.
- •2.2 Описание лабораторной установки
- •2.3 Порядок проведения работы и указания по ее выполнению.
- •3 Изучение принципов программного управления внешними устройствами на примере вывода информации на цифровой индикатор
- •3.1 Указания по организации самостоятельной работы
- •3.2 Описание лабораторной установки
- •3.3 Порядок проведения работы и указания по ее выполнению
- •3.4 Содержание отчета
- •4 Изучение принципов обработки прерываний
- •4.1.2. Принципы функционирования аппаратных таймеров-счетчиков, входящих в состав микроконтроллера avr атmega 128.
- •Interrupt [tim1_ovf] void timer1_overflow (void).
- •Interrupt [tim1_compa] void timer1_compareА (void);
- •Interrupt [tim1_compв] void timer1_compareВ (void);
- •Interrupt [tim1_compс] void timer1_compareС (void).
- •4.2 Описание лабораторной установки
- •5 Изучение принципов организации обмена данными по последовательному интерфейсу rs-232c между микроконтроллером avr атmega128 и пэвм
- •5.1.1. Принципы обмена данными по последовательному интерфейсу rs-232c.
- •5.2 Описание лабораторной установки
- •5.3 Порядок проведения работы и указания по ее выполнению
- •6 Изучение принципов работы со встроенным в микроконтроллер аналого-цифровым преобразователем на примере измерения температуры с помощью аналогового термодатчика.
- •6.1 Указания по организации самостоятельной работы
- •6.2 Описание лабораторной установки
- •6.3 Порядок проведения работы и указания по ее выполнению
- •6.4 Содержание отчета
- •6.5 Контрольные вопросы и задания
- •Рекомендуемая литература
- •Приложение 1 расположение выводов микроконтроллера avr атmega 128
- •Приложение 2 инструкции процессоров avr
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.
Порядок проведения работы и указания по ее выполнению
Перед началом выполнения практической части лабораторной работы проводится экспресс–контроль знаний по принципам функционирования таймеров/счетчиков, входящих в состав микроконтроллера AVR ATMEGA 128, а также по способам задания и измерения временных интервалов. При подготовке к лабораторной работе необходимо составить предварительный вариант листинга программы, в соответствие с индивидуальным заданием (см. таблицу 4.7).
Задание. Разработать в среде программирования Code Vision AVR программу на языке С для микроконтроллера AVR ATMEGA 128, управляющую блоком из 8-ми светодиодов. Временные параметры индикации задаются с помощью установок таймеров – счетчиков Т1 или Т0. Варианты индивидуальных заданий представлены в таблице 4.7.
Порядок выполнения задания:
Включить лабораторный макет (установить выключатель электропитания в положение I, и убедиться в свечении индикатора электропитания красным цветом).
Запустить компилятор Code Vision AVR.
Создать пустой проект.
Создать файл ресурса для кода программы и подключить его к проекту.
Ввести код исходного модуля программы управления блоком светодиодов в соответствие с вариантом задания, указанном в таблице 4.7.
Выполнить компиляцию (нажав клавишу F9) исходного модуля программы и устранить ошибки, полученные на данном этапе.
Настроить параметры программатора.
Создать загрузочный модуль программы (нажав комбинацию клавиш Shift+F9) и выполнить программирование микроконтроллера.
Проверить работоспособность загруженной в микроконтроллер программы и показать результаты работы преподавателю.
В случае некорректной работы разработанной программы, выполнить аппаратный сброс микроконтроллера, провести отладку исходного модуля программы и заново проверить функционирование программы, повторив выполнение пункта 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.
* задания повышенной сложности.
Содержание отчета
В отчете необходимо привести следующее:
характеристики лабораторной вычислительной системы;
исходный модуль разработанной программы;
анализ полученных результатов и краткие выводы по работе, в которых необходимо отразить особенности использования встроенных таймеров микроконтроллера для формирования аппаратно-независимых временных интервалов.
Контрольные вопросы и задания
B чем преимущества обмена по прерываниям по сравнению с другими известными вам способами обмена информацией ?
Что включает в себя понятия системы прерываний ?
Поясните понятия вектора прерываний и таблицы векторов прерываний.
Какие действия выполняет микроконтроллер при переходе на процедуру обработки прерывания ?
Поясните принципы формирования временных интервалов с помощью 8–разрядного таймера–счетчика.
Поясните принципы формирования временных интервалов с помощью 16–разрядного таймера–счетчика.