Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Konspekt_PMK-rus.doc
Скачиваний:
2
Добавлен:
01.07.2025
Размер:
4 Мб
Скачать
☆

4.10.1.1 Сброс по выключению питания

Цепь сброса по включению питания обеспечивает запрет включения процессора до тех пор, пока напряжение питания не достигнет безопасного уровня. После того, как напряжение питания достигнет уровня включения, процессор не включается до тех пор, пока встроенный таймер не обработает несколько рабочих периодов сторожевого таймера. Общее время сброса состоит из суммы времени Tpor и времени Tout (табл.4.2).

Таблица 4.2

Характеристики сигнала сброса (Vcc=5.0 B).

Min

Typ

Max

Vpot

Напряжение срабатывания сброса по включению питания

1.4

2

2.6

В

Vrst

Напряжение срабатывания сброса по выводу RESET

0,6 VCC

В

Tpor

Сигнал сброса по включению питания

2

3

4

мс

Ttout

Задержка на отработку сброса

(FSTRT не запрограммирован)

11

16

21

мс

Ttout

Задержка на отработку сброса

(FSTRT запрограммирован)

1.0

1.1

1.2

мс

Если к процессору подключен керамический резонатор или другой, обеспечивающий быстрое включение, для уменьшения времени сброса можно запрограммировать бит-перемычку FSTRT.

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

4.10.1.2 Внешний сброс

Внешнее прерывание генерируется низким уровнем на выводе RESET. Вывод должен удерживаться в низком состоянии, по крайней мере, на два периода тактовой частоты. После того как напряжение на выводе RESET достигнет значения Vrst, внутренний таймер запустит процессор после отработки времени Ttout.

4.10.1.3 Сброс от сторожевого таймера

После переполнения сторожевого таймера, генерируется короткий им­пульс сброса длительностью в один период тактовой частоты. По окончанию этого импульса внутренний таймер начинает отсчитывать время Ttout. Подробно работа сторожевого таймера будет рассмотрена дальше.

4.10.2 Обработка прерываний

AT90S8535 имеет два регистра маски прерываний GIMSK - общий ре­гистр маски прерываний, расположенный по адресу $3B($5B) и TIMSK - регистр маски прерываний от таймера/счетчика - по адресу $39($59).

Когда возникает прерывание, общий бит разрешения прерываний I очи­щается (ноль) и прерывания запрещаются. Программа пользователя может установить этот бит для разрешения прерываний. Флаг разрешения преры­ваний I устанавливается в 1 при выполнении команды выхода из прерыва­ния - RETI.

Для прерываний включаемых статическими событиями (т.е. переключа­емыми уровнем) (например совпадение значения счетчика/таймера 1 с регистром совпадения) флаг прерывания взводится, когда происходит событие. Ес­ли флаг прерывания очищен и присутствует условие возникновения преры­вания, флаг не будет установлен, пока не произойдет следующее собы­тие.

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

4.10.2.1 General Interrupt Mask Register (GIMSK)

Бит

$3B($5B)

R/W

Нач.знач.

7

6

5

4

3

2

1

0

GIMSK

INT1

INT0

-

-

-

-

-

-

R/W

R/W

R

R

R

R

R

R

0

0

0

0

0

0

0

0

Рисунок 4.7 - Общий регистр маски прерываний

Бит 7 – INT1 (External Interrupt Request 1 Enable). Разрешение запроса внешнего прерывания 1 (см.рис.4.5, табл.4.1). Биты управления запуском прерывания (ISC11 и ISC10) в регистре управления микроконтроллером (MCUCR) определяют, по какому событию отрабатывается прерывание - по спадающему или нарастающему фронту, или же по уровню. Если вывод INT1 используется для работы с внешним источником прерывания, бит DDD0 в регистре направле­ния данных порта D (DDRD), должен быть сброшен в 0, чтобы вывод INT1 работал как вход.

Бит 6 - INT0 (External Interrupt Request 0 Enable). Разрешение запроса внешнего прерывания 0 (см.рис.4.5, табл.4.1). Биты управления запуском прерывания (ISC01 и ISC00) в регистре управления микроконтроллером (MCUCR) опре­деляют, по какому событию отрабатывается прерывание - по спадающему или нарастающему фронту или же по уровню. Если вывод INT0 используется для работы с внешним источником прерывания, бит DDD2 в регистре направле­ния данных порта D (DDRD), должен быть сброшен в 0, чтобы вывод INT0 работал как вход.

Биты 5..0 - зарезервированы. В AT90S8535 эти биты зарезервированы и всегда читаются как 0.

4.10.2.2 General Interrupt Flag Register (GIFR)

Бит

$3A($5A)

R/W

Нач.знач.

7

6

5

4

3

2

1

0

GIFR

INTF1

INTF0

-

-

-

-

-

-

R/W

R/W

R

R

R

R

R

R

0

0

0

0

0

0

0

0

Рисунок 4.7 - Общий регистр флагов прерываний

Бит 7 - INTF1 (External Interrupt Flag1). Флаг внешнего прерывания 1. При возникновении на выводе INT1 события, вызывающего прерывание, INTF1 устанавливается в "1". Если установлены бит I регистра SREG и бит INT1 в GIMSK, происходит переход на вектор прерывания по адресу $002. Флаг очищается после выполнения обработчика прерывания. Кроме того, флаг можно очистить, записав в него логическую единицу.

Бит 6 - INTF0 (External Interrupt Flag1). Флаг внешнего прерывания 0. При возникновении на выводе INT0 события вызывающего прерывание, INTF0 устанавливается в "1". Если установлены бит I регистра SREG и бит INT0 в GIMSK, происходит переход на вектор прерывания по адресу $001. Флаг очищается после выполнения обработчика прерывания. Кроме того, флаг можно очистить, записав в него логическую единицу.

Биты 5..0 - зарезервированы. В AT90S8535 эти биты зарезервированы и всегда читаются как 0.

4.10.2.3 Timer/Counter Interrupt Mask Register (TIMSK)

Регистр маски прерывания от таймеров/счетчиков

Бит

$39($59)

R/W

Нач.знач.

7

6

5

4

3

2

1

0

TIMSK

OCIE2

TOIE2

TICIE1

OCIE1A

OCIE1B

TOIE1

-

TOIE0

R/W

R/W

R/W

R/W

R/W

R/W

R

R/W

0

0

0

0

0

0

0

0

Бит 7 – OCIE2 (Timer/Counter2 Output Compare Match Interrupt Enable). Разрешение прерывания по совпадению таймера/счетчика 2 (см.рис.4.5, табл.4.1). Прерывание (вектор $003) выполняется при равенстве содержимых таймера/счетчика 1 и регистра совпадения B.

Бит 6 – TOIE2 (Timer/Counter2 Overflow Interrupt Enable). Разрешение прерывания по переполнению таймера/счетчика 2 (см.рис.4.5, табл.4.1). Прерывание (вектор $004) выполняется при переполнении таймера/счетчика 1.

Бит 5 - TICIE1(Timer/Counter1 Input Capture Interrupt Enable). Разрешение прерывания по входу захвата (см.рис.4.5, табл.4.1). Прерывание (вектор $005) выполняется по сигналу захвата на выводе 11 (PD6/ICP).

Бит 4 - OCIE1A(Timer/Counter1 Output CompareA Match Interrupt Enable). Разрешение прерывания по совпадению таймера/счетчика 1 (см.рис.4.5, табл.4.1). Прерывание (вектор $006) выполняется при равенстве содержимого таймера/счетчика 1 и регистра совпадения B.

Бит 3 - OCIE1B (Timer/Counter1 Output CompareB Match Interrupt Enable). Разрешение прерывания по совпадению таймера/счетчика 1 (см.рис.4.5, табл.4.1). Прерывание (вектор $007) выполняется при равенстве таймера/счетчика 1 и регистра совпадения B.

Бит 2 - TOIE1(Timer/Counter1 Overflow Interrupt Enable). Разрешение прерывания по переполнению таймера/счетчика 1 (см.рис.4.5, табл.4.1). Соответствующее прерывание (вектор $008) выполняется при переполнении таймера/счетчика 1. Если таймер/счетчик 1 работает в режиме ШИМ, флаг переполнения устанавливается при изменении направления счета, при значении $0000.

Бит 1- зарезервирован; в AT90S8535 этот бит зарезервирован и всегда читается как 0.

Бит 0 - TOIE0 (Timer/Counter0 Overflow Interrupt Enable). Разрешение прерывания по переполнению таймера/счетчика 0 (см.рис.4.5, табл.4.1). При возникновении переполнения выполняется вектор прерывания ($009).

4.10.2.4 Timer/Counter Interrupt Flag Register (TIFR)

Бит

$38($58)

R/W

Нач.знач.

7

6

5

4

3

2

1

0

TIFR

OCF2

TOV2

ICF1

OCF1A

OCF1B

TOV1

-

TOV0

R/W

R/W

R/W

R/W

R/W

R/W

R

R/W

0

0

0

0

0

0

0

0

Рисунок 4.8 - Флаговый регистр прерываний от таймеров/счетчиков

Бит 7 - OCF2 (Output Compare Flag 2). Флаг выхода совпадения 1А (см.рис.4.5). Флаг устанавливается в "1" если происходит совпадение значения таймера/счетчика 2 и данных в регистре OCR2 (Output Compare Register2). Флаг очищается аппаратно при выполнении соответствующего вектора прерывания. Кроме того, флаг можно сбросить, записав в него логическую единицу.

Бит 6 – TOV2 (Timer/Counter2 Overflow Flag). Флаг переполнения таймера счетчика 2 (см.рис.4.5). Флаг TOV2 устанавливается ("1") при переполнении таймера/счетчика 2. Флаг сбрасывается аппаратно при выполнении соответствующего вектора прерывания. Кроме того, флаг можно очистить, записав в него логическую единицу.

Бит 5 - ICF1 (Input Capture Flag 1). Флаг входа захвата 1 (см.рис.4.5). Бит устанавливается в «1» при возникновении события захвата по входу. Он индицирует, что значение таймера/счетчика 1 скопировано в регистр захвата ICR1. Флаг ICF1 очищается при выполнении соответствующего вектора обработки прерывания. Кроме того, флаг можно очистить, записав в него логическую единицу.

Бит 4 - OCF1A (Output Compare Flag 1A). Флаг выхода совпадения 1А (см.рис.4.5). Флаг устанавливается в «1», если происходит совпадение значения таймера/счетчика 1 и данных в регистре OCR1A. Флаг очищается аппаратно при выполнении соответствующего вектора прерывания. Кроме того, флаг можно сбросить, записав в него логическую единицу.

Бит 3 - OCF1B (Output Compare Flag 1B). Флаг выхода совпадения 1B (см.рис.4.5). Флаг устанавливается в «1», если происходит совпадение значения таймера/счетчика 1 и данных в регистре OCR1B. Флаг очищается аппаратно при выполнении соответствующего вектора прерывания. Кроме того, флаг можно сбросить записав в него логическую единицу.

Бит 2 - TOV1 (Timer/Counter1 Overflow Flag). Флаг переполнения таймера/счетчика 1 (см.рис.4.5). Флаг TOV1 устанавливается в «1» при возникновении переполнения таймера/счетчика 1. Флаг TOV1 сбрасывается аппаратно при выполнении соответствующего вектора обработки прерывания. Кроме того, флаг можно сбросить, записав в него логическую единицу. В режиме ШИМ этот бит устанавливается, когда таймер/счетчик 1 изменяет направление счета при значении $0000.

Бит 1 - зарезервирован; в AT90S8535 этот бит зарезервирован и всегда читается как 0.

Бит 0 - TOV0 (Timer/Counter0 Overflow Flag). Флаг переполнения таймера счетчика 1 (см.рис.4.5). Флаг TOV0 устанавливается в «1» при переполнении таймера/счетчика 0. Флаг сбрасывается аппаратно при выполнении соответствующего вектора прерывания. Кроме того, флаг можно очистить, записав в него логическую единицу.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]