- •Оглавление
- •Введение
- •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.
Регистры сравнения а таймеров/счетчиков - ocRxA
|
7 |
6 |
5 |
4 |
3 |
2 |
1 |
0 |
|
|
MSB |
OCRxAH | |||||||
|
LSB |
OCRxAL | |||||||
Исходное значение |
0 0 |
0 0 |
0 0 |
0 0 |
0 0 |
0 0 |
0 0 |
0 0 |
|
Регистры сравнения В таймеров/счетчиков - OCRxВ
|
7 |
6 |
5 |
4 |
3 |
2 |
1 |
0 |
|
|
MSB |
OCRxBH | |||||||
|
LSB |
OCRxBL | |||||||
Исходное значение |
0 0 |
0 0 |
0 0 |
0 0 |
0 0 |
0 0 |
0 0 |
0 0 |
|
Регистры сравнения C таймеров/счетчиков - OCRxC
|
7 |
6 |
5 |
4 |
3 |
2 |
1 |
0 |
|
|
MSB |
OCRxCH | |||||||
|
LSB |
OCRxCL | |||||||
Исходное значение |
0 0 |
0 0 |
0 0 |
0 0 |
0 0 |
0 0 |
0 0 |
0 0 |
|
16-разрядные регистры сравнения выхода обеспечивают и чтение и запись.
Регистры сравнения таймера/счетчика хранят эталон, постоянно сравниваемый с состоянием таймера/счетчика. Действие, запускаемое совпадением при сравнении, определяется режимом работы блока сравнения таймера/счетчика. Совпадение при сравнении может произойти только, если таймер/счетчик досчитает до значения содержимого OCR.
Совпадение при сравнении устанавливает флаг прерывания в тактовом цикле процессора, следующем за самим совпадением.
Регистр захвата таймеров/счетчиков – ICRx.
|
7 |
6 |
5 |
4 |
3 |
2 |
1 |
0 |
|
|
MSB |
ICRxH | |||||||
|
LSB |
ICRxL | |||||||
Исходное значение |
0 0 |
0 0 |
0 0 |
0 0 |
0 0 |
0 0 |
0 0 |
0 0 |
|
16-разрядный регистр захвата входа обеспечивает только чтение содержимого.
При обнаружении на выводе ICx нарастающего или cпадающего фронта сигнала (определяемого установкой ICESx в регистре TCCRxB) текущее состояние таймера/счетчика (значение регистра TCNTx) пересылается в регистр ICRx. Одновременно устанавливается флаг ICFx.
Обращение к 16-разрядным регистрам.
Каждый 16-разрядный регистр таймеров/счетчиков физически размещается в двух 8-разрядных регистрах. Соответственно для обращения к ним требуется выполнить по две операции чтения или записи. Для того чтобы запись или чтение обоих байт содержимого 16-разрядного регистра происходила одновременно, в составе каждого таймера/счетчика имеется специальный 8-разрядный регистр TEMP, предназначенный для хранения старшего байта значения (этот регистр используется только процессором и программно недоступен).
Для выполнения цикла записи 16-разрядного регистра первым должен быть загружен старший байт, который помещается в регистр ТЕМP. При последующей записи младшего байта он объединяется с содержимым регистра TEMP, и оба байта одновременно (в одном и том же машинном цикле) записываются в 16-разрядный регистр. Если требуется изменить несколько 16-разрядных регистров таймера/счетчика, а старшие байты всех записываемых значений одинаковы, загрузку старшего байта достаточно выполнить только один раз.
Для выполнения цикла чтения 16-разрядного регистра первым должен быть прочитан младший байт. При его чтении содержимое старшего байта помещается в регистр TEMP. При последующем чтении старшего байта возвращается значение, сохраненное в регистре TEMP. Исключение составляют только регистры сравнения OCR1A/B/C (OCR3A/B/C), при чтении которых регистр TEMP не задействуется.
При выполнении цикла обращения к 16-разрядному регистру таймера/счетчика прерывания должны быть запрещены. В противном случае, если прерывание произойдет между двумя командами обращения к 16-разрядному регистру, а в подпрограмме обработки этого прерывания тоже будет произведено обращение к какому-либо из 16-разрядных регистров того же таймера/счетчика, содержимое регистра TEMP будет изменено. Как следствие, результат обращения к 16-разрядному регистру в основной программе будет неверным.