ATMEL |
ÊÒÖ-ÌÊ |
арифметических и логических операций. Более подробная ин формация приведена в описании системы команд.
• Bit 1 - Z: Zero Flag - Флаг нулевого значения
Флаг нулевого значения Z указывает на нулевой результат р яда арифметических и логических операций. Более подробная информация приведе на в описании системы команд.
• Bit 0 - C: Carry Flag - Флаг переноса
Флаг переноса C указывает на перенос в арифметических и ло гических операциях. Более подробная информация приведена в описании системы команд.
УКАЗАТЕЛЬ СТЕКА - Stack Pointer - SP
Микроконтроллеры AVR оснащены 16-разрядным указателем стека , размещенным в двух регистрах пространства I/O по адресам $3E ( $5E) и $3D ($5D). Поскольку микроконтроллеры ATmega603/103 поддерживают объем SRAM до 6 4 Кбайт, то используются все 16 разрядов указателя стека.
Указатель стека указывает на область в SRAM данных, в которой размещаются стеки подпрограмм и прерываний. Объем стека в SRAM данных дол жен задаваться программой перед каждым вызовом подпрограммы и обработк ой разрешенного прерывания. Указатель стека декрементируется на единицу , при каждом занесении командой PUSH данных в стек, и на две единицы при занесении дан ных в стек подпрограммой CALL и прерыванием.
Указатель стека инкрементируется на единицу, при извлече нии данных из стека командой POP, и на две единицы при извлечении данных из стека при возврате из подпрограммы (RET) или возврате из прерывания (IRET).
Áèòû |
|
|
15 |
14 |
|
13 |
|
12 |
|
|
11 |
10 |
9 |
8 |
|
|
$3E ($5E) |
|
SP15 |
SP14 |
SP13 |
SP12 |
|
SP11 |
SP10 |
SP9 |
SP8 |
SPH |
|||||
$3D ($5D) |
|
SP7 |
SP6 |
SP5 |
SP4 |
|
SP3 |
SP2 |
SP1 |
SP0 |
SPL |
|||||
|
|
|
7 |
6 |
|
5 |
|
4 |
|
|
3 |
2 |
1 |
0 |
|
|
Чтение/Запись |
R/W |
R/W |
R/W |
R/W |
R/W |
R/W |
R/W |
R/W |
|
|
||||||
|
|
|
R/W |
R/W |
R/W |
R/W |
R/W |
R/W |
R/W |
R/W |
|
|
||||
Начальное состояние |
0 |
0 |
|
0 |
|
0 |
|
|
0 |
0 |
0 |
0 |
|
|
||
|
|
|
0 |
0 |
|
0 |
|
0 |
|
|
0 |
0 |
0 |
0 |
|
|
РЕГИСТР ВЫБОРА СТРАНИЦЫ Z RAM - |
|
|
|
|
|
|
||||||||||
The RAM Page Z Select Register - RAMPZ |
|
|
|
|
|
|
||||||||||
Áèòû |
|
|
7 |
6 |
|
5 |
|
4 |
|
|
3 |
2 |
1 |
0 |
|
|
$3B ($5B) |
|
- |
- |
|
- |
|
- |
|
|
- |
- |
- |
RAMPZ0 |
RAMPZ |
||
Чтение/Запись |
R |
R |
R |
R |
R |
R |
R |
R/W |
|
|
||||||
Начальное состояние |
0 |
0 |
|
0 |
|
0 |
|
|
0 |
0 |
0 |
0 |
|
|
||
Регистр RAMPZ используется обычно для определения к какой ст ранице RAM, емкостью 64К, возможно обращение посредством указателя Z. По скольку микроконтроллеры ATmega603/103 не поддерживают SRAM с объемом свыше 64К , этот регистр используется только для выбора страницы в па мяти программ при использовании команды ELPM. Различные установки бита RAMPZ0 оказ ывают следующий эффект:
7 4
ÊÒÖ-ÌÊ
RAMPZ0 = 0: Команде ELPM доступна память программ с адресами от $0000 до $7FFF (младшие 64 Кбайт)
RAMPZ0 = 1: Команде ELPM доступна память программ с адресами от $8000 до $FFFF (старшие 64 Кбайт).
Отметим, что на LPM не воздействует установка RAMPZ.
Микроконтроллер ATmega603 не содержит регистра RAMPZ и не имеет кома нды ELPM. Команда LPM способна перекрыть все пространство памяти пр ограмм микроконтроллера ATmega603.
РЕГИСТР УПРАВЛЕНИЯ MCU - MCU Control Register - MCUCR
Биты регистра управления MCU управляют выполнением основн ых функций MCU.
Áèòû |
|
7 |
6 |
5 |
4 |
3 |
2 |
1 |
0 |
|
$3B ($5B) |
|
SRE |
SRW |
SE |
SM1 |
SM0 |
- |
- |
- |
MCUCR |
Чтение/Запись |
R/W |
R/W |
R/W |
R/W |
R/W |
R |
R |
R |
|
|
Начальное состояние |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
|
|
• Bit 7 - SRE: External SRAM Enable - Разрешение внешней SRAM
Установленный в 1 бит SRE разрешает обращение к внешней SRAM дан ных и переводит работу выводов AD0-7 (Порт A), A8-15 (Порт C), WR и RD на выполнение альтернативной функции. Затем бит SRE перенастраивает уста новки направлений любых выводов в соответствующих регистрах направления данных . Очистка бита SRE (установка в 0) запрещает обращение к внешней SRAM и восстанавливает норм альные установки направлений выводов и данных.
• Bit 6 - SRW: External SRAM Wait State - Режим ожидания внешней SRAM
При установленном в 1 бите SRW к циклу обращения к внешней SRAM до бавляется один цикл ожидания. При сброшенном в 0 бите SRW обращение к вне шней SRAM выполняется по трехцикловой схеме. См. Рис 22 Циклы обращени я к внешней SRAM данных без состояния ожидания (Wait State) и Рис. 23 Циклы обращения к внешней SRAM данных с состоянием ожидания (Wait State active).
• Bit 5 - SE: Sleep Enable - Разрешение режима Sleep
Установленный в 1 бит SE разрешает перевод MCU в режим sleep по кома нде SLEEP. Чтобы исключить перевод MCU в незапрограммированный режим sleep, рекомендуется устанавливать бит SE непосредственно перед выполнением ко манды SLEEP.
• Bits 4,3 - SM1/SM0: Sleep Mode Select bits 1 and 0 - Биты выбора режима Sleep
Данные биты позволяют выбрать один из трех возможных режи мов sleep, как показано в таблице 4.
Таблица 4 Выбор режима Sleep
SM1 |
SM0 |
Sleep Mode |
|
|
|
0 |
0 |
Режим Idle |
0 |
1 |
Зарезервировано |
1 |
0 |
Режим Power Down |
1 |
1 |
Режим Power Save |
Bits 2..0 - Res: Reserved bits - Зарезервированные биты
Эти биты зарезервированы и при считывании всегда будут по казывать состояние 0.
7 5
ATMEL |
ÊÒÖ-ÌÊ |
РЕГИСТР УПРАВЛЕНИЯ КОЭФФИЦИЕНТОМ ДЕЛЕНИЯ ЧАСТОТЫ |
|
КВАРЦЕВОГО |
ГЕНЕРАТОРА - XTAL Divide Control Register - XDIV |
Регистр XDIV используется для установления коэффициента де ления частоты кварцевого генератора в диапазоне от 1 до 129.
Áèòû |
|
7 |
6 |
5 |
4 |
3 |
2 |
1 |
0 |
|
$3C ($5C) |
|
XDIVEN |
XDIV6 |
XDIV5 |
XDIV4 |
XDIV3 |
XDIV2 |
XDIV1 |
XDIV0 |
XDIV |
Чтение/Запись |
R/W |
R/W |
R/W |
R/W |
R/W |
R/W |
R/W |
R/W |
||
Начальное состояние |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
|
|
• Bit 7 - XDIVEN: XTAL Divide Enable - Разрешение деления частоты XTAL
При установленном в 1 бите XDIVEN тактовая частота CPU и всей пери ферии делится в соответствии с установленным битами XDIV6 - XDIV0 коэффициентом деления. Такая возможность может быть использована для снижения потреб ления, при условии допустимости снижения вычислительной мощности. Этот бит может быть установлен и очищен в процессе выполнения программы тогда, когда это о пределяется применением.
• Bits 6..0 - XDIV6..XDIV0: XTAL Divide Select Bits 6 - 0 - Биты выбора коэффициента
деления
Эти биты устанавливают коэффициент деления тактовой час тоты при установленном бите XDIVEN. Если десятичное значение этих семи битов обозначи ть через d, то результирующая тактовая частота CPU будет определяться по формуле
XTAL f clk =(129-d)
Состояния этих битов можно изменить только когда бит XDIVEN сб рошен (в состоянии 0). При установленном бите XDIVEN, записанное единовр еменно в биты XDIV6..XDIV0 значение будет определять коэффициент деления. При сб росе бита XDIVEN записанные в биты XDIV6..XDIV0 значения игнорируются. Поскольку де литель делит тактовую частоту поступающую на MCU, то и на периферийные ус тройства поступает тактовая частота с тем же коэффициентом деления.
Обработка прерываний и сброса
Микроконтроллеры ATmega603/103 используют 23 источника прерывания. Эти прерывания и вектор сброса располагают отдельными прогр аммными векторами в пространстве памяти программ. Каждому прерыванию присво ен свой бит разрешения который должен быть установлен совместно с битом I регист ра статуса.
Младшие адреса пространства памяти программ автоматиче ски определяются как векторы сброса и прерываний.
Полный перечень векторов представлен в Таблице 5. Перечен ь представляет также уровень приоритета для каждого прерывания. Прерыва ния с младшими адресами имеют больший уровень приоритета. RESET имеет наивысший уров ень приоритета, следующим является INT0 - Запрос внешнего прерывания 0 и т.д.
7 6
ÊÒÖ-ÌÊ
Таблица 5 Векторы сброса и прерываний
Vector |
Program |
Source |
Interrupt Definition |
No. |
Address |
|
|
1 |
$0000 |
RESET |
Сброс по выводу и сторожевому таймеру (Hardware Pin and |
|
|
|
Watchdog Reset) |
|
|
|
|
2 |
$0002 |
INT0 |
Запрос внешнего прерывания 0 (External Interrupt Request 0) |
3 |
$0004 |
INT1 |
Запрос внешнего прерывания 1 (External Interrupt Request 1) |
4 |
$0006 |
INT2 |
Запрос внешнего прерывания 2 (External Interrupt Request 2) |
5 |
$0008 |
INT3 |
Запрос внешнего прерывания 3 (External Interrupt Request 3) |
|
|
|
|
6 |
$000A |
INT4 |
Запрос внешнего прерывания 4 (External Interrupt Request 4) |
7 |
$000C |
INT5 |
Запрос внешнего прерывания 5 (External Interrupt Request 5) |
8 |
$000E |
INT6 |
Запрос внешнего прерывания 6 (External Interrupt Request 6) |
9 |
$0010 |
INT7 |
Запрос внешнего прерывания 7 (External Interrupt Request 7) |
10 |
$0012 |
TIMER2 COMP |
Совпадение при сравнении таймера/счетчика 2 (Timer/Counter2 |
|
|
|
Compare Match) |
11 |
$0014 |
TIMER2 OVF |
Переполнение таймера/счетчика 2 (Timer/Counter2 Overflow) |
12 |
$0016 |
TIMER1 CAPT |
Захват таймера/счетчика 1 (Timer/Counter1 Capture Event) |
13 |
$0018 |
TIMER1 COMPA |
Совпадение A при сравнении таймера/счетчика 1 (Timer/Counter1 |
|
|
|
Compare Match A) |
|
|
|
|
1 4 |
$001A |
TIMER1 COMPB |
Совпадение B при сравнении таймера/счетчика 1 (Timer/Counter1 |
|
|
|
Compare Match B) |
15 |
$001C |
TIMER1 OVF |
Переполнение таймера/счетчика 1 (Timer/Counter1 Overflow) |
16 |
$001E |
TIMER0 COMP |
Совпадение при сравнении таймера/счетчика 0 (Timer/Counter0 |
|
|
|
Compare Match) |
|
|
|
|
17 |
$0020 |
TIMER0 OVF |
Переполнение таймера/счетчика 0 (Timer/Counter0 Overflow) |
18 |
$0022 |
SPI, STC |
Завершение пересылки SPI (SPI Serial Transfer Complete) |
19 |
$0024 |
UART, RX |
Завершение приема UART (UART, Rx Complete) |
|
|
|
|
20 |
$0026 |
UART, UDRE |
Регистр данных UART пуст (UART Data Register Empty) |
21 |
$0028 |
UART, TX |
Завершение передачи UART (UART, Tx Complete) |
|
|
|
|
22 |
$002A |
ADC |
Завершение ADC преобразования (ADC Conversion Complete) |
23 |
$002C |
EE READY |
Готовность EEPROM (EEPROM Ready) |
24 |
$002E |
ANALOG COMP |
Срабатывание аналогового компаратора (Analog Comparator) |
|
|
|
|
7 7
ATMEL |
ÊÒÖ-ÌÊ |
Наиболее часто используемые программные установки адре сов векторов сброса и прерываний:
Адрес |
Метка |
Êîä |
|
Комментарий |
|
|
|
|
|
|
$0000 |
|
jmp |
RESET |
; |
Обработчик |
сброса (Reset Handler) |
|
|
|
|
$0002 |
|
jmp |
EXT_INT0 |
; |
Обработчик |
прерывания |
IRQ0 (IRQ0Handler) |
|
|
|
$0004 |
|
jmp |
EXT_INT1 |
; |
Обработчик прерывания IRQ1 (IRQ1 Handler) |
|
|
|||
$0006 |
|
jmp |
EXT_INT2 |
; |
Обработчик прерывания IRQ2 (IRQ2 Handler) |
|
|
|||
$0008 |
|
jmp |
EXT_INT3 |
; |
Обработчик прерывания IRQ3 (IRQ3 Handler) |
|
|
|||
$000A |
|
jmp |
EXT_INT4 |
; |
Обработчик прерывания IRQ4 (IRQ4 Handler) |
|
|
|||
$000C |
|
jmp |
EXT_INT5 |
; |
Обработчик прерывания IRQ5 (IRQ5 Handler) |
|
|
|||
$000E |
|
jmp |
EXT_INT6 |
; |
Обработчик прерывания IRQ6 (IRQ6 Handler) |
|
|
|||
$0010 |
|
jmp |
EXT_INT7 |
; |
Обработчик прерывания IRQ7 (IRQ7 Handler) |
|
|
|||
$0012 |
|
jmp |
TIM2_COMP |
; |
Обработчик сравнения таймера 2 (Timer2 Compare Handler) |
|||||
$0014 |
|
jmp |
TIM2_OVF |
; |
Обработчик переполнения таймера 2 (Timer2 Overflow Handler) |
|||||
$0016 |
|
jmp |
TIM1_CAPT |
; |
Обработчик захвата таймера 1 (Timer1 Capture Handler) |
|||||
$0018 |
|
jmp |
TIM1_COMPA |
; |
Обработчик сравнения A таймера 1 (Timer1 CompareA Handler) |
|||||
$001A |
|
jmp |
TIM1_COMPB |
; |
Обработчик сравнения B таймера 1 (Timer1 CompareB Handler) |
|||||
$001C |
|
jmp |
TIM1_OVF |
; |
Обработчик переполнения таймера 1 (Timer1 Overflow Handler) |
|||||
$001E |
|
jmp |
TIM0_COMP |
; |
Обработчик сравнения таймера 0 (Timer0 Compare Handler) |
|||||
$0020 |
|
jmp |
TIM0_OVF |
; |
Обработчик |
переполнения таймера 0 (Timer0 Overflow Handler) |
||||
$0022 |
|
jmp |
SPI_STC |
; Обработчик |
завершения |
пересылки SPI |
(SPI |
Transfer Complete |
||
|
|
|
|
|
Handler) |
|
|
|
|
|
$0024 |
|
jmp |
UART_RXC |
; |
Обработчик завершения приема UART (UART RX Complete Handler) |
|||||
$0026 |
|
jmp |
UART_DRE |
; |
Обработчик пустого регистра данных (UDR Empty Handler) |
|||||
$0028 |
|
jmp |
UART_TXC |
; |
Обработчик |
завершения |
передачи UART |
(UART |
TX |
Complete |
Handler) |
|
|
|
|
|
|
|
|
|
|
$002A |
|
jmp |
ADC |
; |
Обработчик |
завершения |
преобразования |
ADC |
(ADC |
Conversion |
Complete |
Handler) |
|
|
|
|
|
|
|
|
|
$002C |
|
jmp |
EE_RDY |
; |
Обработчик |
готовности EEPROM (EEPROM Ready Handler) |
||||
$002E |
|
jmp |
ANA_COMP |
; Обработчик |
срабатывания аналогового |
компаратора(Analog |
||||
|
|
|
|
|
Comparator |
Handler) |
|
|
|
|
; |
|
|
|
|
|
|
|
|
|
|
$0030 |
MAIN: |
<instr> xxx |
; |
Начало основной программы (Main program start) |
||||||
... |
... |
... |
... |
|
|
|
|
|
|
|
ИСТОЧНИКИ СБРОСА
Микроконтроллеры ATmega603/103 располагают тремя источниками сиг нала сброса:
•Сброс по включению питания (Power-On Reset). MCU сбрасывается при подк лючении питания к выводам VCC и GND.
•Внешний сброс (External Reset). MCU сбрасывается если низкий уровень п рисутствует на входе более двух циклов XTAL.
•Сброс по сторожевому таймеру (Watchdog Reset). MCU сбрасывается если и стекает период сторожевого таймера и сторожевой таймер разрешен .
Âтечение сброса все регистры I/O, за исключением регистра с татуса MCU, устанавливаются в их начальные состояния и программа нач инает работу с адреса $0000. По этому адресу должна находиться команда JMP - команда абс олютного перехода к подпрограмме обработки сброса. Если программа никогда не разрешает прерывания, то векторы прерываний не используются и по эт им адресам могут располагаться коды программы.
Таблица 6. Временные и электрические параметры схемы сброса (VCC = 5 Â).
Обозн. |
Параметр |
|
|
Условия |
Ìèí |
Òèï |
Ìàêñ |
Ед. измерения |
V POT |
Граничное напряжение |
|
1,8 |
2 |
2,2 |
V |
||
|
сброса по включению питания |
|
|
|
|
|
||
V RST |
Граничное напряжение |
|
|
V CC /2 |
|
V |
||
|
сброса по выводу |
RESET |
|
|
|
|
|
|
V BO |
Сброс по снижению напряж. питания |
|
|
2.5 |
|
V |
||
T TOUT |
Период задержки сигнала сброса |
SUT1/0 = 00 |
|
5 |
|
Циклов CPU |
||
|
|
|
|
SUT1/0 = 01 |
0.4 |
0.5 |
0.6 |
ìñ |
|
|
|
|
SUT1/0 = 10 |
3.2 |
4.0 |
4.8 |
ìñ |
|
|
|
|
SUT1/0=11 |
12.8 |
16.0 |
19.2 |
ìñ |
7 8