***Стек процессора работает с предварительным инкрементом и постдекрементом
Сброс и обработка прерываний.
В процессоре предусмотрены 13 источников прерываний. Эти прерывания и сброс имеют различные векторы в области памяти программ. Каждому из прерываний присвоен отдельный бит разрешающий данное прерывание при установке бита в 1, если бит I регистра состояния разрешает общее обслуживание прерываний.
Самые младшие адреса памяти программ определены как векторы сброса и прерываний. Полный список векторов прерываний приведен в таблице Этот список определяет и приоритет различных прерываний. Меньшие адреса соответствуют более высокому уровню приоритета. Самый высокий уровень у сброса, следующий приоритет у INT0 - внешнего запроса прерывания 0 и т.д. Ниже приведена типичная программа обработки сброса и векторов прерываний:
000h | rjmp RESET | Обработка сброса |
001h | rjmp EXT_INT0 | Обработка IRQ0 |
002h | rjmp EXT_INT1 | Обработка IRQ1 |
003h | rjmp TIM1_CAPT | Обработка захвата таймера 1 |
004h | rjmp TIM1_COMP | Обработка совпадения таймера 1 |
005h | rjmp TIM1_OVF | Обработка переполнения таймера 1 |
006h | rjmp TIM0_OVF | Обработка переполнения таймера 0 |
007h | rjmp SPI_STC | Обработка передачи по SPI |
008h | rjmp UART_RXC | Обработка приема байта |
009h | rjmp UART_DRE | Обработка освобождения UDR |
00Ah | rjmp UART_TXC | Обработка передачи байта |
00Bh | rjmp ADC | Обработка преобразования АЦП |
00Ch | rjmp EE_RDY | Обработка готовности EEPROM |
00Dh | rjmp ANA_COMP | Обработка аналогов. компаратора |
00Eh | Основная программа | Начало основной программы |
Сброс и векторы прерываний.
Номер вектора | Адрес | Источник | Описание прерывания |
1 | 000h | RESET | Ножка сброса, сторожевой таймер Brown-Out reset |
2 | 001h | INT0 | Внешнее прерывание 0 |
3 | 002h | INT1 | Внешнее прерывание 1 |
4 | 003h | TIMER1 CAPT | Захват таймера/счетчика 1 |
5 | 004h | TIMER1 COMP | Совпаден. таймера/счетчика 1 |
6 | 005h | TIMER1 OVF | Переполнение таймера/счетчика 1 |
7 | 006h | TIMER0 OVF | Переполнение таймера/счетчика 0 |
8 | 007h | SPI, STC | Передача по SPI завершена |
9 | 008h | UART RX | Последоват.порт прием закончен |
10 | 009h | UART UDRE | Посл.порт регистр данных пуст |
11 | 00Ah | UART TX | Посл.порт передача закончена |
12 | 00Bh | ADC | Преобразование АЦП завершено |
13 | 00Ch | RDY | EEPROM готово |
14 | 00Dh | COMP | Аналоговый компаратор |
ИСТОЧНИКИ СБРОСА
AT90S2333/4433 имеют четыре источника сброса.
* Сброс по включению питания. Процессор сбрасывается при подаче питания на выводы VCC и GND.
* Внешний сброс. Процессор сбрасывается при подаче низкого уровня на вывод RESET на время более двух периодов тактовой частоты.
* Сброс от сторожевого таймера. Процессор сбрасывается по окончанию времени отработки сторожевого таймера, если разрешена его работа.
* Brown-Out сброс сброс при падении Vcc ниже некоторого значения.
Во время сброса все регистры ввода/вывода устанавливаются в начальные значения, программа начинает выполняться с адреса $000, по этому адресу должна быть записана команда RJMP - относительный переход на программу обработки сброса. Если в программе не разрешаются прерывания и векторы прерываний не используются, в первых адресах памяти может быть записана программа.
Сброс по включению питания
Импульс сброса по включению питания генерируется внутренней схемой. Уровень срабатывания схемы - 2.2В. Сброс производится когда напряжение питания превысит уровень срабатывания. Схема сброса по включению питания не дает процессору запускаться до тех пор, пока напряжение не достигнет безопасного уровня. При достижении безопасного уровня напряжения включается счетчик задержки определяющий длительность сброса. Эта длительность задается битами-перемычками и может устанавливаться в одно из восьми значений приведенных в таблице 4.
Таблица 3. Хар актеристики сброса.(Vcc=5.0V)
Тип напряжения | Min | Typ | Max | ||
Vpower | Напряжение срабатывания сброса по включению питания | 1.7v | 2.2v | 2.7v | |
Vreset | Напряжение срабатывания сброса по выводу RESET | 0.6Vcc | |||
Vbodlevel | Напряжение срабатывания сброса по Brown-Out | BODLEVEL=1 | 2.6v | 2.7v | 2.8v |
Напряжение срабатывания сброса по Brown-Out | BODLEVEL=0 | 3.8v | 4.0v | 4.2v |
Таблица 4. Установка времени сброса
CKSEL [2:0] | Время запуска |
000 | 4mS + 6CK |
001 | 6CK |
010 | 64mS + 16K CK |
011 | 4mS + 16K CK |
100 | 16K CK |
101 | 64mS + 1K CK |
110 | 4mS + 1K CK |
111 | 1K CK |
ВНЕШНИЙ СБРОС
Внешний сброс обрабатывается по низкому уровню на выводе RESET. Вывод должен удерживаться в низком состоянии по крайней мере два периода тактовой частоты. После достижения напряжения Vrst запускается таймер задержки, через промежуток времени Tout процессор запускается.
BROWN-OUT
AT90S2333/4433 имеют встроенную схему отслеживания напряжения питания. Работа этой схемы разрешается и запрещается битом-перемычкой BODEN. Если бит BODEN запрограммирован, при уменьшении напряжения ниже заданного уровня срабатывает схема сброса. Время сброса задается как и для сброса по включению питания (табл.4). Уровень сброса устанавливается битом BODLEVEL на 2.7В если бит не запрограммирован или на 4В если
бит запрограммирован. Уровень срабатывания имеет гистерезис 50мВ.
Для того, чтобы произошел сброс падение напряжения до уровня срабатывания должно продержаться не менее 3мкС для уровня срабатывания 4В (7мкС для 2.7В).
СБРОС ПО СТОРОЖЕВОМУ ТАЙМЕРУ
По истечению периода работы сторожевого таймера генерируется импульс длительностью 1 период тактовой частоты. По заднему фронту этого импульса запускается таймер, отсчитывающий время сброса
РЕГИСТР СОСТОЯНИЯ ПРОЦЕССОРА - MCUSR