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

Предоплата всего

Подписываем
Если у вас возникли сложности с курсовой, контрольной, дипломной, рефератом, отчетом по практике, научно-исследовательской и любой другой работой - мы готовы помочь.
Предоплата всего
Подписываем
МЕТОДИЧЕСКОЕ ПОСОБИЕ
к выполнению лабораторных работ по курсу
«МИКРОПРОЦЕССОРНЫЕ
СРЕДСТВА И СИСТЕМЫ»
МИКРОПРОЦЕССОРНЫЕ
СРЕДСТВА И СИСТЕМЫ»
Одобрено
учебно-методической комиссией филиала ЮУрГУ в г. Златоусте
Т19 |
Микроконтроллеры: учебное пособие к выполнению лабораторных работ / П.А. Торопыгин, И.Н. Таранов, О.В. Терентьев. Челябинск: Изд-во ЮУрГУ, 2007. 59 с. |
Издательство ЮУрГУ, 2007
Лабораторный модуль (в дальнейшем изложении модуль) предназначен для обучения студентов различных специальностей, изучающих дисциплины по программированию интегральных микроконтроллеров (однокристальных микроЭВМ).
Комплекс предназначен для изучения программирования микроконтроллеров AVR семейства Mega, выпускаемых фирмой Atmel.
Комплекс включает в себя следующие изделия и блоки:
ПЭВМ (системный блок, монитор, клавиатура, мышь);
модуль связи с ПК;
лабораторный модуль «Микроконтроллеры»;
кабель соединительный «Модуль связи с ПК ПЭВМ (COM-port)».
1.2. Технические данные лабораторного модуля
Масса изделия, кг ………………………………………..…………...не более 1,5
Габаритные размеры изделия, мм…..………………..……не более 255×205×60
Максимальная электрическая мощность, потребляемая комплексом, Вт……………………………………………………………...не более 15
Напряжение питания комплекса, В..………………..…….…………………...220
Частота напряжения питания, Гц……………………..….………………..…....50
Тип программируемых микроконтроллеров АTmega8 фирмы Atmel.
Технические характеристики микроконтроллеров AVR представлены в табл. 1.1, в которой приведены данные и для микроконтроллера АTmega8 [3].
Технические характеристики микроконтроллеров семейства AVR
Тип прибора |
Память программ (FLASH) [Кбайт] |
Память данных (EEPROM) [байт] |
Память данных (ОЗУ) [байт] |
Кол-во линий ввода/ вывода |
Напряжение питания [В] |
Тактовая частота [МГц] |
Тип корпуса |
ATmega8 |
8 |
512 |
1К |
23 |
4,5…5,5 |
0..16 |
DIP-28 TQFP-32 MLF-32 |
ATmega8L |
2,7…5,5 |
0…8 |
|||||
ATmega8515 |
8 |
512 |
512 |
35 |
4,5…5,5 |
0…16 |
DIP-40 TQFP-44 PLCC-44 MLF-44 |
ATmega8515L |
2,7…5,5 |
0…8 |
Окончание табл. 1.1.
Тип прибора |
Память программ (FLASH) [Кбайт] |
Память данных (EEPROM) [байт] |
Память данных (ОЗУ) [байт] |
Кол-во линий ввода/ вывода |
Напряжение питания [В] |
Тактовая частота [МГц] |
Тип корпуса |
ATmega16 |
16 |
512 |
1К |
32 |
4,5…5,5 |
0…16 |
DIP-40 TQFP-44 |
ATmega16L |
2,7…5,5 |
0…8 |
|||||
ATmega161 |
16 |
512 |
1K |
35 |
4,0…5,5 |
0…8 |
DIP-40 TQFP-44 |
ATmega161L |
2,7…5,5 |
0…4 |
|||||
ATmega162 |
16 |
512 |
1K |
35 |
4,5…5,5 |
0…16 |
DIP-40 TQFP-44 MLF-44 |
ATmega162L |
2,7…5,5 |
0…8 |
|||||
ATmega162V |
1,8…3,6 |
0…1 |
|||||
ATmega163 |
16 |
512 |
1K |
32 |
4,0…5,5 |
0…8 |
DIP-40 TQFP-44 |
ATmega163L |
2,7…5,5 |
0…4 |
|||||
ATmega323 |
32 |
1K |
2K |
32 |
4,0…5,5 |
0…8 |
DIP-40 TQFP-44 |
ATmega323L |
2,7…5,5 |
0…4 |
|||||
ATmega32 |
32 |
1K |
2K |
32 |
4,5…5,5 |
0…16 |
DIP-40 TQFP-44 MLF-44 |
ATmega32L |
2,7…5,5 |
0…8 |
|||||
ATmega64 |
64 |
2K |
4K |
53 |
4,5…5,5 |
0…16 |
TQFP-64 |
ATmega64L |
2,7…5,5 |
0…8 |
|||||
ATmega128 |
128 |
4K |
4K |
53 |
4,5…5,5 |
0…16 |
TQFP-64 |
ATmega128L |
2,7…5,5 |
0…8 |
1.3. Структура комплекса и общие принципы работы
Структура комплекса с указанием связей между составляющими комплекса представлена на рис. 1.1. По этому рисунку может осуществляться сборка рабочего места перед проведением лабораторных работ.
Основой рабочего места является ПЭВМ, включающая в свой состав системный блок, монитор, мышь и клавиатуру. Все подключения к ПЭВМ осуществляются через ее штатные разъемы.
В качестве ПЭВМ может быть использован любой компьютер, начиная от 486-го и до самых современных компьютеров, совместимых с архитектурой IBM PC.
Системный блок ПЭВМ, в несетевом варианте работы комплекса, должен включать в себя:
Лабораторный модуль представляет собой программно-аппаратный комплекс и может работать на всех IBM-совместимых компьютерах. Программная часть комплекса работает под управлением «Windows».
Лабораторный модуль подключается к компьютеру через последовательный COM-порт.
Питается лабораторный комплекс от сети 220 В, 50 Гц, подключается к сети посредством евровилки (с заземлением), потребляемая мощность не более 15 Вт.
Микроконтроллер ATmega8 оснащен внутрисистемной программируемой Flash памятью емкостью 8 Кбайт и 512 байтами EEPROM памяти данных. В данном лабораторном модуле предусматривается использование программирования Flash памяти в режиме низковольтного программирования. Этот режим является обычным способом загрузки программы и данных в микроконтроллер, находящийся непосредственно в системе пользователя. Число перепрограммирований Flash памяти 1000, а EEPROM 100 000.
Внешний вид лабораторных модулей представлен на рис. 1.2 1.5.
Рис. 1.2. Внешний вид лабораторного модуля «Микроконтроллеры»: 1 блок семисегментных индикаторов с дешифратором; 2 порты ввода/вывода; 3 пъезоизлучатель; 4 сопряжение по протоколу UART; 5 блок семисегментных индикаторов для изучения динамической индикации; 6 выводы семисегментного индикатора; 7 блок формирования аналогового сигнала (реализация ЦАП)
Рис. 1.3. Внешний вид лабораторного модуля «Задание сигналов и логические элементы»: 1 блок задания логических сигналов; 2 блок задания сигналов без дребезга; 3 логические элементы; 4 светодиодная индикация; 5 коннекторы
Рис. 1.4. Внешний вид лабораторного модуля «Модуль питания и измерений»: 1 семисегментные индикаторы вывода результата измерения тока и напряжения; 2 децимальная точка вывода старшего разряда; 3 гнезда для включения измерительного прибора в цепь исследуемой схемы; 4 регуляторы напряжений; 5 светодиод, индицирующий наличие напряжения питания; 6 тумблер включения питания лабораторного комплекса
Функционально лабораторный модуль «Микроконтроллеры» состоит из трёх частей: платы контроллера, платы индикации и платы сопряжения с ПК (платы программатора). Упрощенная схема электрическая принципиальная модуля представлена в прил. А.
В верхней части лабораторного модуля приведено расположение выводов микроконтроллера ATmega8. В скобках дано функциональное назначение отдельных выводов микроконтроллера (в частности: предназначенных для программирования SCK, MISO, MOSI; для ввода аналоговых сигналов ADC0…ADC5; для последовательного приема и передачи данных RXD, TXD).
Блоки семисегментных индикаторов HL1, HL2, HL3, HL4 (см. прил. А), расположенных слева и справа от изображения микроконтроллера, предназначены для вывода цифровой информации с микроконтроллера. Для уменьшения числа занятых выводов, в одном из блоков используются семисегментные дешифраторы двоичного кода DD2 и DD3, четырехразрядные входы которых соединены с портами микроконтроллера PB2…PB5, PC2…PC5.
С помощью регуляторов напряжений и вольтметра, расположенных в модуле «Модуль питания и измерений», осуществляется плавное регулирование выходного напряжения в диапазоне 0…5 В. Контроль напряжения осуществляется с помощью вольтметра, на вход которого подается измеряемая величина. Выходы блока задания напряжения можно соединить со входами аналоговых сигналов ADC0…ADC5 или компаратора AIN0 и AIN1, выведенных на лицевую панель лабораторного модуля.
Рис. 1.5. Внешний вид лабораторного модуля «Функциональный генератор»: 1 семисегментные индикаторы; 2 кнопки для выбора необходимого диапазона частот; 3 кнопка выбора режима работы встроенного частотомера; 4 регулятор скважности; 5 тумблер включения режима изменения скважности или несимметрии сигнала; 6 гнездо для подачи входного сигнала; 7 регулятор плавной установки частоты; 8 гнездо выхода основного сигнала; 9 тумблер включения питания; 10 регулятор амплитуды выходного сигнала; 11 регулятор смещения выходного сигнала постоянным напряжением; 12 тумблер переключения полярности смещения выходного сигнала; 13 кнопки выбора необходимой формы выходного сигнала; 14 индикатор размерности частоты/периода сигнала; 15 индикатор «Период» режима работы частотомера; 16 кнопка переключения режима измерения частоты или периода; 17 индикатор «Частота»
Блок пьезоизлучателя предназначен для вывода звуковых частот, для чего на его вход можно подавать прямоугольное напряжение заданной частоты.
Светодиоды для индикации логических уровней, расположенные на модуле «Задания сигналов и логические элементы», могут быть соединены или с выводом микроконтроллера, или с блоком задания логических уровней и сигналов.
Для задания логического сигнала (логического нуля или логической единицы) предназначены тумблеры SA1SA10. С помощью кнопок SB3 и SB4 осуществляется подача перехода логического сигнала из 1 в 0 ( ), а с помощью кнопок SB1 и SB2 из 0 в 1 ( ).
При помощи модуля «Функциональный генератор» осуществляется подача последовательности импульсов с заданными частотами. При помощи регулятора «Частота» возможно плавное регулирование частоты импульсов от 0 Гц до 1 МГц.
Коммутирование осуществляются при помощи набора соединительных проводников, входящих в комплект лабораторного комплекса.
На задней стороне модуля расположен разъем для подключения к COM-порту ПК. На передней панели модуля «Микроконтроллеры» расположен разъем с выводами микроконтроллера RxD и TxD, предназначенных для обмена и сбора информации микроконтроллером и внешним устройством или управления внешним устройством по протоколу UART.
2. ПОРЯДОК ВЫПОЛНЕНИЯ ЛАБОРАТОРНЫХ РАБОТ
а) подготовку исходного текста программы;
б) компиляцию программы (получение объектного кода);
в) отладку программы.
Изменение текста программы в ассемблере AVR Studio (прил. Б) в соответствии со своим заданием.
Обычно эти этапы циклически повторяются, потому что при нахождении ошибок при компиляции или при отладке приходится вновь возвращаться к первому этапу и изменять текст программы для устранения ошибок.
а) результаты экспериментов в виде таблиц и записей занесены в черновик, представлены преподавателю и утверждены им;
б) отключенная цепь после разрешения преподавателя полностью разобрана;
в) рабочее место приведено в порядок.
3. ТЕХНИКА БЕЗОПАСНОСТИ ПРИ ВЫПОЛНЕНИИ ЛАБОРАТОРНЫХ РАБОТ
При выполнении лабораторных работ, питание которых осуществляется от сети с напряжением 220 В, на металлических корпусах приборов может, при нарушении изоляции, возникнуть опасное для жизни человека напряжение. В связи с этим студентам не разрешается самостоятельно вскрывать корпуса блоков питания, стендов и производить электромонтажные присоединения в приборах.
При выполнении лабораторных работ студентам запрещается:
курить, осуществлять приём пищи и напитков в лаборатории;
производить какие-либо работы с лабораторным стендом, не имея допуска на выполнение данной лабораторной работы;
производить работы в лаборатории, не связанные непосредственно с лабораторной работой;
самостоятельно подключать силовое питание лабораторных стендов;
подавать питание на собранную схему без проверки правильности соединений преподавателем или техническим персоналом;
использовать для выполнения лабораторной работы оборудование, не входящее в комплект стенда, без соответствующих указаний преподавателя или технического персонала;
приводить в негодное состояние как отдельные комплектующие лабораторного стенда, так и весь стенд в целом;
подавать на стенд сигналы, не предусмотренные данной лабораторной работой;
производить какие-либо переключения на стенде при включенном питании;
уходить из лаборатории по окончании лабораторной работы, не отчитавшись о комплектности стенда и его исправности преподавателю или техническому персоналу.
При выполнении лабораторной работы необходимо провести следующие подготовительные мероприятия и придерживаться следующих правил:
ознакомиться с рабочим местом, проверить наличие необходимых приборов и соединительных проводов (в случае отсутствия какого-либо комплектующего элемента лабораторного стенда необходимо немедленно сообщить об этом преподавателю или техническому персоналу);
если во время проведения опыта замечены какие-либо неисправности оборудования, необходимо немедленно сообщить об этом преподавателю или техническому персоналу;
разборка схемы допускается только после проверки преподавателем результатов измерений. Перед разборкой схемы необходимо выключить источники питания.
4. Лабораторные работы
4.1. Лабораторная работа № 1
изучение принципов работы функций ввода/вывода МК
Цель работы: научиться использовать программные средства, представленные в работе, для осуществления процедур ввода/вывода.
Для создания программы используется программный пакет AVR Studio. Программа позволяет осуществлять ввод двоичного числа в микроконтроллер с ключей SA1SA4 и вывод этого числа на цифровую индикацию и светодиоды.
Таблица 4.1
Таблица используемых выводов микроконтроллера
Выводы контроллера |
Направление передачи |
Назначение вывода |
PD3 PD6 |
Ввод |
Двоичный код числа, заносимый в микроконтроллер |
PC0, PC1, PB0, PB1 |
Вывод |
Вывод числа на светодиодную индикацию |
PB2 |
Вывод |
Вывод числа на цифровую индикацию |
Схема электрическая принципиальная и алгоритм программы, реализующей данную процедуру, представлены на рис. 4.1 и рис. 4.2 соответственно.
Выводы микроконтроллера, используемые в программе, представлены в табл. 4.1.
Рис. 4.1. Схема электрическая принципиальная лабораторной работы
Рис. 4.2. Алгоритм процедуры ввода/вывода
Текст программы, реализующей процедуры ввода/вывода
.include "m8def.inc"
.org 0x00 ;начальный адрес программы
start:
cli
ldi r19,high(RAMEND) ;инициализация указателя стека
out SPH,r19
ldi r19,low(RAMEND) ;инициализация указателя стека
out SPL,r19
clr r16
out $11,r16 ;настройка на ввод битов порта D
ldi r16,0b11
out $14,r16
ldi r16,0b111111 ;настройка на вывод битов порта С
out $17,r16 ;настройка на вывод битов порта B
loop: ;подпрограмма
in r0,$10 ;считать с порта D в регистр r0
ldi r25,0b1111000
and r0,r25
lsr r0 ;сдвиг вправо в регистре r0
mov r20,r0 ;копирование регистра r0 в r20
lsr r20
lsr r20 ;два сдвига вправо в регистре r20
mov r21,r20 ;копирование регистра r20 в r21
andi r21,0b0011 ;оставляяет в регистре r21 значения двух младших разрядов
out $15,r21 ;выводит значение регистра r21 в порт С
mov r22,r20 ;коприрование регистра r20 в r22
lsr r22
lsr r22 ;два сдвига вправо в регистре r22
andi r22,0b0011 ;оставляет в регистре r21 значения двух младших разрядов
add r22,r0 ;r22=r22+r0
out $18,r22 ;вывод регистра r22 в порт B
rjmp loop
Для запуска программы под управлением микроконтроллера необходимо создать файл с расширением *.hex (см. прилож. Б). При помощи программного пакета PonyProg, программа заносится в память микроконтроллера.
Порядок выполнения лабораторной работы
Таблица 4.2
Таблица вариантов
Варианты |
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
Порт ввода |
PC0, PC1 |
PD2, PD3 |
PD4, PD5 |
PD3, PD4 |
PD5, PD6 |
PD6, PD7 |
PB2, PB3 |
PB1, PB2 |
Порт вывода на цифровую индикацию |
PВ2..5 |
PB2..5 |
PC2..5 |
PC2..5 |
PB2..5 |
PC2..5 |
PC2..5 |
PC2..5 |
Порт вывода на светодиодную индикацию |
PD2, PD3 |
PC0, PC1 |
PB1, PB2 |
PB0, PB1 |
PC0, PC1 |
PB0, PB1 |
PD3, PD4 |
PD6, PD7 |
Контрольные вопросы
Рис. 4.3. Схема соединений лабораторных модулей
4.2. Лабораторная работа № 2 изучение логических операций
Цель работы: научиться использовать программные средства, представленные в лабораторной работе, для создания и отладки программы, выполняющей логические операции [6].
Алгоритм программы, реализующий логическую операцию «И», представлен на рис. 4.4.
Выводы микроконтроллера, используемые в программе, представлены в табл. 4.3.
Таблица 4.3
Таблица используемых выводов микроконтроллера
Выводы контроллера |
Направление передачи |
Назначение вывода |
PB0, PC0 |
Ввод |
Разряды, заносимые в микроконтроллер |
PD2 |
Вывод |
Вывод результата на светодиодную индикацию |
.include " m8def.inc"
.org 0x00 ;начальный адрес программы
rjmp start
start:
cli
ldi r19,high(RAMEND) ;инициализация указателя стека
out SPH,r19
ldi r19,low(RAMEND)
out SPL,r19
clr r16
out ddrb,r16 ;настройка на ввод бита порта B0
out ddrc,r16 ;настройка на ввод бита порта С0
ldi r16,0b100
out ddrd,r16 ;настройка на вывод бита порта D2
loop:
in r0,pinb ;загрузка данных из pinb в регистр r0(X1)
in r20,pinc ;загрузка данных из pinc в регистр r0(X2)
com r20 ;
andi r20,0b1 ;инвертирование
and r0,r20 ;логическое умножение (“И”,конъюнкция)
lsl r0
lsl r0
out portd,r0 ;вывод из регистра r0 в порт D
rjmp loop
Для запуска программы под управлением микроконтроллера необходимо создать файл с расширением *.hex (см. прил. Б). При помощи программного пакета PonyProg, программа заносится в память микроконтроллера.
Порядок выполнения лабораторной работы
Таблица 4.4
Таблица вариантов
Номера портов для ввода/вывода данных брать из таблицы 4.2 (в первой лаб.работе)
Вариант |
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
Функция |
Контрольные вопросы
4.3. Лабораторная работа № 3
изучение арифметических операций
Цель работы: научиться использовать программные средства, представленные в лабораторной работе, для создания и отладки программ, выполняющих арифметические операции [8].
Составить программы, которые реализуют операции:
Программы используют операнды в виде констант и переменных, введенные с ключей.
Операнды и результат выводятся на цифровую индикацию.
Реализация операции суммирования чисел. Программа суммирует числа с учетом бита переноса.
Алгоритм программы, реализующей операцию вычитания, представлен на рис. 4.5.
Выводы микроконтроллера, используемые в программе, представлены в табл. 4.5.
Таблица 4.5
Таблица используемых выводов микроконтроллера
Выводы контроллера |
Направление передачи |
Назначение вывода |
PD4, PD5; PD6, PD7 |
Ввод |
Двоичный код двухбитных чисел, заносимый в микроконтроллер |
PB1 |
Вывод |
Вывод знака на цифровую индикацию |
PB2…PB5 |
Вывод |
Вывод числа на цифровую индикацию |
Текст программы, реализующей операцию вычитания
.include " m8def.inc"
.org $000
;функция X1-X2
;ввод PD4, PD5 вычитаемое; PD6, PD7 уменьшаемое
;вывод знака на светодиодную индикацию PB1
;вывод числа на цифровую индикацию PB.
ldi r16,0b100
out ddrd, r16
out portd, r16
ldi r16,0b111110
out ddrb, r16
m00:
ldi r16, 0b0
ldi r17, 0b0
ldi r18, 0b0
ldi r19, 0b0
in r16, pind
andi r16, 0b11110000
mov r17, r16
lsr r16
lsr r16
andi r16, 0b110000 ;уменьшаемое
andi r17, 0b110000 ;вычитаемое
cp r16, r17
brge m01
mov r18, r17
mov r17, r16
mov r16, r18
ldi r19, 0b10
m01:
com r17
andi r17, 0b1110000
ldi r18, 0b10000
add r17, r18
andi r17, 0b1110000
add r16, r17
andi r16, 0b1110000
lsr r16
lsr r16
andi r16, 0b1100
or r16, r19
out portb, r16
rjmp m00
Для запуска программы под управлением микроконтроллера необходимо создать файл с расширением *.hex (см. прил. Б). При помощи программного пакета PonyProg программа заносится в память микроконтроллера.
Порядок выполнения лабораторной работы
Таблица 4.6
Таблица вариантов
Вв Вариант |
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
Функция |
X1·X2 |
X1X2 |
2·X2 |
X1 1 |
X1·X1 |
X1+X2 |
X1+ X1 |
X1·3 |
Вводы контроллера |
D2,D3 D4,D5 |
D3,D4 D5,D6 |
D4,D5 |
D2,D3 |
D6,D7 |
D6,D7 D2,D3 |
D5,D6 |
D5,D6 |
Выводы контроллера |
C2..C5 |
B2..B5 |
B2..B5 |
C2..C5 |
C2..C5 |
B2..B5 |
C2..C5 |
B2..B5 |
Контрольные вопросы
4.4. Лабораторная работа № 4 изучение работы с памятью данных
Цель работы: научиться использовать программные средства, представленные в лабораторной работе, для создания и отладки программ, выполняющих операции с памятью данных.
Составить программу, которая осуществляет последовательную запись и вывод пяти трехбитных чисел. Программа использует переменные, введенные с ключей, и выводит их на цифровую индикацию. Ввод осуществить через выводы PD4…PD6, ввод сигнала внешнего прерывания PD3 (INT1), а вывод через PB2…PB5 (табл. 4.7).
Схема электрическая принципиальная и алгоритм программы, реализующей данную процедуру, представлен на рис. 4.64.8 соответственно.
Для запуска программы под управлением микроконтроллера необходимо создать файл с расширением *.hex (см. прилож. Б). При помощи программного пакета PonyProg программа заносится в память микроконтроллера.
Таблица 4.7
Таблица используемых выводов микроконтроллера
Выводы контроллера |
Направление передачи |
Назначение вывода |
PD4…PD6 |
Ввод |
Двоичный код числа, заносимый в микроконтроллер |
PD3 |
Ввод |
Тактовый сигнал |
PB2…PB5 |
Вывод |
Вывод числа на цифровую индикацию |
Рис. 4.6. Схема электрическая принципиальная
а) б)
Рис.4.7. Алгоритмы программы, выполняющей операции с памятью данных: а) подпрограммы ввода;
б) подпрограммы вывода
а) б)
Рис. 4.8. Алгоритмы программы, выполняющей операции с памятью данных:
а программы; б внешнего прерывания
.include "m8def "
.org 0x00
rjmp start
.org 0x002
rjmp prer
start:
cli
ldi r19,low(RAMEND)
out SPL,r19
ldi r20,0b111100
out DDRB,r20
ldi r20,0b000000
out DDRD,r20
ldi r21,0b1100
out mcucr,r21
ldi r21,0b10000000
out gimsk,r21
ldi r20,0b0
sei
main:
nop
rjmp main
prer:
sbis pind,3
reti
inc r20
cpi r20,0b1011
brne loop11
ldi r20,0b1
ldi r21,0b0
rcall podpr2
loop11:
cpi r20,0b1
brne loop1
rcall podpr
mov r23,r21
reti
loop1:
cpi r20,0b10
brne loop2
rcall podpr
mov r24,r21
reti
loop2:
cpi r20,0b11
brne loop3
rcall podpr
mov r25,r21
reti
loop3:
cpi r20,0b100
brne loop4
rcall podpr
mov r26,r21
reti
loop4:
cpi r20,0b101
brne loop5
rcall podpr
mov r27,r21
reti
loop5:
cpi r20,0b110
brne loop6
mov r21,r23
rcall podpr2
reti
loop6:
cpi r20,0b111
brne loop7
mov r21,r24
rcall podpr2
reti
loop7:
cpi r20,0b1000
brne loop8
mov r21,r25
rcall podpr2
reti
loop8:
cpi r20,0b1001
brne loop9
mov r21,r26
rcall podpr2
reti
loop9:
cpi r20,0b1010
brne loop10
mov r21,r27
rcall podpr2
loop10:
reti
podpr:
in r21,PIND
andi r21,0b1110000
lsr r21
lsr r21
lsr r21
lsr r21
ret
podpr2:
lsl r21
lsl r21
out PORTB,r21
ret
Таблица 4.8
Таблица вариантов
Вариант |
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
Константы |
02 |
13 |
24 |
35 |
46 |
57 |
68 |
0, 5, 8 |
Контрольные вопросы
4.5. Лабораторная работа № 5 изучение режимов работы таймера-счетчика
Цель работы: изучить приёмы создания программ, которые позволяют использовать основные режимы работы таймера-счётчика.
Составить программы для следующих функций таймера-счётчика:
1) счётчик событий. Выбор режима, пуск, остановка вручную, от ключей;
2) таймер, выполнение операции через заданный промежуток времени. Источником тактового сигнала могут служить тактовые импульсы контролера, а также внешние импульсы, переданные на входы Т0, T1;
3) генерация сигнала с широтно-импульсной модуляцией.
Ниже представлен пример работы таймера-счетчика в режиме счетчика внешних событий.
Выводы микроконтроллера, используемые в программе, представлены в табл. 4.9.
Таблица 4.9
Таблица используемых выводов микроконтроллера
Выводы контроллера |
Направление передачи |
Назначение вывода |
PB4 |
Ввод |
Ввод тактового сигнала |
PB2…PB5 |
Вывод |
Вывод числа на светодиодную индикацию |
Алгоритм программы представлен на рис. 4.9.
.include " m8def.inc"
.org 0x00
rjmp start
start:
cli
ldi r19,low(RAMEND)
out SPL,r19
ldi r20,0b111100
out DDRB,r20
ldi r20,0b00
out TIMSK,r21
ldi r21,0b10
out TIFR,r21
ldi r21,0b111
out TCCR0,r21
sli
main:
nop
in r20,TCNT0
lsl r20
lsl r20
out PORTB,r20
rjmp main
Порядок выполнения работы
1. Изучить материалы лабораторной работы, представленные выше.
Таблица 4.10
Таблица вариантов
Вариант |
1 |
2 |
3 |
4 |
Задание |
Таймер с выдержкой 5 с (по истечении инвертировать сигнал на светодиоде) |
Реализовать “секундомер” со счётом до 9 |
Счётчик внешних событий (задаём сигнал с кнопки, выводим на динамическую индикацию) |
Реализация ЦАП используя режим ШИМ |
Контрольные вопросы к лабораторной работе №5
4.6. Лабораторная работа № 6 изучение работы компаратора
Цель работы: изучить приёмы создания программ с использованием компаратора, входящего в состав микроконтроллера.
Составить программу, реализующую режим работы компаратора. Результат сравнения представить в цифровом виде [4].
Выводы микроконтроллера, используемые в программе, представлены в табл. 4.11.
Таблица 4.11
Таблица используемых выводов микроконтроллера
Выводы контроллера |
Направление передачи |
Назначение вывода |
PC1 |
Вывод |
Выход |
PD6, PD7 |
Ввод |
Входы компаратора |
Входами аналогового компаратора являются выводы порта PD6, PD7. Для их использования необходимо сконфигурировать порт на ввод и отключить подтягивающие резисторы. Для этого следует записать единицы в 7 и 6 разряд регистра порта DDRx, а также необходимо записать нули в 7 и 6 разряд регистра порта PORTx. После этого настроить сам компаратор. Для этого необходимо заполнить разряды его регистра управления, в соответствии с табл. 4.12.
Алгоритм программы представлен на рис. 4.10.
Таблица 4.12
Регистр ACSR
Разряд |
Название |
Описание |
7 |
ACD |
Включение компаратора (0 включён, 1 выключен) |
6 |
AINBG |
Подключение к неинвертирующему входу внутреннего ИОН (0 не подключён, 1 подключён) |
5 |
ACO |
Результат сравнения (выход компаратора) |
4 |
ACI |
Флаг прерывания от компаратора |
3 |
ACIE |
Разрешение прерывания от компаратора |
2 |
ACIC |
Подключение компаратора к схеме захвата таймера счётчика Т1 (1 подключён, 0 не подключён) |
1, 0 |
ACIS1; ACIS0 |
Условие возникновения прерывания от компаратора |
Рис. 4.10. Алгоритм
программы сравнения
напряжений
Текст программы сравнения аналогового уровня напряжения с заданным уровнем
;подключение файла настроек
.include «m8def.inc»
;описание констант
.EQU Chislo=0b00000000 ;присвоение имени выражению
.EQU Chislo1=0b00000000
.EQU Chislo2=0b00000000
;ввод первый вектор прерывания
.org 0x00 ;начальный адрес программы
rjmp start
start:cli
ldi r16,0b11111111
out $14,r16 ;настройка на вывод бита порта С1
ldi r16,Chislo
out $11,r16
ldi r16,Chislo1
out $12,r16 ;вывод в порт D содержание регистра r16
ldi r16,Chislo2
out $08,r16
loop: ;подпрограмма
nop ;пустой цикл
nop
nop
nop
nop
in r0,$08 ;загрузка данных из $08 в регистр r0
lsr r0 ;сдвиг вправо на 1 бит r0
lsr r0
lsr r0
lsr r0
out $15,r0
rjmp loop ;возврат на подпрограмму loop
rjmp start
Изучить материалы лабораторной работы, представленные выше.
Составить алгоритм и программу, позволяющую осуществить преобразование аналогового уровня сигнала в цифровой при помощи компаратора с использованием прерывания в соответствии с вариантом (табл. 4.13), разработать схему электрическую принципиальную в соответствии с заданием.
Таблица 4.13
Таблица вариантов
Параметры |
Вариант |
||
1 |
2 |
3 |
|
Величина аналогового уровня напряжения (В) |
1,0 |
2,0 |
3,0 |
Условие генерации запроса на прерывание от компаратора |
Изменение состояния выхода компаратора с «1» на «0» |
Изменение состояния выхода компаратора с «0» на «1» |
Любое изменение состояния выхода компаратора |
Контрольные вопросы
4.7. Лабораторная работа № 7 изучение работы АЦП
Цель работы: изучить приёмы создания программ, позволяющих использовать аналого-цифровой преобразователь (АЦП), для оцифровки аналогового сигнала [4].
Составить программу вывода кода числа, соответствующего уровню напряжения, действующего на входе АЦП [8].
АЦП микроконтроллера имеет следующие регистры: регистр данных АЦП образован двумя регистрами; ADCH (по адресу $05); ADCL (по адресу $04); регистр управления и состояния АЦП ADCSR (по адресу $06), формат которого представлен в табл. 4.14, регистр управления мультиплексором ADMUX (07).
Таблица 4.14
Формат регистра ADCSR
Разряд |
Название |
Описание |
7 |
ADEN |
Разрешение АЦП (1 включено, 0 выключено) |
6 |
ADSR |
Запуск преобразования (1 начать преобразование) |
5 |
ADFR |
Выбор режима работы АЦП (0 одиночное преобразование) |
4 |
ADIF |
Флаг прерывания от компаратора |
3 |
ADIE |
Разрешение прерывания от компаратора |
2…0 |
ADPS2:ADPS0 |
Выбор частоты преобразования |
В программе используются порты, описание которых приведено в табл. 4.15.
Таблица 4.15
Таблица используемых выводов микроконтроллера
Выводы контроллера |
Направление передачи |
Назначение вывода |
PC0 |
Ввод |
Вход АЦП |
PD2PD4 |
Вывод |
Вывод числа на светодиодную индикацию |
Алгоритм программы представлен на рис. 4.11, где K4K7 константы сравнения.
;подключение файла настроек
.include "m8def.inc"
;описание констант
.def fASCIIL = r26
.def fASCIIH = r27
.def tAS = r25
;ввод первого вектора прерывания
.org 0x00 ;начальный адрес программы
;начало программы работы с АЦП
rjmp start
.org 0x14
Рис. 4.11 Алгоритм программы, реализующей аналого-цифровое преобразование
rjmp ADC
start:
ldi r19,high(RAMEND) ;инициализация указателя стека
out SPh,r19
ldi r19,low(RAMEND)
out SPl,r19
sei ;бит глобального прерывания
;**** инициализация АЦП *******
ldi r19,0b10101101 ; ADEN=1,прерывание, одно преобр.
out adcsr,r19 ; Fadc=Fclc/32 (125 кГц)
ldi r19,0b100000 ;преобразование 8-разрядное
out admux,r19
;**** инициализация портов ******
ldi r19,0x00
out ddrc,r19 ;настройка на ввод бита порта С
ldi r19,0xff
out ddrd,r19 ;настройка на вывод бита порта D
sbi adcsr,adsc ;сравнение
loop: ;подпрограмма
nop ;пустой цикл
nop
rjmp loop
ADC:
in r19,adcl ;загрузка данных из adcl в регистр r19
mov fASCIIL,r19 ;результат преобразования
in r19,adch
mov fASCIIH,r19 ;в fASCIIL и fASCIIH
mov fASCIIL,fASCIIH
ldi r20,50
cp r20,fASCIIL ;сравнение регистров r20 и r19
brlo loop2 ;если содержание регистра r19 больше 50, то
ldi r20,0b0000 переходим на подпрограмму loop2 (для 5В
mov tAS,r20 максимальное значение 255, изменяя
rjmp Exit число можно корректировать величину
цифрового уровня на светодиодах
loop2:
ldi r20,100 ;если содержание регистра r19 больше 100, то
cp r20,fASCIIL переходим на подпрограмму loop3
brlo loop3
ldi r20,0b00100
mov tAS,r20
rjmp Exit
loop3:
ldi r20,150 ;если содержание регистра r19 больше 150, то
cp r20,fASCIIL переходим на подпрограмму loop4
brlo loop4
ldi r20,0b01100
mov tAS,r20
rjmp Exit
loop4:
ldi r20,0b011100
mov tAS,r20
rjmp Exit
Exit:
out portd,tAS
nop
reti
Контрольные вопросы
БИБЛИОГРАФИЧЕСКИЙ СПИСОК
/ Б.И. Горошков. М.: Радио и связь, 1988. 176 с.
ПРИЛОЖЕНИЯ
Приложение А
Рис. А1. Схема электрическая принципиальная платы программатора
Продолжение прил. А
Рис. А2. Схема электрическая принципиальная платы индикации
Продолжение прил. А
Рис. А3. Схема электрическая принципиальная платы микроконтроллера
Окончание прил. А
Рис. А4. Схема электрическая принципиальная модуля «Задание сигналов и логические элементы»
Приложение Б
Ассемблер микроконтроллеров AVR
Общая информация
Программа пишется с помощью транслятора, основой которого является ассемблер AVR. Здесь представлена информация по ассемблеру всей серии AVR, так как все микроконтроллеры всей серии программно совместимы.
Ассемблер это инструмент, с помощью которого создается программа для микроконтроллера. Ассемблер транслирует ассемблируемый исходный код программы в объектный код, который может использоваться в симуляторах или эмуляторах AVR. Также ассемблер генерирует код, который может быть непосредственно введен в программную память микроконтроллера.
При работе с ассемблером нет никакой необходимости в непосредственном соединении с микроконтроллером.
Исходный файл, с которым работает ассемблер, должен содержать мнемоники, директивы и метки.
Перед каждой строкой программы можно ставить метку, которая является алфавитно-цифровой строкой, заканчивающейся двоеточием. Метки используются как указания для безусловного перехода и команд условного перехода.
Строка программы может быть в одной из четырех форм:
[Метка:] директива [операнды] [Комментарий];
[Метка:] команда [операнды] [Комментарий];
Комментарий;
Пустая строка.
Комментарий имеет следующую форму:
; [Текст]
Таким образом, любой текст после символа “;” игнорируется ассемблером и имеет значение только для пользователя.
Операнды можно задавать в различных форматах:
Система команд
Система команд микроконтроллеров AVR фирмы ATMEL очень большая и в то же время эффективная. Одной из отличительных особенностей микроконтроллеров AVR является то, что почти все команды выполняются за 1 тактовый цикл. Исключение составляют команды перехода. Это существенно увеличивает производительность микроконтроллера даже при относительно невысокой тактовой частоте.
Продолжение прил. Б
Все команды можно классифицировать на 5 типов:
Директивы ассемблера
Ассемблер поддерживает множество директив. Директивы не транслируются непосредственно в коды операции. Напротив, они используются, чтобы корректировать местоположение программы в памяти, определять макрокоманды, инициализировать память и так далее. То есть это указания самому ассемблеру, а не команды микроконтроллера.
Все директивы ассемблера представлены в табл. Б.1.
Таблица Б.1
Директива |
Описание |
BYTE |
Зарезервировать байт под переменную |
CSEG |
Сегмент кодов |
DB |
Задать постоянным(и) байт(ы) в памяти |
DEF |
Задать символическое имя регистру |
DEVICE |
Задать для какого типа микроконтроллера компилировать |
DSEG |
Сегмент данных |
DW |
Задать постоянное(ые) слово(а) в памяти |
EQU |
Установите символ равный выражению |
ESEG |
Сегмент EEPROM |
EXIT |
Выход из файла |
INCLUDE |
Включить исходный код из другого файла |
LIST |
Включить генерацию .lst файла |
NOLIST |
Выключить генерацию .lst файла |
ORG |
Начальный адрес программы |
SET |
Установите символ равный выражению |
Синтаксис всех директив следующий:
.[директива].
То есть перед директивой должна стоять точка. Иначе ассемблер воспринимает это как метку.
Дадим несколько пояснений наиболее важным директивам ассемблера.
Продолжение прил. Б
CSEG Code segment.
Директива CSEG указывает на начало сегмента кодов. Ассемблируемый файл может иметь несколько кодовых сегментов, которые будут объединены в один при ассемблировании.
Синтаксис:
. CSEG
Пример:
.DSEG ; Начало сегмента данных
vartab: .BYTE 4 ; Резервируется 4 байта в СОЗУ
.CSEG ; Начало сегмента кодов
const: .DW 2 ; Записать 0х0002 в программной памяти
mov r1,r0 ; Что-то делать
DSEG Data Segment.
Директива DSEG указывает на начало сегмента данных. Ассемблируемый файл может содержать несколько сегментов данных, которые потом будут собраны в один при ассемблировании. Обычно сегмент данных состоит лишь из директив BYTE и меток.
Синтаксис:
.DSEG
Пример:
.DSEG ; Начало сегмента данных
var1: .BYTE 1 ; Резервировать 1 байт под переменную var1
table: .BYTE tab_size ; Резервировать tab_size байтов.
.CSEG
ldi r30,low(var1)
ldi r31,high(var1)
ld r1,Z
ESEG EEPROM Segment.
Директива ESEG указывает на начало сегмента EEPROM памяти. Ассемблируемый файл может содержать несколько EEPROM сегментов, которые будут собраны в один сегмент при ассемблировании. Обычно сегмент EEPROM состоит из DB и DW директив (и меток). Сегмент EEPROM памяти имеет свой собственный счетчик. Директива ORG может использоваться для размещения переменных в нужной области EEPROM.
Синтаксис:
.ESEG
Продолжение прил. Б
Пример:
.DSEG ; Начало сегмента данных
var1: .BYTE 1 ; Резервировать 1 байт под переменную var1
table: .BYTE tab_size ; Зарезервировать tab_size байт.
.ESEG
eevar1: .DW 0xffff ; Записать 1 слово в EEPROM
ORG установить адрес начала программы.
Директива ORG присваивает значения локальным счетчикам. Используется только совместно с директивами .CSEG, .DSEG, .ESEG.
Синтаксис:
.ORG адрес
Пример:
.DSEG ; Начало сегмента данных
.ORG 0x37 ; Установить адрес СОЗУ на 37h
variable: .BYTE 1 ; Зарезервировать байт СОЗУ по адресу 37h
.CSEG
.ORG 0x10 ; Установить счетчик команд на адрес 10h
mov r0, r1
DB определить байт(ы) в программной памяти или в EEPROM.
Директива DB резервирует ресурсы памяти в программной памяти или в EEPROM. Директиве должна предшествовать метка. Директива DB задает список выражений и должна содержать, по крайней мере, одно выражение. Размещать директиву следует в сегменте кодов или в EEPROM сегменте.
Список выражений представляет собой последовательность выражений, разделенных запятыми. Каждое выражение должно быть величиной между 128 и 255.
Если директива указывается в сегменте кодов и список выражений содержит более двух величин, то выражения будут записаны так, что 2 байта будут размещаться в каждом слове Flash-памяти.
Синтаксис:
LABEL: .DB список выражений
Пример:
.CSEG
consts: .DB 0, 255, 0b01010101, -128, 0хаа.
ESEG
const2: .DB 1,2,3
Продолжение прил. Б
DW определить слово(а) в программной памяти или в EEPROM.
Директива DW резервирует ресурсы памяти в программной памяти или в EEPROM. Директиве должна предшествовать метка. Директива DW задает список выражений, и должна содержать, по крайней мере, одно выражение. Размещать директиву следует в сегменте кодов или в EEPROM сегменте.
Список выражений представляет собой последовательность выражений, разделенных запятыми. Каждое выражение должно быть величиной между 32 768 и 65 535.
Синтаксис:
LABEL: .DW список выражений
Пример:
.CSEG
varlist: .DW 0, 0xffff, 0b1001110001010101, -32768, 65535
.ESEG
eevarlst: .DW 0, 0xffff, 10
DEF присвоить имя регистру.
Директива DEF позволяет присвоить символическое имя регистру. Регистр может иметь несколько символических имен.
Синтаксис:
.DEF Имя = Регистр
Пример:
.DEF temp = R16
.DEF ior = R0
.CSEG
ldi temp, 0xf0 ; Загрузить 0xf0 в регистр temp 0
in ior,0x3f ; Прочитать SREG в регистр ior
eor temp,
EQU присвоить имя выражению.
Директива EQU присваивает значение метке. Эта метка может быть использована в других выражениях. Значение этой метки нельзя изменить или переопределить.
Синтаксис:
EQU метка = выражение
Пример:
.EQU io_offset = 0x23
Продолжение прил. Б
.EQU porta = io_offset + 2
.CSEG ; Начало сегмента кодов
clr r2 ; Очистить регистр г2
out porta,r2 ; Записать в порт А
INCLUDE вставить другой файл.
Директива INCLUDE говорит ассемблеру начать читать из другого файла. Ассемблер будет выполнять работу с этим файлом до конца или до директивы EXIT. Включаемый файл может сам включать директивы INCLUDE.
Синтаксис:
.INCLUDE "имя файла"
Пример:
;iodefs.asm:
.EQU sreg = 0x3 f ; Регистр статуса
.EQU sphigh = 0x3e ; Старший байт указателя стека
.EQU splow = 0x3d; ; Младший байт указателя стека
; incdemo.asm
.INCLUDE iodefs.asm ; Включить файл «iodefs.asm»
in r0, sreg ; Прочитать регистр статуса
EXIT выйти из файла.
Директива EXIT позволяет ассемблеру остановить выполнение текущего файла. Обычно ассемблер работает до конца файла. Если он встретит директиву EXIT, то продолжит выполнение программы со строки, следующей за директивой INCLUDE.
Синтаксис:
.EXIT
Пример:
.EXIT ; выйти из этого файла
DEVICE указать для какого микроконтроллера пишется программа.
Директива позволяет пользователю сообщить ассемблеру, для какого типа устройства пишется программа. Если ассемблер встретит команду, которая не поддерживается указанным типом микроконтроллера, то будет выдано сообщение. Также сообщение появится в случае, если размер программы превысит объем имеющейся в этом устройстве памяти.
Синтаксис:
.DEVICE AT90S1200 [AT90S2313 | AT90S2323 | AT90S2333 | AT90S2343 | AT90S4414 | AT90S4433 | AT90S4434 | AT90S8515 | AT90S8534 | AT90S8535 | ATtiny 11 | ATtiny 12 | ATtiny 22 | ATmega603 | ATmega103
Продолжение прил. Б
Пример:
.DEVICE ATmega8 ; использовать ATmega8
.CSEG
.ORG 0000
Некоторые особенности программировании
Память данных почти полностью доступна программе пользователя и большинство команд ассемблера предназначено для обмена данными с ней. Команды пересылки данных предоставляют возможность непосредственной и косвенной адресации ячеек СОЗУ, непосредственной адресации регистров ввода/вывода и регистров общего назначения. Так как каждому регистру сопоставлена ячейка памяти, то обращаться к ним можно не только командами адресации регистров, но и командами адресации ячеек СОЗУ.
Например, команда:
MOV R10,R15 скопировать регистр R15 в регистр R10 делает абсолютно то же самое, что и команда:
LDS R10,$0015 загрузить в регистр R10 содержимое ячейки с адресом $0015.
То же самое относится и к регистрам ввода/вывода. Для них предусмотрены специальные команды:
IN Rd,P загрузить данные из порта I/O с номером Р в регистр Rd;
OUT P,Rd записать данные из регистра Rd в порт I/O с номером Р.
При использовании этих команд номер порта указывается в диапазоне 0<Р<63. При использовании команд адресации ячеек памяти для работы с регистрами ввода/вывода указывается адрес регистра в памяти данных $0020$005F.
Примеры применения разных команд:
OUT $12,$FF записать в PORTD число 255;
STS $0032,$FF записать непосредственно в ячейку $0032 число 255.
Адрес регистра ввода/вывода в СОЗУ получается прибавлением к номеру порта числа $20.
Память программ является ПЗУ и изменяется только при программировании кристалла. Константы можно располагать в памяти программ в виде слов.
Пример:
.dw $033f,$676d,$7653,$237e,$777f
Для работы с данными, расположенными в памяти программ, предусмотрена команда
LPM загрузить байт памяти программ, на который указывает регистр Z в регистр R0.
Продолжение прил. Б
Адрес байта константы определяется содержимым регистра Z. Старшие 15 битов определяют слово адреса (от 0 до 4к), состояние младшего бита определяет выбор младшего байта (0) или старшего байта (1).
При работе с портами ввода/вывода следует учитывать следующую особенность. Если вывод порта сконфигурирован как выход, то его переключение
производится через регистр данных (PORTA, PORTB, PORTC, PORTD), если вывод сконфигурирован как вход, то его опрос следует производить через регистр выводов входа порта (PINA, PINB, PINC, PIND).
Особенностью использования арифметических и логических команд является то, что некоторые из них работают только с регистрами R16R31.
Пример:
CPI Rd,K сравнить регистр Rd с константой К, 16<d<31.
Команды CBI и SBI работают только с младшими 32-мя регистрами ввода/вывода.
При использовании подпрограмм и прерываний нужно обязательно определять стек! Для этого нужно занести значения адреса вершины стека в регистры SPH и SPL.
Написание программы
Текст программы можно набирать в любом текстовом редакторе, не использующем форматирование текста, также можно использовать и специально предназначенную для этого программу AVR Studio. Примерный алгоритм программы и ее шаблон приведены в описании лабораторной работы.
Программный пакет позволяет создавать программы на языке Assembler. Программы создаются в виде текстовых файлов. Программный пакет позволяет производить проверку работоспособности программы. Имеется функция компиляции и виртуальной симуляции с привязкой к реальным микросхемам контролеров.
Рассмотрим основные этапы работы с данной программой.
Перед выполнением работы необходимо создать отдельный каталог для сохранения реквизитов. Путь к созданному каталогу не должен содержать русских букв. В каталог помещается файл настройки контролера. После нажимаем кнопку «New» в главном окне, в диалоговом окне указываем имя файла и его расположение (только что созданный каталог). В появившемся окне, записывается текст программы. Новый файл необходимо сохранить с расширением *.asm в том же каталоге.
В тексте программы необходимо сослаться на файл настройки (.include "m8def.inc"). Текст программы может содержать пояснения на русском языке. На рис. Б1 приведён пример программы ввода/вывода. Для написания текста программы необходимо ознакомится с системой команд контроллера.
Продолжение прил. Б
Рис. Б1. Файл текста программы
Основное окно и его параметры представлены на рис. Б2.
New 1 2 3
Рис. Б2. Окно программы: 1 панель инструментов; 2 строка главного меню; 3 основное поле
Продолжение прил. Б
Создание проекта и его проверка
Для запуска написанной программы необходимо создать файл рабочего проекта. Для этого из строки главного меню выбираем команду «Project». Из контекстного меню выбираем команду «NEW», на экране появится диалоговое окно рис. Б.3.
В графе Project name указываем имя проекта. В графе Location указываем путь к созданному ранее каталогу. В графе Project type выбираем AVR Assembler. После нажимаем кнопку «ОК». Окно проекта представлено на рис. Б4.
Для вызова меню AVR Assembler Options необходимо щёлкнуть правой кнопкой мыши по любой из категорий и выбирать опцию Project Settings.
Окно AVR Assembler Options представлено на рис. Б5.
Рис. Б3. Диалоговое окно Select Рис. Б4. Диалоговое окно Project
new project
Рис. Б5. Диалоговое окно AVR Assembler Options
Продолжение прил. Б
Первая графа путь в директорию установки программного пакета AVR Studio. Его необходимо проверить и при необходимости ввести верный путь через кнопку «…». Остальные графы настраиваем, как показано на рис. Б5, нажимаем «ОК».
Далее правой кнопкой мыши щёлкаем по категории Assembler files. В контекстном меню выбираем команду Add files. Добавляем файл с расширением *.asm в соответствии с рис. Б6.
Рис. Б6. Диалоговое окно Project
Затем правой кнопкой мыши выбираем опцию Other file. В контекстном меню выбираем команду Add file и добавляем файл с расширением *.inc.
В результате окно программы приобретет вид, показанный на рис. Б7.
Затем выбираем тип контролера (рис. Б8) и нажимаем кнопку «ОК».
Для выполнения программы в пошаговом режиме используем клавишу «F10». Для наблюдения за ходом симуляции необходимо нажать кнопку «Register Window», на экране появится окно (рис. Б9).
Используя кнопку «IO Windows» можно вызвать окно основных устройств (рис. Б10).
Это окно позволяет проследить изменение содержимого портов, таймера и других устройств микроконтроллера.
Продолжение прил. Б
Register Window IO Windows
Memory Windows Save all Build and run
Рис. Б7. Диалоговое окно: Register Window вызов окна регистров; Memory Windows вызов окна памяти; IO Windows вызов окна основных устройств; Build and run запуск компиляции; Save all сохранить всё
Рис. Б8. Диалоговое окно Simulator options
Окончание прил. Б
Рис. Б9. Окно регистров Рис. Б10. Окно основных устройств
Приложение В
Программный пакет «PonyProg»
После запуска программы выполним пункт «Calibration» меню «Setup». Программа измеряет скорость работы компьютера и вычисляет значения переменных, определяющих в дальнейшем длительность импульсов и пауз между ними, формируемых в процессе программирования. Учтите, что как при калибровке, так и при собственно программировании все другие (кроме PonyProg) программы должны быть закрыты. Иначе неизбежны ошибки.
Описанные операции необходимы при первом запуске PonyProg. Программа запомнит сделанные установки и при последующих запусках выполнит их автоматически. Повторить настройку придется лишь при смене адаптера или при подключении его к другому порту. Одно важное замечание. PonyProg не знает рассчитан ли выбранный адаптер на работу с нужной микросхемой. Вся ответственность за правильный выбор лежит на пользователе.
Следующий этап настройки выбор типа программируемой микросхемы. Чтобы выполнить его, нужно выбрать в главном меню пункт «Device»«AVR micro», и на экране появиться список семейств микросхем, которые можно запрограммировать с помощью PonyProg. Выбрав одно из них, получим список входящих в него микросхем (рис. В1). Если микросхема была выбрана ранее, она помечена «галочкой». Чтобы сделать или изменить выбор, достаточно щелкнуть по названию нужной микросхемы. Списки исчезнут с экрана, а выбранное название появится в специальном окне в верхнем правом углу окна PonyProg. Еще в одном окне слева от упомянутого указано название семейства микросхем. Эти окна дают возможность выбирать семейство и микросхему в нем, не открывая меню «Device». Достаточно нажать в соответствующем окне кнопку со стрелкой вниз, чтобы «выпал» список, из которого можно сделать выбор.
Название выбранной микросхемы выведено и в нижней строке главного окна (строка состояния). Рядом указаны информационная емкость программируемой памяти этой микросхемы (суммарная емкость FLASH и EEPROM) в байтах и контрольная сумма (CRC) ее содержимого, точнее говоря, его копии в программном буфере PonyProg.
Интересно, что в списке микроконтроллеров семейства AVR имеется строка AVR Auto. Выбрав ее, мы даем программе возможность автоматически распознать вставленную в панель адаптера микросхему этого семейства. Дело в том, что все они снабжены специальным внутренним ПЗУ, в котором хранится «сигнатура» три байта, однозначно определяющих тип микросхемы. Значение «сигнатур» указаны в справочных данных (datasheet) микросхем.
Однако программатор сможет прочитать «сигнатуру» лишь в том случае, если в микросхеме не включена защита кода, делающая все содержимое ее памяти недоступным для внешнего мира. Подобной защитой охотно пользуются производители микроконтроллерных устройств, стремясь защитить свою продукцию от пиратского копирования. Вдобавок ко всему они еще и стирают название микросхемы с ее корпуса.
Продолжение прил. В
Напомним еще раз. PonyProg не следит за правильностью выбора адаптера и программируемой микросхемы. При их несовместимости в лучшем случае программирование не будет выполнено вообще или выполнено с ошибками. В худшем микросхема может быть повреждена.
Загрузка исходных данных
Коды, которые предстоит загрузить в микроконтроллер, обычно представлены одним или несколькими текстовыми файлами, разработанными фирмой Intel и ставшими фактически стандартными НЕХ-формата.
Иногда исходные данные представлены файлами формата BIN («сырой» двоичный raw binary). Это точная копия содержимого памяти микроконтроллера без каких-либо служебных и вспомогательных данных. На других понятных PonyProg форматах останавливаться не будем, так как встречаются они довольно редко. Упомянем лишь формат Е2Р, разработанный специально для PonyProg, не понятный, к сожалению, другим программам. В файлах этого формата, кроме данных для FLASH и EEPROM, записан тип микроконтроллера и введенный пользователем текстовый комментарий, в котором могут содержаться любые полезные ему сведения.
Продолжение прил. В
Итак, выберем пункт «File» главного меню, а в нем один из пунктов «Open Device File…», «Open Program (FLASH) File…» или «Open Data (EEPROM) File…». Первым пунктом пользуются, если загружаемый файл содержит информацию для всех областей памяти программируемой микросхемы. Таковы файлы формата Е2Р, а также НЕХ-файлы для микроконтроллеров семейства PICmicro. Второй и третий пункты загружают в соответствующие области памяти микроконтроллера, данные из разных файлов. Учтите, что имена НЕХ-файлов для загрузки EEPROM микроконтроллеров семейства AVR обычно имеют расширение .eep.
При выборе одного из упомянутых пунктов на экране откроется окно, подобное изображенному на рис. В2. В списке содержатся только те файлы, имена которых имеют расширение, указанное в окне «Тип файлов». Нажав в нем кнопку со стрелкой вниз, можно перейти к файлам с другими расширениями или (выбрав «*») получить список всех файлов, имеющихся в папке. Файл будет загружен после двойного щелчка по его имени в списке либо после одинарного щелчка (его имя появится в окне «Имя файла») и нажатия на кнопку «Открыть». Можно также ввести нужное имя непосредственно в окно «Имя файла» с клавиатуры.
Рис. В2. Окно открытия файла с данными
В результате на экране появится окно, озаглавленное именем загруженного файла. Строго говоря, оно находилось там и раньше, но называлось (в зависимости от версии PonyProg) «No Name» и «default» и было пустым. Теперь здесь кодовая таблица, отображающая загруженные данные (рис. В3). Она
Продолжение прил. В
состоит из строк, начинающихся с отделенного скобкой адреса первого байта строки. Затем следуют шестнадцатеричные значения 16-ти байтов с последовательно возрастающими адресами (для удобства они разделены тире на две группы по восемь) и далее символьное представление тех же байтов.
Рис. В3. Кодовая таблица, отображающая загруженные данные
Обратите внимание на нижнюю часть таблицы (рис. В4). Последние строки, обведенные рамкой (а на экране выделенные цветом), отображают содержимое буфера памяти данных (EEPROM). Команда «Open Program (FLASH) File …» оставляет его незаполненным. Информация здесь появится только после выполнения команды «Open Data (EEPROM) File…» (рис. В5). Обратите внимание, что изменилось и имя в заголовке окна. Оно соответствует последнему загруженному в буфер файлу.
Рис. В5. Кодовая таблица с информацией о содержимом буфера памяти данных
Окончание прил. В
Необходимо учитывать, что адреса ячеек буфера EEPROM не соответствуют действительным адресам ячеек этой области памяти микроконтроллера. В PonyProg они просто продолжают адресацию буфера памяти программ (FLASH).
Правая часть окна буфера программатора, как уже сказано, отображает его содержимое в символьном виде. Это полезно, если в программных кодах имеются какие-либо текстовые сообщения, чаще всего предназначенные для вывода на
индикатор микроконтроллерного прибора. Но иногда автор программы «маскирует» внутри нее какие-либо дополнительные сведения, например, название программы, номер ее версии, а то и собственные фамилию и имя, и даже номер телефона и адрес. Просматривая шестнадцатеричный код, все это трудно заметить, зато в символьном виде такая информация сразу бросается в глаза.
Байты со значением 07FH всегда отображаются символами одинаково в соответствии с кодовой таблицей ASCII (American Standard Code for Information Interchange).
ОГЛАВЛЕНИЕ
1. Техническое описание лабораторного модуля…………………………... |
3 |
2. Порядок выполнения лабораторных работ………………………………. |
9 |
3. Техника безопасности при выполнении лабораторных работ………….. |
10 |
4. Лабораторные работы |
|
4.1. Лабораторная работа № 1. Изучение принципов работы функций ввода/вывода МК..……..………………………………………………………….... |
11 |
4.2. Лабораторная работа № 2. Изучение логических операций…….….. |
15 |
4.3. Лабораторная работа № 3. Изучение арифметических операций….. |
18 |
4.4. Лабораторная работа № 4. Изучение работы с памятью данных…... |
21 |
4.5. Лабораторная работа № 5. Изучение режимов работы таймера- счетчика TMR1………..……………………………………………...... |
25 |
4.6. Лабораторная работа № 6. Изучение работы компаратора………..... |
28 |
4.7. Лабораторная работа № 7. Изучение работы АЦП………………...... |
32 |
Библиографический список………………....……………………………….. |
36 |
Приложения |
|
Приложение А. Упрощенная электрическая схема лабораторного модуля. |
37 |
Приложение Б. Ассемблер микроконтроллеров AVR…………………….... |
41 |
Приложение В. Программный пакет PonyProg………………..…..………... |
54 |