Смекни!
smekni.com

Работа периферийных устройств (стр. 8 из 9)

В таймере-счетчике Т/СО пересчетная схема ПС делит частоту тактового сигнала на 64, 256 и 1024. Сигнал с трех выходов пересчетной системы поступает в схему управления СУ1, в которую также поступают сигнал с вывода ТО, тактовый сигнал микроконтроллера и сигнал с дополнительного выхода пересчетной схемы модулятора.

Схема управления СУ1 в зависимости от комбинации состояний Разрядов CS00-CS02 регистра TCCR0 (№ $ 04) передает один из сиг-Налов на счетный вход базового счетчика TCNT0 (№ $03) в соответствии с табл.21.

При переполнении базового счетчика устанавливается в единичное состояние разряд TOV0 регистра IFR (№ $05) и при единичном состоянии разряда TOIE0 регистра ICR (№ $06) в блок прерываний Поступает запрос прерывания Т/СО OVF.

Кроме того, сигнал переполнения поступает в схему управления СУ2, которая в зависимости от комбинации состояний разрядов ООМОО и ООМ01 регистра TCCRO изменяет состояние разряда PORT2 регистра PORTA в соответствии с табл.22.

Таблица 21

CS02 CS01 CS00 Сигнал
0 0 0 нет
0 0 1 СК
0 1 0 пcм
0 1 1 СК/64
1 0 0 СК/256
1 0 1 СК/1024
1 1 0 отрицательный фронт на ТО
1 1 1 положительный фронт на ТО

Таблица 22

ООМ01 ООМОО (PORTA2)
0 0 не изменяется
0 1 изменяется
1 0 0
1 1

При установке в единичное состояние разряда FOV0 регистра TCCRO сбрасывается в пулевое состояние базовый счетчик TCNT0 и поступает сигнал переполнения в схему СУ2.

Запрос прерывания Т/СО OVF при этом не формируется. Разряд FOV0 сбрасывается в нулевое состояние аппаратно.

10. Блок прерываний

Блок прерывании принимает запросы прерывания и организует переход к выполнению определенной прерывающей программы. Запросы прерывания поступают из внешних источников и из источников, расположенных в различных устройствах микроконтроллера.

В качестве входов для приема запросов из внешних источников используются выводы параллельных портов ввода-вывода, для которых эта функция является альтернативной. При выполнении альтернативной функции вывод порта имеет альтернативное имя INTx (х = 0, 1,..., 7).

Запрос прерывания из внешнего источника может быть представлен низким уровнем сигнала (L), переходом от высокого уровня к низкому (HL), переходом от низкого уровня к высокому (LH) или переходом любого направления (LH/HL). Выбор способа представления определяется комбинацией состоянии разрядов ISCxO и ISCxl в регистре MCUCR (№ $D5), в микроконтроллере типа ml03 - в регистре EICR (№ $ЗА).

В табл.23 указаны способы представления запроса прерывания при разных комбинациях состояний названных разрядов.

Таблица 23

ISCX1 ISCX0 Способ
0 0 L
0 1 LH/HL
1 0 HL
1 1 LH

В микроконтроллерах серии ATtiny в качестве запроса прерывания могут использоваться любые изменения значения сигнала (для микроконтроллеров типа t1l, t12, t15) или низкий уровень сигнала (для микроконтроллера типа г28) на любом выводе порта РВ. Запрос прерывания, формируемый при этом, имеет имя I/O PINS, а в микроконтроллере типа t28 - LLI PINS.

В табл.24 указаны выводы параллельных портов, выполняющие альтернативную функцию приема запроса прерывания из внешнего источника, и отмечены особенности представления запроса прерывания у микроконтроллеров разных типов.

Любой запрос прерывания поступает в блок прерываний, если прерывания в микроконтроллере разрешены (I = SREG.7 = 1) и разрешено прерывание по данному запросу. Прерывание по отдельному запросу разрешено, если в единичном состоянии находится маскирующий разряд (MASK) для данного запроса прерывания, расположенный в одном из регистров ввода-вывода.

При появлении запроса прерывания устанавливается в единичное состояние флажковый разряд (FLAG) для данного запроса прерывания, расположенный в одном из регистров ввода-вывода. Состояние флажкового разряда опрашивается аппаратно и, кроме того, может быть опрошено программными средствами.

В табл.25 указаны устройства, в которых расположены источники запросов прерывания, приведены в виде дроби имена маскирующих и флажковых разрядов (в числителе) и регистров ввода-вывода, в которых они расположены, (в знаменателе) у микроконтроллеров разных типов.

Таблица 24

Тип МК INTO INT1 I/O PINS
t11, t12 PB1 PBO-PB5 (2)
t15 PB2 PBO-PB5 (2)
2323, 2343 PB1 (1)
1200 PD2 (1)
2313 PD2 (1) PD3 (1)
t28 PB3 PB4 PBO-PB7 (3)
4433 PD2 PD3
8515 PD2 (1) PD3 (1)
8535 PD2 (1) PD3 (1)
m163 PD2 PD3
m103 INTO-INT3 INT4-INT7
PDO-PD3 (3) PE4 - PE7 (1)
(1) - кроме LH/HL, (2) - только LH/HL, (3) - только L

Таблица 25

Устройство Запрос прерывания MASK FLAG
CPU, WDT RESET
Внешние INT0 INT1 INT0/GIMSK INT1/GIMSK INTF0/GIFR INTF1/GIFR
INT0 - INT3 INT4 - INT7 INT0 - INT3/EIMSK INT4 - INT7/EIMSK INTF4 - INTF7/EIFR
I/O PINS LLI PINS PCIE/GIMSK LLIE/ICR PCIF/GIFR
T/C2 T/C2 COMP T/C2 OVF OCIE2/TIMSK TOIE2/TIMSK OCF2/TIFR TOV2/TIFR
T/C1 T/C1 CAPT T/C1 COMPA T/C1 COMP B T/C1 OVF TICIE1/TIMSK OCIE1A/ TIMSK* OCIE1B/ TIMSK TOIE1/ TIMSK ICF1/TIFR OCF1A/TIFR* OCF1B/TIFR TOV1/TIFR
T/C0 T/C0 COMP T/C0 OVF OCIE0/TIMSK TOIE0/TIMSK OCF0/TIFR TOV0/TIFR
SPI SPI STC SPIE/SPCR SPIF/SPSR
UART UART RXC UART UDRE UART TXC RXCIE/UCR** UDRIE/UCR RXC/USR** UDRE/USR
ADC ADC CC ADIE/ADCSR ADIF/ADCSR
EEPROM EE RDY EERIE/EECR
AC ANA COMP ACIE/ACSR ACI/ACSR
TWSI TWSI TWIE/TWCR TWINT/TWCR
* - у МК типа 4433 OCIE1 и OCF1 * - у МК типа 163 UCR = UCSRB USR = UCSRA

При поступлении запроса блок прерываний организует аппаратный безусловный переход к выполнению команды, адрес которой (вектор прерывания) однозначно связан с именем запроса прерывания. По этому адресу в микроконтроллерах серий ATtiny и АТ90 должна быть записана команда безусловного перехода с мнемокодом RJMP k (№ 85), машинный код который имеет формат "слово", а в микроконтроллерах серии ATmega может быть записана команда безусловного перехода с мнемокодом JMP, и машинный код которой имеет формат "два слова". По этой команде выполняется программный безусловный переход к первой команде соответствующей прерывающей программы, которая может быть расположена в любом месте в Flash ROM.

При одновременном поступлении в блок прерываний нескольких запросов в блоке выделяется запрос с наиболее высоким приоритетом среди всех поступивших и выполняется переход по адресу, соответствующему этому запросу.

В табл.26 и 27 указаны в шестнадцатеричном коде адреса (векторы прерывания), по которым совершается аппаратный переход у микроконтроллеров разных типов. Высший приоритет имеет запрос прерывания RESET. Приоритет других запросов убывает в порядке увеличения адреса, по которому совершается переход. У микроконтроллеров разных типов запросам прерывания с одинаковым именем соответствуют разные векторы перехода.

Таблица 26

Запрос прерывания Тип MK
t11 t12 t15 2323 2343 1200
RESET 000 000 000 000 000 000
INTO 001 001 001 001 001 001
I/O PINS 002 002 002
T/C1 COMP 003
T/C1 OVF 004
T/CO OVF 003 003 005 002 002 002
EERDY 004 006
ANA COMP 004 005 007 003
ADCCC 008

При переходе к выполнению прерывающей программы разряд 1 в регистре SREG аппаратно сбрасывается в нулевое состояние и прерывания по всем запросам оказываются запрещенными. Разряд I устанавливается в единичное состояние при выполнении команды возврата из прерывающей программы с мнемокодом RETI (№ 90). Разряд I может быть установлен в единичное состояние программно по команде SEI в прерывающей программе. Программа, которая выполняется при пуске микроконтроллера и по запросу RESET, не содержит команды RETI и для выполнения прерываний должна содержать команду SEI.

Прерывание по запросу RESET выполняется вне зависимости от состояния разряда I в регистре SREG. Опрос состояния входов блока прерываний выполняется в каждом такте. При обнаружении запроса код из счетчика команд заносится в стек, на что затрачивается 2 такта, и выполняется безусловный переход по команде с мнемокодом RJMP к (2 такта) или JMP k (3 такта). Если при обнаружении запроса прерывания процессор не закончил выполнение текущей многотактовой команды, до перехода к прерывающей программе завершается выполнение этой команды.