Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лабораторные работы МП.New.doc
Скачиваний:
27
Добавлен:
23.11.2019
Размер:
1.08 Mб
Скачать

2. Произвести отладку программы средствами avrStudio.

3. Произвести загрузку программы в микроконтроллер.

4. Продемонстрировать результат работы преподавателю.

Теоретические сведения

1. Прерывания в atMega128

1.1. Общие сведения

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

1.2. Таблица векторов прерываний

Микроконтроллеры AVR семейства Mega имеют многоуровневую систему приоритетных прерываний. Младшие адреса памяти программ, начиная с адреса $0002, отведены под таблицу векторов прерывания. Каждому прерыванию соответствует адрес в этой таблице, который загружается в счетчик команд при возникновении прерывания. Положение вектора в таблице также определяет и приоритет соответствующего прерывания: чем меньше адрес, тем выше приоритет прерывания. Размер вектора прерывания составляет 2 байта. Соответственно, для перехода к подпрограммам обработки прерываний используются команды JMP.

Положение таблицы векторов прерываний может быть изменено. Таблица может располагаться не только в начале памяти программ, но также и в начале области загрузчика, причем перемещение таблицы может быть осуществлено непосредственно в ходе выполнения программы. Для управления размещением таблицы прерываний используется регистр управления микроконтроллера MCUCR, расположенный по адресу $35 ($55).

Распределение адресов таблицы векторов прерываний для микроконтроллера ATmega128 приведено в Табл. 1.1. При размещении векторов прерываний в области загрузчика к значениям, указанным в таблице, следует прибавить значение начального адреса области загрузчика.

Таблица 1.1. Таблица векторов прерываний ATmega128

Источник

Описание

M103C=1

M103C=0

Адрес

Адрес

INT0

Внешнее прерывание 0

1

$0002

1

$0002

INT1

Внешнее прерывание 1

2

$0004

2

$0004

INT2

Внешнее прерывание 2

3

$0006

3

$0006

INT3

Внешнее прерывание 3

4

$0008

4

$0008

INT4

Внешнее прерывание 4

5

$000A

5

$000A

INT5

Внешнее прерывание 5

6

$000C

6

$000C

INT6

Внешнее прерывание 6

7

$000E

7

$000E

INT7

Внешнее прерывание 7

8

$0010

8

$0010

TIMER2COMP

Совпадение таймера/счетчика Т2

9

$0012

9

$0012

TIMER2 0VF

Переполнение таймера/счетчика Т2

10

$0014

10

$0014

TIMER1 САРТ

Захват таймера/счетчика Т1

11

$0016

11

$0016

TIMER1 СОМРА

Совпадение А таймера/счетчика Т1

12

$0018

12

$0018

TIMER1 СОМРВ

Совпадение В таймера/счетчика Т1

13

$001A

13

$001A

TIMER1 OVF

Переполнение таймера/счетчика Т1

14

$001C

14

$001C

TIMER0COMP

Совпадение таймера/счетчика ТО

15

$001E

15

$001E

TIMER0OVF

Переполнение таймера/счетчика ТО

16

$0020

16

$0020

SPI, STC

Передача по SPI завершена

17

$0022

17

$0022

USARTO, RX

USARTO, прием завершен

18

$0024

18

$0024

USARTO, UDRE

Регистр данных USARTO пуст

19

$0026

19

$0026

USARTO, TX

USARTO, передача завершена

20

$0028

20

$0028

ADC

Преобразование АЦП завершено

21

$002A

21

$002A

EE_RDY

EEPROM готово

22

$002C

22

$002C

ANA_COMP

Аналоговый компаратор

23

$002E

23

$002E

TIMER1 СОМРС

Совпадение С таймера/счетчика Т1

24

$0030

-

-

TIMER3CAPT

Захват таймера/счетчика ТЗ

25

$0032

-

-

TIMER3 СОМРА

Совпадение А таймера/счетчика ТЗ

26

$0034

-

-

TIMER3 СОМРВ

Совпадение В таймера/счетчика ТЗ

27

$0036

-

-

TIMER3 СОМРС

Совпадение С таймера/счетчика ТЗ

28

$0038

-

-

TIMER3 OVF

Переполнение таймера/счетчика ТЗ

29

$003A

-

-

USART1,RX

USART1, прием завершен

30

$003C

-

-

USART1,UDRE

Регистр данных USART1 пуст

31

$003E

-

-

USART1,TX

USART1, передача завершена

32

$0040

-

-

TWI

Прерывание от модуля TWI

33

$0042

-

-

SPM_RDY

Готовность SPM

34

$0044

-

-

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