
- •Микроконтроллеры
- •Базовая информация о микроконтроллерах
- •Сущность и назначение микроконтроллера. Семейства микроконтроллеров
- •Состав микроконтроллера
- •Назначение микроконтроллера
- •Cемейства микроконтроллеров
- •Отправная точка. Микроконтроллерi8051
- •Основные характеристики микроконтроллераi8051
- •Назначение выводовi8051
- •Структурная схемаi8051
- •Микроконтроллеры семействаavrкомпанииatmel
- •Общая характеристика архитектуры, системы команд и ассемблераAvr
- •Состав семейства и основные характеристики микроконтроллеровAvr
- •Структура ассемблерного кодаAvr
- •Группы команд микроконтроллеров avr
- •Директивы ассемблераAvr
- •Список директив ассемблераAvr
- •Директива byte
- •Директива cseg
- •Директива db
- •Директива def
- •Директива device
- •Директива dseg
- •Директива dw
- •Директивы macro иEndmacro
- •Директива equ
- •Директива set
- •Микроконтроллер atmega8535
- •Характеристики, назначение выводов и структура микроконтроллера aTmega8535
- •Характеристики микроконтроллера aTmega8535
- •Назначение выводов микроконтроллера aTmega8535
- •Структура микроконтроллера aTmega8535
- •Сброс микроконтроллера aTmega8535. Режимы пониженного энергопотребления. Сигналы запроса внешних прерываний. Регистры управления
- •Сброс микроконтроллера aTmega8535
- •Регистр mcucsr (mcu Control and Status Register)
- •Регистр mcucr (mcu Control Register)
- •Режимы пониженного энергопотребления
- •Форма сигналов запроса внешних прерываний
- •Регистры общего назначения, регистр состояния и указатель стека микроконтроллера aTmega8535
- •Регистры общего назначения
- •Регистр состояния (sreg)
- •Указатель стека
- •Ввод-вывод
- •Регистры и команды ввода-вывода
- •Порты ввода-вывода
- •Прерывания
- •Источники и таблица векторов прерываний
- •Регистр gicr (General Interrupt Control Register)
- •Внешние прерывания
- •Регистр gifr (General Interrupt Flag Register)
- •Таймеры микроконтроллера aTmega8535
- •Общая информация о таймерах микроконтроллера aTmega8535
- •Множество таймеров aTmega8535
- •Регистр timsk (Timer/Counter Interrupt Mask Register)
- •Регистр tifr (Timer/Counter Interrupt Flag Register)
- •Примеры программ работы с таймером
- •Таймер t0
- •Назначение и свойства таймера t0
- •Структура таймера t0
- •Регистры таймера t0
- •Регистр tccr0 (Timer/Counter Control Register)
- •Устройство сравнения таймера t0
- •Режимы работы таймера t0
- •Режим Normal
- •Режим ctc
- •Режим быстрой шим (fastPwMmode)
- •Режим шим с корректировкой фазы (Phase Correct pwm Mode)
- •Таймер t1
- •Назначение и свойства таймера t1
- •Структура таймера t1
- •Регистры таймера t1
- •Регистр tccr1a (Timer/Counter1 Control Register a)
- •Регистр tccr1b (Timer/Counter1 Control Register b)
- •Задание режима генерации сигнала битами wgm13:0
- •Устройство захвата (Input Capture Unit)
- •Режимы работы таймера t1
- •Список режимов работы таймера t1
- •Режим быстрой шим (fast pwm mode) таймера t1
- •Режим шим с корректировкой фазы (Phase Correct pwm Mode) таймера t1
- •Режим шим с корректировкой фазы и частоты (Phase and Frequency Correct pwm Mode) таймера t1
- •Таймер t2
- •Назначение и свойства таймера t2
- •Структура таймера t2
- •Регистры таймера t2
- •Регистр tccr2 (Timer/Counter Control Register)
- •Устройство сравнения таймера t2
- •Режимы работы таймера t2
- •Режим Normal
- •Режим ctc
- •Режим быстрой шим (fast pwm mode)
- •Режим шим с корректировкой фазы (Phase Correct pwm Mode)
- •Асинхронный режим работы таймера t2. Регистр assr (Asynchronous Status Register)
Регистр mcucr (mcu Control Register)
Регистр MCUCR содержит биты управления режимами пониженного энергопотребления MCU и распознаванием сигналов внешних прерываний INT1 и INT0:
бит 7 — SM2 (Sleep Mode bit 2);
бит 6 — SE (Sleep Enable);
бит 5 — SM1 (Sleep Mode bit 1);
бит 4 — SM0 (Sleep Mode bit 0);
бит 3 — ISC11 (Interrupt Sense Control 1 bit 1);
бит 2 — ISC10 (Interrupt Sense Control 1 bit 0);
бит 1 — ISC01 (Interrupt Sense Control 0 bit 1);
бит 0 — ISC00 (Interrupt Sense Control 0 bit 0).
Режимы пониженного энергопотребления
Режимы пониженного энергопотребления позволяют приложению отключить неиспользуемые устройства MCU. Для входа в любой из шести режимов пониженного энергопотребления процессор должен выполнить команду SLEEP при установленном бите SE регистра MCUCR. Рекомендуется устанавливать бит SE непосредственно перед выполнением команды SLEEP и сбрасывать его сразу после выхода из режима пониженного энергопотребления.
Биты SM2, SM1 и SM0 регистра MCUCR определяют режим пониженного энергопотребления (табл.).
Таблица
Режимы пониженного энергопотребления
SM2 |
SM1 |
SM0 |
Sleep Mode |
0 |
0 |
0 |
Idle |
0 |
0 |
1 |
ADC Noise Reduction |
0 |
1 |
0 |
Power-down |
0 |
1 |
1 |
Power-save |
1 |
0 |
0 |
Reserved |
1 |
0 |
1 |
Reserved |
1 |
1 |
0 |
Standby |
1 |
1 |
1 |
Extended Standby |
Режимы Standby и Extended Standby возможны только с использованием внешнего кварца или резонатора.
Выход из режима пониженного энергопотребления происходит при возникновении разрешенного прерывания. После этого MCU останавливается на четыре такта в дополнение к времени запуска, выполняет обработчик прерывания и возобновляет выполнение программы с команды, следующей за командой SLEEP. Состояние регистрового файла и SRAM не изменяется при выходе MCU из режима пониженного энергопотребления. Если во время нахождения MCU в режиме пониженного энергопотребления происходит сброс, выполняется Reset-вектор.
Форма сигналов запроса внешних прерываний
Биты ISC11, ISC10, ISC01, ISC00 регистра MCUCR определяют форму сигналов запроса внешних прерываний INT1 и INT0 соответственно (табл.).
Таблица
Задание формы сигнала прерывания битами ISCx1, ISCx0
-
ISCx1
ISCx0
Описание
0
0
Сигнал запроса прерывания — низкий уровень на входе INTx
0
1
Сигнал запроса прерывания — изменение логического уровня на входе INTx
1
0
Сигнал запроса прерывания — задний фронт импульса на входе INTx (изменение с 1 на 0)
1
1
Сигнал запроса прерывания — передний фронт импульса на входе INTx (изменение с 0 на 1)
Здесь x — 1 или 0.
Бит ISC2 регистра MCUCSR определяет форму сигнала запроса внешнего прерывания INT2:
ISC2 = 0 — прерывание принимается задним фронтом сигнала на входе INT2;
ISC2 = 1 — прерывание принимается передним фронтом сигнала на входе INT2.
Прерывание INT2 является асинхронным. Для гарантированного распознавания длительность импульса должна быть не менее 50 нс.
Существует вероятность поступления сигнала прерывания INT2 при изменении значения бита ISC2. Поэтому следует перед этим запретить прерывание INT2, замаскировав его с помощью соответствующего бита в регистре GICR. После этого бит ISC2 может быть изменен. Затем флаг прерывания INT2 (INTF2) в регистре GIFR необходимо сбросить записью в него единицы и разрешить прерывание INT2.