- •Микроконтроллеры
- •Базовая информация о микроконтроллерах
- •Сущность и назначение микроконтроллера. Семейства микроконтроллеров
- •Состав микроконтроллера
- •Назначение микроконтроллера
- •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)
Таймеры микроконтроллера aTmega8535
Общая информация о таймерах микроконтроллера aTmega8535
Множество таймеров aTmega8535
В состав микроконтроллера ATmega8535 входят таймеры:
8-битный таймер T0;
16-битный таймер T1;
8-битный таймер T2.
В состав каждого таймера входит определенное множество регистров, обеспечивающих его функциональность. Кроме того, имеются два регистра, являющихся общими для всех таймеров:
регистр TIMSK (Timer/Counter Interrupt Mask Register), с помощью которого разрешаются или запрещаются прерывания таймеров;
регистр TIFR (Timer/Counter Interrupt Flag Register), в состав которого входят флаги прерываний, устанавливающиеся при наступлении соответствующих событий.
Каждому таймеру соответствует два события, при наступлении которых может быть сгенерировано прерывание: переполнение счетного регистра и совпадение значений счетного регистра и регистра сравнения. У таймера T1 имеется еще одно событие, по которому может быть сгенерировано прерывание — захват.
Также к работе таймеров имеют отношение два младших бита регистра SFIOR (Special Function IO Register):
бит 1 — PSR2 (Prescaler Reset Timer/Counter2);
бит 0 — PSR10 (Prescaler Reset Timer/Counter1 and Timer/Counter0).
Когда в бит PSR записывается единица, делитель частоты соответствующего таймера сбрасывается. После завершения операции бит сбрасывается аппаратно.
Регистр timsk (Timer/Counter Interrupt Mask Register)
Формат регистра TIMSK:
бит 7 — OCIE2 (Timer/Counter2 Output Compare Match Interrupt Enable);
бит 6 — TOIE2 (Timer/Counter2 Overflow Interrupt Enable);
бит 5 — TICIE1 (Timer/Counter1 Input Capture Interrupt Enable);
бит 4 — OCIE1A (Timer/Counter1 A Output Compare Match Interrupt Enable);
бит 3 — OCIE1B (Timer/Counter1 B Output Compare Match Interrupt Enable);
бит 2 — TOIE1 (Timer/Counter1 Overflow Interrupt Enable);
бит 1 — OCIE0 (Timer/Counter0 Output Compare Match Interrupt Enable);
бит 0 — TOIE0 (Timer/Counter0 Overflow Interrupt Enable).
Регистр tifr (Timer/Counter Interrupt Flag Register)
Формат регистра TIFR:
бит 7 — OCF2 (Output Compare Flag 2);
бит 6 — TOV2 (Timer/Counter2 Overflow Flag);
бит 5 — ICF1 (Input Capture Flag);
бит 4 — OCF1A (Output Compare Flag 1A);
бит 3 — OCF1B (Output Compare Flag 1B);
бит 2 — TOV1 (Timer/Counter1 Overflow Flag);
бит 1 — OCF0 (Output Compare Flag 0);
бит 0 — TOV0 (Timer/Counter0 Overflow Flag).
Примеры программ работы с таймером
Пример 1.
;вход PINA
;выход PORTC
;преобразование осуществляется при прерывании
;по переполнению таймера T0
.include "m8535def.inc"
.equ mask = 0x0F
.equ cnt = 0xF0
.org 0x00
rjmp RESET
.org 0x09
rjmp TIM0_OVF
.org 0x15
RESET: ser r16
out DDRC, r16
clr r16
out DDRA, r16
ldi r16, low(RAMEND)
out spl, r16
ldi r16, high(RAMEND)
out sph, r16
ldi r16, cnt
out TCNT0, r16
ldi r16, (1<<TOIE0)
out TIMSK, r16
ldi r16, 0x01
out TCCR0, r16
sei
main: rjmp main
TIM0_OVF: clr r16
out TCCR0, r16
in r16, PINA
andi r16, mask
out PORTC, r16
ldi r16, cnt
out TCNT0, r16
ldi r16, 0x01
out TCCR0, r16
reti
Пример 2.
;вход PINA
;выход PORTC
;преобразование осуществляется при прерывании
;по совпадению таймера T0
.include "m8535def.inc"
.equ mask = 0x0F
.equ cnt = 0x0A
.org 0x00
rjmp RESET
.org 0x13
rjmp TIM0_COMP
.org 0x15
RESET: ldi r16, 0xFF
out DDRC, r16
clr r16
out DDRA, r16
ldi r16, low(RAMEND)
out spl, r16
ldi r16, high(RAMEND)
out sph, r16
clr r16
out TCNT0, r16
ldi r16, cnt
out OCR0, r16
ldi r16, (1<<OCIE0)
out TIMSK, r16
ldi r16, 0x09
out TCCR0, r16
sei
main: rjmp main
TIM0_COMP: clr r16
out TCCR0, r16
in r16, PINA
andi r16, mask
out PORTC, r16
clr r16
out TCNT0, r16
ldi r16, 0x09
out TCCR0, r16
reti