Регистр SREG - Московский государственный технический

advertisement
Московский государственный технический университет им. Н.Э. Баумана
Факультет информатики и систем управления
Автоматизированные системы обработки информации и управления
Адейкин С.
Романов А.
Романов П.
Справочник к лабораторным работам
«Введение в программирование микроконтроллеров AVR»
Москва 2010г.
Описание выводов микроконтроллера ATmeag16
Обозначение
XTAL1
XTAL2
RESET
Номер вывода
13
12
9
Тип
I
O
I
Описание
Вход тактового генератора
Выход тактового генератора
Вход сброса. При удержании на входе НИЗКОГО
ровня в течении 50 нс выполняется сброс
устройства
AREF
32
P
Вход опорного напряжения для АЦП
AGND
31
P
Общий вывод (аналоговый)
AVcc
30
P
Вывод источника питания АЦП
GND
11
P
Общий вывод
Vcc
10
P
Вывод источника питания
Порт А. 8-разрядный двунаправленный порт ввода/вывода с внутренними
подтягивающими резисторами
PA0(ADC0)
40
I/O A0 (Вход АЦП)
PA1(ADC1)
38
I/O A1 (Вход АЦП)
PA2(ADC2)
38
I/O A2 (Вход АЦП)
PA3(ADC3)
37
I/O A3 (Вход АЦП)
PA4(ADC4)
36
I/O A4 (Вход АЦП)
PA5(ADC5)
35
I/O A5 (Вход АЦП)
PA6(ADC6)
34
I/O A6 (Вход АЦП)
PA7(ADC7)
33
I/O A7 (Вход АЦП)
Порт А. 8-разрядный двунаправленный порт ввода/вывода с внутренними
подтягивающими резисторами
PB0(T0/XCK)
1
I/O B0(Вход внешнего тактового сигнала
таймера/счётчика Т0/Вход/выход внешнего
тактового сигнала USART)
PB1(T1)
2
I/O B1(Вход внешнего тактового сигнала
таймера/счётчика Т1)
PB2(AIN0/INT2) 3
I/O B2(Положительный вход компаратора/Вход
внешнего прерывания)
PB3(AIN1/OC0) 4
I/O B3(Отрицательный вход компаратора/Выход
таймера/счётчика Т0 (Режимы Compare, PWM))
PB4(SS)
5
I/O B4(Выбор Slave-устройства на шине SPI)
PB5(MOSI)
6
I/O
B5(Выход (Master) или вход (Slave) данных
модуля SPI)
PB6(MISO)
7
I/O B6(Вход (Master) или выход (Slave) данных
модуля SPI)
PB7(SCK)
8
I/O B7(Выход (Master) или вход (Slave) тактового
сигнала модуля SPI)
Порт С. 8-разрядный двунаправленный порт ввода/вывода с внутренними
подтягивающими резисторами
PC0 (SCL)
22
I/O C0(Тактовый сигнал модуля TWI)
PC1 (SDA)
23
I/O C1(Линия данных модуля TWI)
PC2 (TCK)
24
I/O C2(Тактовый сигнал JTAG)
PC3 (TMS)
25
I/O C3(Выбор режима JTAG)
PC4 (TDO)
26
I/O C4(Выход данных JTAG)
PC5 (TDI)
27
I/O C5(Вход данных JTAG)
PC6 (TOSC1)
28
I/O C6(Выход для подключения резонатора к
таймеру/счётчику T2)
PC7 (TOSC2)
29
I/O C7(Вход для подключения резонатора к
таймеру/счётчику T2)
Порт С. 8-разрядный двунаправленный порт ввода/вывода с внутренними
подтягивающими резисторами
PD0(RXD)
14
I/O D0(Вход USART)
PD1(TXD)
15
I/O D1(Выход USART)
PD2(INT0)
16
I/O D2(Вход внешнего прерывания)
PD3(INT1)
17
I/O D3(Выход внешнего прерывания)
PD4(OC1B)
18
I/O D4(Выход В таймера/счётчика Т1 (Режимы
Compare, PWM))
PD5(OC1A)
19
I/O D5(Выход А таймера/счётчика Т1 (Режимы
Compare, PWM))
PD6(ICP)
20
I/O D6(Вход захвата таймера/счётчика Т1 (Capture))
PD7(OC2)
21
I/O D7(Выход таймера/счётчика Т2 (Режимы
Compare, PWM))
Память
Обобщённая карта памяти МК ATmega16
Память
программ
FLASH
ОЗУ
$000
32 регистра
общего
назначения
F_END
64 регистра
ввода/вывода
160 доп.
Регистров
ввода/вывода
Внутреннее
статическое
ОЗУ
$0000
$001F
$0020
$005F
$0060
S_END
Память
данных
EEPROM
$000
E_END
Основные регистры
Регистры общего назначения
Регистр
Адрес
R0
…
R13
…
R26
$00
R27
R28
R29
R30
R31
$0D
$1A, регистр X,
мл. байт
$1B, регистр X, ст.
байт
$1C, регистр Y,
мл. байт
$1D, регистр Y, ст.
байт
$1E, регистр Z,
мл. байт
$1F, регистр Z, ст.
байт
Регистры ввода/вывода
Название
SREG
SPH
SPL
OCR0
Адрес
$3F ($5F)
$3E ($5E)
$3D ($5D)
$3C ($5C)
GICR
$3B ($5B)
GIFR
$3A ($5A)
TIMSK
$39 ($59)
TIFR
$38 ($58)
TCCR0
$33 ($53)
TCNT0
$32 ($52)
TCCR1A
$2F ($4F)
TCCR1B
$2E ($4E)
TCNT1H
$2D ($4D)
TCNT1L
$2C ($4C)
Функция
Регистр состояния
Указатель стека, старший байт
Указатель стека, младший байт
Регистр совпадения
таймера/счетчика T0
Общий регистр управления
прерываниями
Общий регистр флагов
прерываний
Регистр маски прерываний от
таймеров/счетчиков
Регистр флагов прерываний от
таймеров/счетчиков
Регистр управления
таймером/счетчиком T0
Счетный регистр
таймера/счетчика T0
Регистр управления A
таймера/счетчика T1
Регистр управления B
таймера/счетчика T1
Счетный регистр
таймера/счетчика T1, старший
байт
Счетный регистр
таймера/счетчика T1, младший
байт
OCR1AH
$2B ($4B)
OCR1AL
$2A ($4A)
OCR1BH
$29 ($49)
OCR1BL
$28 ($48)
ICR1H
$27 ($47)
ICR1L
$26 ($46)
TCCR2
$25 ($45)
TCNT2
$24 ($44)
OCR2
$23 ($43)
UBRRH
UCSRC
$20 ($40)
EEARH
$1F ($3F)
EEARL
$1E ($3E)
EEDR
EECR
PORTA
DDRA
$1D ($3D)
$1C ($3C)
$1B ($3B)
$1A ($3A)
PINA
PORTB
DDRB
$19 ($39)
$18 ($38)
$17 ($37)
PINB
PORTC
DDRC
$16 ($36)
$15 ($35)
$14 ($34)
PINC
PORTD
DDRD
$13 ($33)
$12 ($32)
$11 ($31)
PIND
UDR
$10 ($30)
$0C ($2C)
Регистр совпадения A
таймера/счетчика T1, старший
байт
Регистр совпадения A
таймера/счетчика T1, младший
байт
Регистр совпадения B
таймера/счетчика T1, старший
байт
Регистр совпадения B
таймера/счетчика T1, младший
байт
Регистр захвата
таймера/счетчика T1, старший
байт
Регистр захвата
таймера/счетчика T1, младший
байт
Регистр управления
таймером/счетчиком T2
Счетный регистр
таймера/счетчика T2
Регистр совпадения
таймера/счетчика T2
Регистр скорости передачи
USART, старший байт
Регистр управления и
состояния USART
Регистр адреса EEPROM,
старший байт
Регистр адреса EEPROM,
младший байт
Регистр данных EEPROM
Регистр управления EEPROM
Регистр данных порта А
Регистр направления данных
порта А
Выводы порта А
Регистр данных порта B
Регистр направления данных
порта B
Выводы порта B
Регистр данных порта C
Регистр направления данных
порта C
Выводы порта C
Регистр данных порта D
Регистр направления данных
порта D
Выводы порта D
Регистр данных USART
UCSRA
$0B ($2B)
Регистр управления и
состояния A USART
UCSRB
$0A ($2A)
Регистр управления и
состояния B USART
UBRRL
$09 ($29)
Регистр скорости передачи
USART, младший байт
ACSR
$08 ($28)
Регистр управления и
состояния компаратора
ADMUX
$07 ($27)
Регистр управления
мультиплексором АЦП
ADCSRA
$06 ($26)
ADCH
$05 ($25)
ADCL
$04 ($24)
Регистр управления и
состояния АЦП
Регистр данных АЦП, старший
байт
Регистр данных АЦП, младший
байт
Регистр SREG
SREG - регистр статуса, размещен в пространстве I/O по адресу $3F ($5F) и его биты определяются
как:
7
6
5
4
3
2
1
0
I
T
H
S
V
N
Z
C
Бит 7 - I: Global Interrupt Enable - Разрешение глобального прерывания.
Бит разрешения глобального прерывания для разрешения прерывания должен быть
установлен в состояние 1. Управление разрешением конкретного прерывания
выполняется регистрами маски прерывания GIMSK и TIMSK. Если бит глобального
прерывания очищен (в состоянии 0), то ни одно из разрешений конкретных прерываний,
установленных в регистрах GIMSK и TIMSK, не действует. Бит I аппаратно очищается после
прерывания и устанавливается для последующего разрешения глобального прерывания
командой RETI.
Бит 6 - T: Бит Copy Storage - Бит сохранения копии.
Команды копирования бита BLD (Бит LoaD) и BST (Бит STore) используют бит T как бит
источник и бит назначения при операциях с битами. Командой BST бит регистра
регистрового файла копируется в бит T, командой BLD бит T копируется в регистр
регистрового файла.
Бит 5 - H: Half Carry Flag - Флаг полупереноса
Флаг полупереноса указывает на полуперенос в ряде арифметических операций. Более
подробная информация приведена в описании системы команд.
Бит 4 - S: Sign Бит, S = N V - Бит знака
Бит S всегда находится в состоянии, определяемом логическим исключающим ИЛИ
(exclusive OR) между флагом отрицательного значения N и дополнением до двух флага
переполнения V. Более подробная информация приведена в описании системы команд.
Бит 3 - V: Two’s Complement Overflow Flag - Дополнение до двух флага переполнения
Дополнение до двух флага V поддерживает арифметику дополнения до двух. Более
подробная информация приведена в описании системы команд.
Бит 2 - N: Negative Flag - Флаг отрицательного значения
Флаг отрицательного значения N указывает на отрицательный результат ряда
арифметических и логических операций. Более подробная информация приведена в
описании системы команд.
Бит 1 - Z: Zero Flag - Флаг нулевого значения
Флаг нулевого значения Z указывает на нулевой результат ряда арифметических и
логических операций. Более подробная информация приведена в описании системы
команд.
Бит 0 - C: Carry Flag - Флаг переноса
Флаг переноса C указывает на перенос в арифметических и логических операциях. Более
подробная информация приведена в описании системы команд.
Система команд
Арифметические операции
Мнемоника Описание
ADC Rn,Rk
ADD Rn,Rk
ADIW Rn,K
SUB Rn,Rk
SUBI Rn,K
SBCI Rn,K
SBC Rn,Rk
SBIW Rn,K
COM Rn
NEG Rn
INC Rn
DEC Rn
CP Rn,Rk
CPI Rn,K
CPC Rn,Rk
Сложение c переносом
Сложение без
переноса
Сложение с константой
Вычитание без заема
Вычитание константы
без заема
Вычитание константы с
заемом
Вычитание c заемом
Вычитание константы
Дополнение до 1
Дополнение до 2
Увеличение на 1
Уменьшение на 1
Сравнение регистров
Сравнение регистра с
константой
Сравнение регистров с
заемом
Логические операции
Мнемоника Описание
AND Rn,Rk
ANDI Rn,K
OR Rn,Rk
ORI Rn,K
EOR Rn,Rk
CBR Rn,K
SBR Rn,K
CLR Rn
SER Rn
TST Rn
Логическое "И"
Логическое "И" с
константой
Логическое "ИЛИ"
Логическое "ИЛИ" с
константой
"Исключающее ИЛИ"
Очистка битов
Установка битов
Очистка регистра
Установка регистра
Проверка на 0 и минус
Операция
Изменяемые
флаги
Z, C, N, V, S, H
Z, C, N, V, S, H
Время исполнения
(циклов)
1
1
(Rn+1):Rn <(Rn+1):Rn + K
Rn <- Rn - Rk
Rn <- Rn - K
Z, C, N, V, S
2
Z, C, N, V, S, H
Z, C, N, V, S, H
1
1
Rn <- Rn - K - C
Z, C, N, V, S, H
1
Rn <- Rn - Rk - C
Rn+1):Rn <(Rn+1):Rn - K
Rn <- 0FFh - Rn
Rn <- 0 - Rn
Rn <- Rn + 1
Rn <- Rn - 1
Rn - Rk
Rn - K
Z, C, N, V, S, H
Z, C, N, V, S
1
2
Z, C, N, V, S
Z, C, N, V, S, H
Z, N, V, S
Z, N, V, S
Z, C, N, V, S, H
Z, C, N, V, S, H
1
1
1
1
1
1
Rn - Rk - C
Z, C, N, V, S, H
1
Rn <- Rn + Rk + C
Rn <- Rn + Rk
Операция
Rn <- Rn & Rk
Rn <- Rn & K
Изменяемые
флаги
Z, N, V, S
Z, N, V, S
Время исполнения
(циклов)
1
1
Rn <- Rn | Rk
Rn <- Rn | K
Z, N, V, S
Z, N, V, S
1
1
Rn <- Rn ^ Rk
Rn <- Rn &
(0FFh-K)
Rn <- Rn | K
Rn <- Rn ^ Rn
Rn <- 0FFh
Rn <- Rn & Rn
Z, N, V, S
Z, N, V, S
1
1
Z, N, V, S
Z, N, V, S
Z, N, V, S
1
1
1
1
Операции перехода
Мнемоника Описание
JMP K
CALL K
RJMP K
RCALL K
IJMP
Абсолютный переход
Абсолютный вызов
Относительный переход
Относительный вызов
Косвенный переход
ICALL
Косвенный вызов
EIJMP
Косвенный переход
EICALL
Косвенный вызов
RET
RETI
BREQ K
Выход из процедуры
Выход из процедуры
прерывания
Сравнить и пропустить,
если равно
Пропустить, если Rn(K) =
0
Пропустить, если Rn(K) =
1
Пропустить, если IR(K) =
0
Пропустить, если IR(K) =
1
Перейти, если SREG(b) =
1
Перейти, если SREG(b) =
0
Перейти, если Z = 1
BRNE K
Перейти, если Z = 0
BRCC K
Перейти, если C = 0
BRCS K
Перейти, если C = 1
BRHC K
Перейти, если H = 0
BRHS K
Перейти, если H = 1
BRSH K
Перейти, если больше
или равно
Перейти, если меньше
CPSE Rn,Rk
SBRC Rn,K
SBRS Rn,K
SBIC IR,K
SBIS IR,K
BRBS b,K
BRBC b,K
BRLO K
BRPL K
BRMI K
Перейти, если больше
или равно 0
Перейти, если меньше 0
BRTC K
Перейти, если больше
или равно (со знаком)
Перейти, если меньше
(со знаком)
Перейти, если T = 0
BRTS K
Перейти, если T = 1
BRGE K
BRLT K
Операция
Изменяемые
флаги
PC <- K
PC <- K
PC <- PC + K + 1
PC <- PC + K + 1
PC(15:0) <- Z,
PC(21:16) <- 0
PC(15:0) <- Z,
PC(21:16) <- 0
PC(15:0) <- Z,
PC(21:16) <- EIND
PC(15:0) <- Z,
PC(21:16) <- EIND
PC <- STACK
PC <- STACK
-
Время
исполнения
(циклов)
3
4 (5)
2
2
2
-
2
-
2
-
2
I
4 (5)
4 (5)
if (Rn = Rk) PC <PC + 2 or 3
if (Rn(K) = 0) PC
<- PC + 2 or 3
if (Rn(K) = 1) PC
<- PC + 2 or 3
if (IR(K) = 0) PC <PC + 2 or 3
if (IR(K) = 1) PC <PC + 2 or 3
if (SREG(b) = 1)
PC <- PC + K + 1
if (SREG(b) = 0)
PC <- PC + K + 1
if (Z = 1) PC <- PC
+K+1
if (Z = 0) PC <- PC
+K+1
if (C = 0) PC <- PC
+K+1
if (C = 1) PC <- PC
+K+1
if (H = 0) PC <- PC
+K+1
if (H = 1) PC <- PC
+K+1
if (C = 0) PC <- PC
+K+1
if (C = 1) PC <- PC
+K+1
if (N = 0) PC <- PC
+K+1
if (N = 1) PC <- PC
+K+1
if (N + V = 0) PC
<- PC + K + 1
if (N + V = 1) PC
<- PC + K + 1
if (T = 0) PC <- PC
+K+1
if (T = 1) PC <- PC
+K+1
-
1/2/3
-
1/2/3
-
1/2/3
-
1/2/3
-
1/2/3
-
1/2
-
1/2
-
1/2
-
1/2
-
1/2
-
1/2
-
1/2
-
1/2
-
1/2
-
1/2
-
1/2
-
1/2
-
1/2
-
1/2
-
1/2
-
1/2
BRVC K
Перейти, если V = 0
BRVS K
Перейти, если V = 1
BRIE K
Перейти, если I = 0
BRID K
Перейти, если I = 1
Операции перемещения данных
Мнемоника Описание
MOV Rn,Rk
MOVW Rn,Rk
LD Rn, Ri
LD Rn, Ri+
Копировать Rk в Rn
Копировать регистровую
пару
Загрузить из памяти
данных, используя
индексный регистр
LD Rn, -Ri
LDD Rn, Ri + q
LDI Rn,K
LDS Rn,K
LPM
LPM Rn, Z
LPM Rn, Z+
ELPM
ELPM Rn, Z
ELPM Rn, Z+
SPM
STS K,Rn
ST Ri, Rn
ST Ri+, Rn
Загрузить константу в
регистр
Загрузить в регистр из
памяти данных
Загрузить из памяти
программ
Загрузить в память
программ
Загрузить в память
данных
Загрузить в память
данных, используя
индексный регистр
ST -Ri, Rn
STD Ri + q, Rn
IN Rn,I
OUT I,Rn
PUSH Rn
POP Rn
SWAP Rn
Прочитать I/O-регистр I в
Rn
Записать Rn в I/O-регистр
I
Сохранить Rn в стеке
Восстановить Rn из стека
Обмен тетрад в регистре
if (V = 0) PC <- PC
+K+1
if (V = 1) PC <- PC
+K+1
if (I = 0) PC <- PC
+K+1
if (I = 1) PC <- PC
+K+1
-
1/2
-
1/2
-
1/2
-
1/2
Операция
Изменяемые
флаги
Rn <- Rk
Rn+1:Rn <Rk+1:Rk
Rn <- (Ri)
Rn <- (Ri), Ri <- Ri
+1
Ri <- Ri - 1, Rn <(Ri)
Rn <- (Ri + q)
Rn <- K
-
Время
исполнения
(циклов)
1
1
-
2
2
-
2
-
2
1
Rn <- (K)
-
2
R0 <- (Z)
Rn <- (Z)
Rn <- (Z), Z <- Z + 1
R0 <- (RAMPZ:Z)
Rn <- (RAMPZ:Z)
Rn <- (RAMPZ:Z), Z
<- Z + 1
(Z) <- R1:R0
-
3
3
3
3
3
3
-
3
(K) <- Rn
-
2
(Ri) <- Rn
(Ri) <- Rn, Ri <- Ri
+1
Ri <- Ri - 1, (Ri) <Rn
(Ri + q) <- Rn
Rn <- I
-
2
2
-
2
-
2
1
I <- Rk
-
1
STACK <- Rn
Rn <- STACK
Rn(0...3) <Rn(4...7), Rn(4...7)
<- Rn(0...3)
-
2
2
1
Битовые операции
Мнемоника Описание
LSL Rn
Логический сдвиг влево
LSR Rn
Логический сдвиг вправо
ROL Rn
Сдвиг влево через
перенос
ROR Rn
Сдвиг вправо через
перенос
ASR Rn
Арифметический сдвиг
вправо
Установить бит в SREG
Сбросить бит в SREG
Сбросить флаг переноса
Установить флаг
переноса
Сбросить флаг знака
Установить флаг знака
Сбросить флаг нуля
Установить флаг нуля
Сбросить флаг
разрешения прерываний
Установить флаг
разрешения прерываний
Сбросить флаг знака
Установить флаг знака
Сбросить флаг
переполнения
Установить флаг
переполнения
Сбросить флаг T
Установить флаг T
Сбросить флаг
половинного переноса
Установить флаг
половинного переноса
Сбросить бит в I/Oрегистре
Установить бит в I/Oрегистре
Загрузить флаг T битом
из регистра
Загрузить бит в регистре
из флага T
BSET b
BCLR b
CLC
SEC
CLN
SEN
CLZ
SEZ
CLI
SEI
CLS
SES
CLV
SEV
CLT
SET
CLH
SEH
CBI I,b
SBI I,b
BST Rn,b
BLD Rn,b
Операция
Изменяемые
флаги
R(n+1) <- R(n),
R(0) <- 0, C <R(7)
R(n) <- R(n+1),
R(7) <- 0, C <R(0)
R(n+1) <- R(n),
R(0) <- C, C <R(7)
R(n) <- R(n+1),
R(7) <- C, C <R(0)
R(n) <- R(n+1),
R(7) <- R(7)
SREG(b) <- 1
SREG(b) <- 0
C <- 0
C <- 1
S, Z, C, N, V, H
Время
исполнения
(циклов)
1
S, Z, C, N, V
1
S, Z, C, N, V, H
1
S, Z, C, N, V
1
Z, C, N, V
1
SREG(b)
SREG(b)
C
C
1
1
1
1
N <- 0
N <- 1
Z <- 0
Z <- 1
I <- 0
N
N
Z
Z
I
1
1
1
1
1
I <- 1
I
1
S <- 0
S <- 1
V <- 0
S
S
V
1
1
1
V <- 1
V
1
T <- 0
T <- 1
H <- 0
T
T
H
1
1
1
H <- 1
H
1
I(b) <- 0
-
1
I(b) <- 1
-
1
I(b) <- 0
-
1
I(b) <- 1
-
1
Таблица векторов прерываний МК ATmega16
лица векторов прерываний модели ATmega16
№
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
Адрес
$0002
$0004
$0006
$0008
$000A
$000C
$000E
$0010
$0012
$0014
$0016
$0018
$001A
$001C
$001E
$0020
$0022
$0024
$0026
$0028
Источник
INT0
INT1
TIMER2 COMP
TIMER2 OVF
TIMER1 CAPT
TIMER1 COMPA
TIMER1 COMPB
TIMER1OVF
TIMER0OVF
SPI, STC
USART,RXC
USART,UDRE
USART,TXC
ADC
EE_RDY
ANA_COMP
TWI
INT2
TIMER0 COMP
SPM_RDY
Описание
Внешнее прерывание 0
Внешнее прерывание 1
Совпадение таймера/счетчика Т2
Переполнение таймера/счетчика Т2
Захват таймера/счетчика Т1
Совпадение «А» таймера/счетчика Т1
Совпадение «В» таймера/счетчика Т1
Переполнение таймера/счетчика Т1
Переполнение таймера/счетчика Т0
Передача по SPI завершена
USART, прием завершен
Регистр данных USART пуст
USART, передача завершена
Преобразование АЦП завершено
EEPROM, готово
Аналоговый компаратор
Прерывание от модуля TWI
Внешнее прерывание 2
Совпадение таймера/счетчика Т0
Готовность SPM
Если прерывания в работе микроконтроллера не предусматриваются, то на месте таблицы векторов прерываний может быть
размещена часть основной программы.
Управление таймерами
Регистр TIMSK
Название
OCIE2
TOIE2
TICIE1
OCIE1A
OCIE1A
TOIE1
OCIE0
TOIE0
Бит
7
6
5
4
3
2
1
0
Описание флагов разрешения прерываний
По событию «Совпадение» таймера-счетчика T2
По переполнению таймера-счетчика T2
По событию «Захват» таймера-счетчика T1
По событию «Совпадение А» таймера-счетчика T1
По событию «Совпадение В» таймера-счетчика T1
По переполнению таймера-счетчика T1
По событию «Совпадение» таймера-счетчика T0
По переполнению таймера-счетчика T0
Регистр TIFR
Название
OCF2
TOV2
ICF1
OCF1A
OCF1B
TOV1
OCF0
TOV0
Бит
7
6
5
4
3
2
1
0
Описание флагов прерываний
По событию «Совпадение» таймера-счетчика T2
По переполнению таймера-счетчика T2
По событию «Захват» таймера-счетчика T1
По событию «Совпадение А» таймера-счетчика T1
По событию «Совпадение В» таймера-счетчика T1
По переполнению таймера-счетчика T1
По событию «Совпадение» таймера-счетчика T0
По переполнению таймера-счетчика T0
Регистр TCCR0(2)
Бит Название
7
FOCх
6,3
CTCх,
PWMх
5,4
COMх1,
COMх0
2-0
CSх2…
CSх0
Описание назначения
Принудительное изменение состояния вывода OCх в режимах Normal и CTC
(зависит от битов COMх0 и COMх1)
Выбор режима работы таймера-счетчика
Режим CTCх PWMх Описание режима работы
0
0
0
Normal (суммирующий счетчик)
1
0
1
Phase correct PWM
2
1
0
CTC (сброс при совпадении)
3
1
1
Fast PWM
Режим работы блока сравнения. Определяет состояние вывода OC0 (ОС2) при
наступлении события «Совпадение». Для режимов Normal и CTC доступны такие
состояния
COMх1
COMх0
Описание состояния вывода OCх
0
0
Таймер отключен от вывода OСх
0
1
Изменение на противоположное
1
0
Вывод сбрасывается в «0»
1
1
Вывод устанавливается в «1»
Управление тактовым сигналом. Эти биты выбирают один из выходов
предделителя для получения счетных импульсов, а также определяют старт и
останов таймеров.
Выбор источника тактового сигнала для таймеров Т0 и Т2
CSх2
Для таймера Т0
0
0
0
0
1
1
1
1
Для таймера Т2
0
0
CSх1
CSх0
Источник тактового сигнала
0
0
1
1
0
0
1
1
0
1
0
1
0
1
0
1
Таймер-счетчик Т0 остановлен
Системный тактовый сигнал CLKsys
CLKsys / 8
CLKsys / 64
CLKsys / 256
CLKsys / 1024
Внешний вывод Т0, счет по спаду импульса (1→0)
Внешний вывод Т0, счет по фронту импульса (0→1)
0
0
0
1
0
0
1
1
1
1
1
1
0
0
1
1
0
1
0
1
0
1
Таймер-счетчик Т2 остановлен
Системный тактовый сигнал CLKsys (при AS2=0) или
Дополнительный кварцевый резонатор (при AS2=1)
CLKsys / 8 (при AS2=0) или CLKosc / 8 (при AS2=1)
CLKsys / 32 (при AS2=0) или CLKosc / 32 (при AS2=1)
CLKsys / 64 (при AS2=0) или CLKosc / 64 (при AS2=1)
CLKsys / 128 (при AS2=0) или CLKosc / 128 (при AS2=1)
CLKsys / 256 (при AS2=0) или CLKosc / 256 (при AS2=1)
CLKsys /1024 (при AS2=0) или CLKosc /1024 (при AS2=1)
Настройка поведения вывода OC0 (OC2) в режиме FastPWM
COMх1
0
0
1
COM0х0
0
1
0
1
1
Описание состояния вывода OC0 (ОС2)
Таймер-счетчик Т0 (Т2) отключен от вывода OC0 (ОС2)
Зарезервировано и не используется
Вывод сбрасывается в «0» при достижении равенства регистров TCNTх и OCRх.
Устанавливается в «1» при достижении TCNTх = 0x00 (неинвертированный
ШИМ)
Вывод устанавливается в «1» при достижении равенства регистров TCNTх и
OCRх. Сбрасывается в «0» при достижении TCNTх = 0x00 (инвертированный
ШИМ)
Регистры TCCR1А и TCCR1B
Принципы управления таймером Т1 через регистр TCCR1А
Бит Название
7,6 COM1A1,
COM1A0
5,4
COM1B1,
COM1B0
3,2
FOC1A,
FOC1B
WGM1,
WGM0
1,0
Описание назначения
Режим работы блока сравнения А. Разряды определяют поведение вывода
OC1A при наступлении события «Совпадение» в зависимости от режима работы
таймера. Для режимов Normal и CTC доступны такие состояния
COM1A1
COM1A0
Описание состояния вывода OC1A
0
0
Таймер отключен от вывода OC1A
0
1
Изменение на противоположное
1
0
Вывод сбрасывается в «0»
1
1
Вывод устанавливается в «1»
Режим работы блока сравнения B. Определяет состояние вывода OC1B при
наступлении события «Совпадение». Для режимов Normal и CTC доступны такие
состояния
COM1B1
COM1B0
Описание состояния вывода OC1B
0
0
Таймер отключен от вывода OC1B
0
1
Изменение на противоположное
1
0
Вывод сбрасывается в «0»
1
1
Вывод устанавливается в «1»
Принудительное изменение состояния выводов OC1A и OC1B в режимах Normal
и CTC (зависит от битов COMnxi)
Режим работы таймера счетчика Т1. Используются совместно с битами WGM3,
WGM2 регистра TCCR1B – см. табл. 27.8
Принципы управления таймером Т1 через регистр TCCR1B
Бит
7
6
5
4,3
Название
ICNC1
ICES1
–
WGM3,
WGM2
2…0 SC12…
SC10
Описание назначения
Управление схемой подавления помех блока захвата
Выбор активного фронта сигнала захвата
Не используется
Режим работы таймера счетчика Т1. Используются совместно с битами WGM1,
WGM0 регистра TCCR1А – см. табл. 3.11
Управление тактовым сигналом. Разряды определяют источник тактового
сигнала для таймера Т1. Настройка соответствует табл.27.4 (как для таймера Т0).
Выбор режима работы таймера Т1
WGM13
WGM12
WGM11
WGM10
Режим работы
0
0
0
0
0
0
0
0
1
1
1
0
0
0
0
1
1
1
1
0
0
0
0
0
1
1
0
0
1
1
0
0
1
0
1
0
1
0
1
0
1
0
1
0
Normal, 16-разрядный счет
Phase correct PWM, 8-разрядный
Phase correct PWM, 9-разрядный
Phase correct PWM, 10-разрядный
CTC (сброс при совпадении)
Fast PWM, 8-разрядный
Fast PWM, 9-разрядный
Fast PWM, 10-разрядный
Phase and Frequency Correct PWM
Phase and Frequency Correct PWM
Phase correct PWM
Модуль
счета
$FFFF
$00FF
$01FF
$03FF
OCR1A
$00FF
$01FF
$03FF
ICR1
OCR1A
ICR1
1
1
1
1
1
0
1
1
1
1
1
0
0
1
1
1
0
1
0
1
Phase correct PWM
CTC (сброс при совпадении)
Зарезервировано
Fast PWM
Fast PWM
OCR1A
ICR1
–
ICR1
OCR1A
Download