ВУЗ: Не указан
Категория: Не указан
Дисциплина: Не указана
Добавлен: 23.01.2025
Просмотров: 3698
Скачиваний: 8
СОДЕРЖАНИЕ
1. Структура и функционирование микроконтроллера aTmega128
Регистр управления делением частоты кварцевого генератора – xdiv
2. Интегрированная система программирования avr Studio v4.12
3.Описание лабораторного стенда лс-2.
Работа №1 микроконтроллер aTmega128: методы адресации, команды передачи данных и управления
Работа №2 микроконтроллер aTmega128: команды обработки данных
Работа №3 цифровые системы на базе микроконтроллерa aTmega128:
Регистр управления внешними прерываниями – eicra и eicrb
16-Разрядные таймеры/счетчики t/c1 и t/c3
Регистры сравнения а таймеров/счетчиков - ocRxA
Работа №6 цифровые системы на базе микроконтроллера aTmega128:
Передача данных - Передатчик usart.
Прием данных - Приемник usart.
Работа №7 цифровые системы на базе микроконтроллера aTmega128:
Bit 2 – TOV3: - Флаг переполнения Таймера 3. Бит TOV3 устанавливается при переполнении Таймера 3. Он аппаратно очищается при обработке соответствующего вектора прерывания. Возможна очистка бита записью во флаг логической 1. При установленном бите I в регистре SREG, установленных битах TOIE3 и TOV3 выполняется прерывание по переполнению Таймера 3.
Bit 1 – OCF3C: - Флаг 3C совпадения выхода. Бит OCF3C устанавливается при совпадении состояния Таймера 3 и содержимого регистра OCR3C. Бит OCF3C аппаратно очищается при обработке соответствующего вектора прерывания. Возможна очистка бита записью во флаг логической 1. При установленном бите I в регистре SREG, установленных битах OCIE3C и OCF3C выполняется прерывание по совпадению выхода Таймера 3.
Bit 0 – OCF1C: - Флаг 1C совпадения выхода. Бит OCF1C устанавливается при совпадении состояния Таймера 1 и содержимого регистра OCR1C. Бит OCF1C аппаратно очищается при обработке соответствующего вектора прерывания. Возможна очистка бита записью во флаг логической 1. При установленном бите I в регистре SREG, установленных битах OCIE1C и OCF1C выполняется прерывание по совпадению выхода Таймера 1.
Обратите внимание, что программно установить флаг таймера-счетчика, записав в него «1», невозможно!
Выполнение основного задания
Изучить функционирование подсистемы прерываний микроконтроллера ATmega128.
Запустить на персональном компьютере интегрированную систему программирования AVRStudio. Командой ProjectNew Project создать новый проект Lesson3. С использованием редактора текста создать демонстрационную программу:
.device ATmega128
.include "m128def.inc"
;*****таблица векторов прерываний*****************************************
.CSEG
.org $0000 ;начальный адpес пpогpаммы
rjmp Start ;пеpеход к pабочей части пpогpаммы (вектоp Reset)
.org $0002
rjmp int_INT0 ;Внешнее пpеpывание Int0
.org $0004
reti ;Внешнее пpеpывание Int1
.org $0006
reti ;Внешнее пpеpывание Int2
.org $0008
reti ;Внешнее пpеpывание Int3
.org $000A
reti ;Внешнее пpеpывание Int4
.org $000C
reti ;Внешнее пpеpывание Int5
.org $000E
reti ;Внешнее пpеpывание Int6
.org $0010
reti ;Внешнее пpеpывание Int7
.org $0012
reti ;Совпадение таймера/счетчика T2
.org $0014
reti ;Переполнение таймера/счетчика T2
.org $0016
reti ;Захват таймера/счетчика T1
.org $0018
reti ;Совпадение "А" таймера/счетчика T1
.org $001A
reti ;Совпадение "В" таймера/счетчика T1
.org $001C
reti ;Переполнение таймера/счетчика T1
.org $001E
reti ;Совпадение таймера/счетчика T0
.org $0020
rjmp OvfT0 ;Переполнение таймера/счетчика T0
.org $0022
reti ;Передача по SPI завершена
.org $0024
reti ;USART0, прием завершен
.org $0026
reti ;Регистр данных USART0 пуст
.org $0028
reti ;USART0, передача завершена
.org $002A
reti ;Преобразование АЦП завершено
.org $002C
reti ;Запись в EEPROM завершена
.org $002E
reti ;Аналоговый компаратор
.org $0030
reti ;Совпадение "C" таймера/счетчика T1
.org $0032
reti ;Захват таймера/счетчика T3
.org $0034
reti ;Совпадение "А" таймера/счетчика T3
.org $0036
reti ;Совпадение "В" таймера/счетчика T3
.org $0038
reti ;Совпадение "C" таймера/счетчика T3
.org $003A
reti ;Переполнение таймера/счетчика T3
.org $003C
reti ;USART1, прием завершен
.org $003E
reti ;Регистр данных USART1 пуст
.org $0040
reti ;USART1, передача завершена
.org $0042
reti ;Прерывание от модуля TWI
.org $0044
reti ;Готовность SPM
;***** Основная программа**********************************************
Start:
ldi R16,High(RAMEND) ;инициализация стека
out SPH,R16 ;
ldi R16,Low(RAMEND) ;
out SPL,R16 ;
;*****настройка линии INT0 для программного симулятора******************
in R16,DDRD ;
sbr R16,(1<<PD0) ;установка линии порта INT0 на выход
out DDRD, R16 ;разрешение работы линии порта INT0 на выход
sbi PORTD,PD0 ;установка высокого уровня на выходе INT0
;*********************************************************************
in R16,TCCR0 ; установка бита CS00,тактирование таймера
sbr R16,(1<<CS00) ; частотой процессора
out TCCR0, R16 ;разрешение работы Таймера 0
in R16,TIMSK ;
sbr R16,(1<<TOIE0) ;установка бита TOIE0
out TIMSK, R16 ;разрешение прерывания по переполнению Таймера 0
in R16,EIMSK ;
sbr R16,(1<<INT0) ;установка бита INT0
out EIMSK, R16 ;разрешение прерывания INT0 от низкого уровня
;на входе INT0
sei ;разрешение всех прерываний
loop:
rjmp loop ;зацикливание программы до прихода прерывания
;***** Обработка прерывания Int0: ******************************************
int_INT0:
nop
reti
;***** Обработка прерывания Таймера0 ******************************************
OvfT0:
nop
reti
Программа lesson3 показывает работу процессора по прерываниям. Разрешены прерывания от внешнего выводаINT0 и переполнения Таймера 0. Процедуры обслуживания разрешенных источников не содержат исполняемых команд и подробнее будут рассмотрены в следующих работах.
Выполнить компиляцию программы командой Project/Build.
При успешной компиляции с помощью команды Debug/StartDebuggingзапустить симулятор.
Выполнить программу по шагам, выполняя команду Debug/StepIntro(F11) до зацикливанияloop.В окнеWorkspaceизменяем, значение регистраTCNT0 наFFтем самым вызываем прерывание по переполнению Таймера 0.
Выполнить программу по шагам, используя команду Debug/StepIntro(F11) до возврата в циклloop.В окнеWorkspaceобнуляем, бит 0 регистраPINDтем самым вызываем прерываниеINT0.
Задания
Составить различные процедуры обслуживания прерываний, выполняемых при переполнении и сравнении Таймеров 1,2,3.
Запустить составленные программы на выполнение. Реализовать вызов и выполнение соответствующих процедур обслуживания прерываний, изменяя значения в регистрах Таймеров 1,2,3 и контролируя работу программы с помощью интегрированной системы программирования.
Работа №4 цифровые системы на базе микроконтроллера aTmega128: работа с внешними устройствами через параллельные порты ввода вывода – работа с клавиатурой и светодиодным индикатором
Цель работы: получение практических навыков программирования процедур ввода-вывода сигналов внешних устройств (на примере работы с клавиатурой и индикатором).
Введение
Индикатор является неотъемлемой частью любого электронного устройства. Роль индикатора могут выполнять многие устройства от светодиода до TFT панели.
Установленный на плате лабораторного стенда светодиодный индикатор позволяет отображать 3 разряда по 8 сегментов в каждом. Он подключен к портам С и Е. Схема подключения показана на рисунке 4.1. Восемь сегментов подключены к выводам PC0-PC7, три разряда к выводам РЕ4-РЕ6. Вывод информации на индикатор производится в динамическом режиме, то есть в каждый момент времени включается один разряд из восьми сегментов. Для исключения мерцания индикатора частота включения каждого разряда должна превышать 25Гц. Вывод информации на индикатор производится последовательной установкой “0” на выводах PE4-PE6 и включением нужных сегментов установкой в “0” выводов PC0-PC7. Перед выключением предыдущего и включением следующего разряда выдерживается пауза, от времени которой зависит яркость индикатора.
Рис. 4.1 Схема подключения светодиодного индикатора на плате лабораторного стенда ЛС-2.
Клавиатура является одним из наиболее распространенных устройств для ввода оператором в цифровую систему команд и данных. Обычно клавиши клавиатуры организованы в виде матрицы, и их состояние читается через параллельные порты.
На плате лабораторного макета смонтирована простая 12-кнопочная клавиатура, которая подключена к выводам PD0 – PD6 порта PD микроконтроллера. Клавиатура имеет вид матрицы 4 х 3, кнопки обозначены А1 – А3, В1 – В3, С1 – С3, D1 – D3, где цифры 1, 2, 3 определяют номер столбца, а буквы A, B, C, D указывают позицию кнопки в столбце. Подключение кнопок клавиатуры к выводам порта PD показано на рисунке 4.2. Для контроля состояния кнопки необходимо подать низкий потенциал (логический «0») на один из выводов микроконтроллера PD0, PD1, PD2 или PD3. В этом случае на выводе PD4, PD5 или PD6, подключенном к нажатой кнопке, установится «0».