- •Введение
- •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.8.2. Сброс. Источники сброса
МК ATmega8515 располагает тремя источниками сигнала сброса:
Сброс по включению питания (Power-On Reset). MCU сбрасывается при подключении питания к выводам VCC и GND.
Внешний сброс (External Reset). MCU сбрасывается если низкий уровень присутствует на входе более двух циклов XTAL.
Сброс по сторожевому таймеру (Watchdog Reset). MCU сбрасывается если истекает период сторожевого таймера и сторожевой таймер разрешен.
В течение сброса все регистры I/O, за исключением регистра статуса MCU, устанавливаются в их начальные состояния и программа начинает работу с адреса $0000. По этому адресу должна находиться команда JMP - команда абсолютного перехода к подпрограмме обработки сброса. Если программа никогда не разрешает прерывания, то векторы прерываний не используются и по этим адресам могут располагаться коды программы.
Сброс по включению питания
Схема сброса по включению питания (Power-On Reset - POR) обеспечивает запуск микроконтроллера только по достижении напряжением Vcc безопасного уровня. Встроенный таймер, тактируемый встроенным генератором сторожевого таймера, удерживает запуск MCU на некоторое время после достижения граничного напряжения включения питания Vpot , не зависящее от скорости нарастания напряжения Vcc (см. Рис. 17).
Рис. 17. Начальный запуск MCU. Вывод RESET подключен к Vcc.
Внешнее управление сбросом
Внешний сброс формируется подачей низкого уровня на вывод RESET на время не меньше двух тактовых циклов кварцевого генератора. При достижении напряжением на выводе RESET уровня VRST запускается таймер, задерживающий запуск MCU на время t TOUT.
Рис. 18. Внешний сброс во время работы микроконтроллера
Сброс по сторожевому таймеру
По окончании времени, определяемого сторожевым таймером, таймер формирует короткий, длительностью в один цикл XTAL, импульс сброса. По падающему фронту этого импульса таймер задержки начинает отсчет tTOUT.
Рис. 19. Сброс по сторожевому таймеру во время работы микроконтроллера
1.8.3. Режимы энергосбережения (Sleep Modes)
AVR могут быть переведены программным путем в один из трех режимов пониженного энергопотребления.
Для перевода в любой из трех режимов энергосбережения бит SE в регистре MCUCR (в таблице 1 адрес $35($55)) должен быть установлен в состояние1. Биты SM1 регистра MCUCR и SM2 регистра MCUCSR (в таблице 1 адрес $34($54)) определяют какой из режимов Idle, Power Down или Standby будет запущен командой SLEEP.
При возникновении разрешенного прерывания во время нахождения MCU в режиме энергосбережения, MCU активируется, выполняет подпрограмму обработки прерывания и продолжает работу до следующей команды SLEEP. Если во время режима энергосбережения происходит сброс, MCU активируется и начинает работу по вектору сброса. Содержимое регистрового файла, SRAM и памяти I/O в процессе активации не изменяется. В Таблице 4 представлен выбор режима энергосбережения.
Отметим, что если для возврата из режима энергосбережения Power Down или Standby, используется запуск прерывания по уровню, то низкий уровень должен удерживаться несколько дольше, чем время задержки сброса tTOUT, иначе микроконтроллер не активируется.
Таблица 4. Выбор режима Sleep
SM2 |
SM1 |
Sleep Mode |
0 |
0 |
Режим Idle |
0 |
1 |
Режим Power Down |
1 |
0 |
Зарезервировано |
1 |
1 |
Режим Standby |
Режим холостого хода (IDLE). Если биты SM2/SM1 находятся в состоянии 00 команда SLEEP переводит MCU в режим Idle, останавливая CPU но оставляя активными таймеры/счетчики, внутренний генератор синхросигналов, сторожевой таймер и систему прерываний. Ток потребления не превышает 2,5 мА на частоте 12 МГц. Это обеспечивает активацию MCU внешними прерываниями и такими внутренними прерываниями, как переполнение таймера и завершение приема USART. При активации MCU из Idle режима CPU начинает выполнять программу незамедлительно.
Режим микропотребления (POWER DOWN). При установке битов SM2/SM1 в состояние 01 команда SLEEP переводит MCU в режим Power Down. Сохраняется содержимое регистрового файла, но останавливается внутренний генератор синхросигналов, и, следовательно, останавливаются все функции, пока не поступит сигнал внешнего прерывания или аппаратного сброса. Пользователь может разрешить работу сторожевого таймера. Если сторожевой таймер разрешен, то активация MCU произойдет по завершении установленного в сторожевом таймере периода времени. Если внешний источник тактового сигнала подключен к выводу XTAL1, то активация MCU из режима Power Down может происходить без ATMEL задержки, обычно необходимой для стабилизации XTAL генератора. При включенном сторожевом таймере ток потребления в этом режиме составляет около 80 мкА, а при выключенном – менее 1 мкА. (Все приведенные значения справедливы для напряжения питания 5 В).
Режим ожидания (Standby). При установке битов SM2/SM1 в состояние 11 команда SLEEP переводит MCU в режим Standby. Этот режим доступен только при использовании генератора с внешним резонатором в качестве источника тактового сигнала. Данный режим полностью идентичен режиму Power Down, за исключением того, что тактовый генератор продолжает функционировать, поэтому переход в рабочий режим проходит быстрее – 6 машинных циклов.