- •Введение
- •1. Омэвм avr семейства Mega
- •1.1. Технические характеристики микроконтроллера avr aTmega8515
- •1.2 Условное графическое обозначение (уго) микроконтроллера avr aTmega8515
- •1.3. Структура микроконтроллера аTmega8515
- •1.4. Организация памяти
- •1.4.1. Карта памяти
- •1.4.2. Память программ (Flash – пзу)
- •1.4.3. Память данных
- •Регистровая память (рон и рвв)
- •Файл регистров общего назначения
- •Регистр X, регистр y и регистр z
- •Регистр статуса – sreg
- •1.4.4. Оперативная память (озу или ram)
- •Регистр управления mcu - mcu Control Register - mcucr
- •1.4.5. Энергонезависимая память данных (eeprom)
- •1.5. Режимы адресации памяти данных
- •1.7. Стек. Указатель стека - Stack Pointer - sp
- •1.8. Тактирование. Режимы пониженного энергопотребления
- •1.8.1. Тактовый генератор
- •Система реального времени (rtc)
- •1.8.2. Сброс. Источники сброса
- •Сброс по включению питания
- •Внешнее управление сбросом
- •Сброс по сторожевому таймеру
- •1.8.3. Режимы энергосбережения (Sleep Modes)
- •1.9. Прерывания (interrupts)
- •Время отклика на прерывание
- •Обработка прерываний и сброса
- •Регистр флагов прерываний – gifr (General Interrupt Flag Register)
- •Регистр управления внешними прерываниями – gicr
- •Регистр масок прерывания по таймерам/счетчикам - timsk (Timer/Counter Interrupt Mask Register)
- •Регистр флагов прерываний по таймерам/счетчикам tifr
- •1.10. Таймеры/счетчики (timer/counters)
- •1.10.1. Таймер/счетчик t/c0
- •Регистр управления т/с0 - tccr0 (The Timer/Counter0 Control Register) Регистр tccr0 предназначен для управления модулем т/c0. Формат регистра tccr0:
- •Регистр сравнения выхода т/с0
- •Режимы работы т/с0
- •Изменение состояния ос0 определяется разрядами сом01:сом00 регистра tccr0 (состояние вывода ос0 изменяется в соответствии с таблицей 11).
- •1.10.2. Таймер/счетчик 1 – t/c1
- •1.11. Сторожевой таймер (Watchdog Timer)
- •Регистр управления сторожевым таймером – wdtcr
- •1.12. Универсальный синхронно-асинхронный приемопередатчик (usart)
- •Регистр данных usart - udr - (usart I/o Data Register)
- •Регистр ucsra
- •Регистр ucsrв
- •Регистр ucsrс
- •Формат кадра
- •Скорость обмена данными
- •Передача данных
- •Прием данных
- •1.13. Последовательный периферийный интерфейс spi
- •1.14. Аналоговый компаратор (Analog Comparator)
- •2. Система команд
- •Команды логических операций
- •Команды арифметических операций и сдвига
- •Команды операций с битами
- •Команды пересылки данных
- •Команды передачи управления
- •Теоретическая часть
- •1.1. Методические указания по выполнению лабораторной работы
- •1.1.1. Создайте новый проект.
- •1.1.2. Напишите и отладьте программу lab1
- •. Содержание отчета
- •3.2. Практическая работа №1 Изучение системы команд мк avr aTmega8515
- •2. Содержание отчета
- •3.3. Лабораторная работа №2 Изучение работы с портами ввода/вывода мк avr
- •Контрольные вопросы
- •Литература
1.14. Аналоговый компаратор (Analog Comparator)
Модуль аналогового компаратора входит в состав всех МК AVR семейства Mega. Компаратор позволяет сравнивать значения напряжений, присутствующих на двух выводах МК. Результатом сравнения является логическое значение, которое может быть прочитано из программы. По результату сравнения может быть сгенерировано прерывание, а также осуществлен захват состояния таймер/счетчика Т1. Используемые компаратором входы МК AIN0 (PB2), AIN1 (PB3).
Управление компаратором и контроль его состояния осуществляется с помощью регистра ACSR, расположенного по адресу ($08 ($28)).
По своему действию рассматриваемый узел МК является обычным компаратором. Если напряжение на выводе AIN0 (неинвертирующий вход) больше напряжения на выводе AIN1 (инвертирующий вход), то результат сравнения будет равен «1». В противном случае результат – «0». Подробно со структурой и функционированием модуля SPI можно ознакомиться в [1].
2. Система команд
Программа для любого микроконтроллера представляет собой последовательность команд, записанных в памяти программ. Большинство команд при выполнении изменяют содержимое одного или нескольких РОН, регистров ввода/вывода или ячеек ОЗУ. Доступ к регистрам осуществляется по их адресам, являющимися операндами команды, однако, при написании ассемблерных программ гораздо удобнее обращаться к регистрам, используя вместо числовых значений адресов их стандартные, принятые символические обозначения. Чтобы задать соответствие этих имен реальным адресам необходимо подключить в начале программы файл определения адресов регистров ввода/вывода (при помощи директивы ассемблера .INCLUDE). Программа для микроконтроллера AVR ATmega8515 должна начинаться с директивы ассемблера:
.include “8515def.inc”
Систему команд МК AVR ATmega8515 можно условно разбить на несколько групп команд:
– логических операций,
– арифметических операций и сдвига,
– операций с битами,
– пересылки данных,
– передачи управления,
– управления системой.
Команды логических операций
Команды логических операций позволяют выполнять стандартные логические операции над байтами, такие, как
– логическое умножение «И» – (AND Rd, Rr,...),
– логическое сложение «ИЛИ» – (OR Rd, Rr,…),
– операцию «исключающее ИЛИ» – (EOR Rd, Rr,…),
а также инверсию (COM Rd) и отрицание (NEG Rd) регистров.
К этой группе можно отнести также команды очистки (CLR Rd)/установки (SER Rd) регистров. Операции производятся между регистрами общего назначения, между регистром и константой, результат сохраняется в РОН. Все команды этой группы выполняются за один машинный цикл.
Команды арифметических операций и сдвига
К данной группе относятся команды, выполняющие базовые операции:
– сложение (ADD Rd, Rr,…),
– вычитание (SUB Rd, Rr,…),
– инкремент (INC Rd),
– декремент (DEC Rd),
– сдвиги вправо (ROR Rd; LSR Rd,..) и влево (ROL Rd; LSL Rd,…),
– умножение 8-разрядных значений (MUL Rd, Rr,…).
Все операции производятся только над РОН. При этом МК AVR оперируют как знаковыми, так и беззнаковыми числами. Почти все команды выполняются за один машинный цикл.