ВУЗ: Не указан

Категория: Не указан

Дисциплина: Не указана

Добавлен: 23.01.2025

Просмотров: 3682

Скачиваний: 8

ВНИМАНИЕ! Если данный файл нарушает Ваши авторские права, то обязательно сообщите нам.

СОДЕРЖАНИЕ

Оглавление

Введение

1. Структура и функционирование микроконтроллера aTmega128

Указатель стека – sp.

Регистр управления делением частоты кварцевого генератора – xdiv

2. Интегрированная система программирования avr Studio v4.12

2.1. Создание проекта.

2.2. Компиляция проекта.

3.Описание лабораторного стенда лс-2.

Работа №1 микроконтроллер aTmega128: методы адресации, команды передачи данных и управления

Введение

Команды передачи данных приведены в Табл.1.1. Из таблицы видно, что набор этих команд представляет собой сочетание восьми операций с различными методами адресации.

Из табл.1.1 и табл.1.2 видно, что команды пересылки данных и команды переходов значения флагов регистра sreg не изменяют.

Работа №2 микроконтроллер aTmega128: команды обработки данных

Введение

Задания

Работа №3 цифровые системы на базе микроконтроллерa aTmega128:

Введение

Регистр управления внешними прерываниями – eicra и eicrb

Выполнение основного задания

Задания

Работа №4 цифровые системы на базе микроконтроллера aTmega128: работа с внешними устройствами через параллельные порты ввода вывода – работа с клавиатурой и светодиодным индикатором

Введение

Выполнение основного задания

Задания

Работа №5

16-Разрядные таймеры/счетчики t/c1 и t/c3

Регистры сравнения а таймеров/счетчиков - ocRxA

Выполнение основного задания

Задания

Работа №6 цифровые системы на базе микроконтроллера aTmega128:

Введение

Универсальный синхронный и асинхронный приемопередатчик usart предназначен для организации последовательной связи.

Инициализация usart.

Передача данных - Передатчик usart.

Прием данных - Приемник usart.

Описание регистров usart.

Задания

Работа №7 цифровые системы на базе микроконтроллера aTmega128:

Аналоговый компаратор.

Задания

Задания

Приложение 1.

Приложение 2.

out seg,temp

;настройка таймера 0 на работу в асинхронном режиме

in temp,ASSR

;установка бита AS0,тактирование таймера частотой 32768Гц

sbr temp,(1<<AS0)

out ASSR,temp ;разрешение работы Таймера 0 в асинхронном режиме

ldi temp,(1<<CS00)|(1<<CS02)

out TCCR0,temp ;запуск Таймера 0

;разрешение прерывания по переполнению Таймера 0

in temp,TIMSK

sbr temp,(1<<TOIE0)

out TIMSK,temp

;настройка таймера 1 для работы в режиме «Сброс при совпадении»

ldi temp,(1<<CS11)|(1<<WGM12)

out TCCR1B,temp ;запуск Таймера 1

;разрешение прерывания по сравнению Таймер 1

in temp,TIMSK

sbr temp,(1<<OCIE1A)

out TIMSK,temp

;настройка таймера 2 для работы в режиме «Быстрый ШИМ»

ldi temp,(1<<CS20)|(1<<WGM21)|(1<<WGM20)

out TCCR2,temp ;разрешение работы Таймера 2

;разрешение прерывания по переполнению и сравнению Таймер 2

in temp,TIMSK

sbr temp,(1<<OCIE2)|(1<<TOIE2)

out TIMSK,temp

;настройка таймера 3

ldi temp,(1<<CS30)

sts TCCR3B,temp ;разрешение работы Таймера 3

;разрешение прерывания по переполнению Таймера 3

sbr temp,(1<<TOIE3)

sts ETIMSK,temp

ldi temp,1

out OCR1AH,temp

ldi temp,0

out OCR1AL,temp

sei ;разрешение всех прерываний

loop:

rcall display

rjmp loop

;===================================================================

;Вывод показаний на индикатор из регистров dig1, dig2 и dig3

;===================================================================

Display:

mov temp,dig1

rcall _rd_tbl

cbi PORTE,razr1

rcall _deley

sbi PORTE,razr1

mov temp,dig2

rcall _rd_tbl

cbi PORTE,razr2

rcall _deley

sbi PORTE,razr2

mov temp,dig3

rcall _rd_tbl

cbi PORTE,razr3

rcall _deley

sbi PORTE,razr3

ret

;====================================================================

;Подпрограмма перекодировки значения в семисегментный код

;====================================================================

_rd_tbl:

ldi ZH,High(seg_table*2) ;загpужаем указатель на таблицу

ldi ZL,Low(seg_table*2)

add ZL,temp ;вычисляем адpес

lpm ;читаем байт в r0

out seg,r0 ;включаем нужные сегменты

ret

;====================================================================

;Подпрограмма задержки для индикатора


;====================================================================

_deley:

dec deley

brne _deley

ret

;====================================================================

;Таблица констант в памяти программ

;====================================================================

seg_table:

.db $C0,$F9,$A4,$B0,$99,$92,$82,$F8,$80,$90,$88,$83,$C6,$A1,$86,$8E,$FF

.EXIT

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

Программа lesson5 демонстрирует работу всех четырех таймеров в разных режимах. Таймер 0 работает в асинхронном режиме, тактируясь частотой 32768Гц. Предделитель делит эту частоту на 128. В результате прерывания от этого таймера поступают 1 раз в секунду. В подпрограмме обработки прерывания от таймера 0 значения регистров dig1,dig2,dig3 увеличиваются на 1 и потом подпрограммой Display выводятся на индикатор. Таймер 1 работает в режиме «Сброс при сравнении» и используется для формирования частотного сигнала излучаемого пьезодинамиком. Таймер 2 работает в режиме «Быстрый ШИМ». Сформированный ШИМ сигнал поступает на светодиод, что изменяет его яркость свечения. Таймер 3 работает в нормальном режиме и используется для изменения значения регистра сравнения таймера 1 (от $100 до $1FF), что в свою очередь изменяет частоту генерируемого сигнала пьезодинамика. Также таймер 3 изменяет значение ШИМ сигнала генерируемого таймером 2( от $00 до $FF) , что приводит к изменению яркости свечения светодиода.

  1. Выполнить команду Project/Buildдля компиляции проекта.

  2. Загрузить программу lesson5.hex в микроконтроллер по методике пункта 2.4 «ЗАПИСЬ ПРОГРАММЫ В МИКРОКОНТРОЛЛЕР».


Задания

  1. Составить программу, реализующую мигание светодиода на плате (перебор сегментов любого индикатора) с заданной частотой и длительностью. Изменение частоты (3-4 значения) производить нажатием определенных кнопок клавиатуры.

  2. Составить программу, обеспечивающую периодическую выдачу на семисегментные индикаторы определенной последовательности чисел (4-5 значений). Период смены кадров (3-4 различных значения) задавать нажатием определенных кнопок клавиатуры.

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

  4. Составить программу, реализующую функции секундомера с индикацией на семисегментных индикаторах минут, секунд и десятых долей секунд. Запуск и останов секундомера производить нажатием определенных кнопок клавиатуры.

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

Работа №6 цифровые системы на базе микроконтроллера aTmega128:

организация последовательного обмена данными

Цель работы: изучение функционирования последовательных портов микроконтроллера ATmega128, получение практических навыков программирования микроконтроллера для реализация последовательного обмена.

Введение

Микроконтроллер ATmega128 имеет два последовательных порта: USART0 и USART1.

Универсальный синхронный и асинхронный приемопередатчик usart предназначен для организации последовательной связи.

Отличительные особенности:

  • Полнодуплексная работа (раздельные регистры последовательного приема и передачи)

  • Асинхронная или синхронная работа

  • Ведущее или подчиненное тактирование связи в синхронном режиме работы

  • Высокая разрешающая способность генератора скорости связи

  • Поддержка формата передаваемых данных с 5, 6, 7, 8 или 9 битами данных и 1 или 2 стоп-битами

  • Аппаратная генерация и проверка бита паритета (четность/нечетность)

  • Определение переполнения данных

  • Определение ошибки в структуре посылки

  • Фильтрация шума с детектированием ложного старт-бита и цифровым ФНЧ

  • Три раздельных прерывания по завершении передачи, освобождении регистра передаваемых данных и завершении приема

  • Режим многопроцессорной связи

  • Режим удвоения скорости связи в асинхронном режиме


Инициализация usart.

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

Если необходимо выполнить повторную инициализацию USART, например, для изменения скорости связи или формата посылки, то необходимо убедиться, чтобы во время инициализации передача была приостановлена. Флаг TXCx (здесь и далее по тексту вместо ‘х’ нужно подставить 0 или 1 в соответствии с номером приемопередатчика USART0 или USART1) может использоваться для проверки завершения работы передатчика, а флаг RXCх - для проверки отсутствия в приемном буфере несчитанных данных. Обратите внимание, что при использовании флага TXCх он должен сбрасываться программно перед началом каждой передачи (перед записью в UDRх).


Передача данных - Передатчик usart.

Работа передатчика USART разрешается путем установки бита разрешения передачи (TXENх) в регистре UCSRxB. После разрешения, функция вывода TxD как обычного порта заменяется на функцию выхода последовательной передачи данных. Скорость связи, режим работы и формат посылки должны быть установлены однократно перед началом какой-либо передачи.

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

Флаги и прерывания передатчика.

Передатчик USART имеет два флага, которые индицируют его состояние: флаг освобождения регистра данных UDREх и флаг завершения передачи TXCх в регистре UCSRхA. Оба флага могут использоваться для генерации прерываний.

Флаг освобождения регистра данных UDREх индицирует готовность буфера передатчика принять новые данные. Данный бит устанавливается при освобождении передающего буфера и сбрасывается, когда буфер передатчика содержит данные для передачи.

Флаг завершения передачи TXCх принимает единичное значение, если вся посылка в сдвиговом регистре передатчика была полностью сдвинута и в буфере передатчика отсутствуют новые данные для передачи. Флаг TXCх автоматически сбрасывается при переходе на вектор обработки прерывания по завершению передачи или программно сбрасывается путем записи в него лог. 1.

Прием данных - Приемник usart.

Работа приемника USART разрешается, если записать лог. 1 в бит разрешения работы приемника RXENх в регистре UCSRхB. После разрешения работы приемника обычное назначение вывода RxD заменяется на вход последовательного ввода данных приемника USART. Скорость связи, режим работы и формат посылки должны быть установлены однократно перед началом выполнения приема данных.

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