Материал: 8-разрядные микроконтроллеры Atmel

Внимание! Если размещение файла нарушает Ваши авторские права, то обязательно сообщите нам

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

Источник: https://studfile.net/preview/16521258/