- •Содержание
- •1 Микроконтроллер at90s8535 фирмы Atmel
- •2 Описание выводов
- •3 Кварцевый генератор
- •4 Обзор архитектуры at90s8535
- •4.1 Файл регистров общего назначения
- •4.2 Арифметико-логическое устройство - алу
- •4.3 Загружаемая память программ.
- •4.4 Eeprom память данных
- •4.5 Статическое озу данных
- •4.6 Время выполнения команд.
- •4.7 Пространство ввода/вывода
- •4.10 Сброс и обработка прерываний.
- •4.10.1 Источники сброса
- •4.10.1.1 Сброс по выключению питания
- •4.10.1.2 Внешний сброс
- •4.10.1.3 Сброс от сторожевого таймера
- •4.10.2 Обработка прерываний
- •4.10.3 Внешние прерывания
- •4.10.4 Время реакции на прерывание
- •4.11 Режимы пониженного энергопотребления.
- •5 Таймеры/счетчики
- •5.2.7 Таймер/счетчик 1 в режимеШим
- •5.3.2 Управление тактовым сигналом
- •5.3.3 Режим таймера
- •5.3.4 Режим шим
- •5.3.5 Асинхронный режим работы
- •6 Сторожевой таймер
- •6.1 Назначение cторожевого таймера
- •7 Чтение и запись в энергонезависимую память
- •7.4. Меры предосторожности при работе с eeprom
- •8 Последовательный периферийный интерфейс spi
- •8.1. Общие сведения
- •8.2. Функционирование модуля spi
- •Tаблица 8.1
- •Tаблица 8.2
- •8.3. Режимы передачи данных
- •8.4. Использование вывода ss
- •9 Универсальный асинхронный приемопередатчик uart
- •9.1 Передача данных
- •9.2 Прием данных.
- •9.3 Управление uart
- •10 Аналоговый компаратор
- •10.1. Функционирование компаратора
- •11 Аналого-цифровой преобразователь
- •11.1. Общие сведения
- •11.2 Функционирование модуля ацп
- •11.6 Повышение точности преобразования
- •11.7 Параметры ацп
- •12 Порты ввода/вывода
- •12.1 Общие сведения
- •12.2 Обращение к портам ввода/вывода
- •12.3. Конфигурирование портов ввода/вывода
- •13 Программирование памяти
- •13.1 Биты блокировки памяти (Lock Bits)
- •13.2 Биты конфигурации (Fuse bits)
- •13.3 Код устройства
- •14 Электрические характеристики
- •14.1 Максимально допустимые параметры
- •14.2 Характеристики по постоянному току
- •14.3 Параметры внешнего тактового сигнала
- •15 Информация для заказа
- •16 Список регистров at90s8535
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. Флаг сбрасывается аппаратно при выполнении соответствующего вектора прерывания. Кроме того, флаг можно очистить, записав в него логическую единицу.
