4.06M
Категория: ПрограммированиеПрограммирование

Особенности выполнения программ AVR-МК

1.

Национальный аэрокосмический университет им. Н.Е. Жуковского
Цифровые
Digital devices
&
Microprocessors
МП устройства
Тема 4:
Особенности выполнения программ AVR-МК
к.т.н., доцент каф.501
Мазуренко А.В.

2.

1
Архитектура AVR-МК
Генератор
тактовых
импульсов
Порт А
Счетчик
команд
...
Указатель
стека
АЦП
ПИСП
(SPI)
Порт В
ПЗУД
СОЗУ
(РОН)
X
Y
Z
Регистр
статуса
...
линии
управления
© Мазуренко А.В., 2015
Таймеры/
счетчики
Сторожевой
таймер
Порт D
УАПП
АЛУ
Декодер
команд
8-разрядная Шина Данных
Регистр
команд
ОЗУ
Шина Адреса
Шина Адреса
ЗУ
16-разрядная Шина Команд
ПЗУП
Аналоговый
компаратор
Порт С
ДШПИ
(TWI=I2C)
ЦПУ
Периферийные узлы
Микропроцессорные устройства

3.

Последовательный ход выполнения программы AVR-МК
Адрес
0
0
1
1
2
2
ПЗУП
Ячейка ПЗУП
1-я
1-я команда
команда
2-я
2-я команда
команда
3-я
3-я команда
команда
n
n
n+1
n+1
END
END
Счетчик команд
0
HighByte(n+1)
HighByte(n)
0
LowByte(n+1)
LowByte(n)
1
2
0
HighByte
LowByte
LowByte
...
...
Регистр
Регистр команд
команд
1-я
команда
2-я
3-я
0
1-я команда
1-я
команда
2-я
3-я
0
1-я команда
HighByte
HighByte
LowByte
LowByte
...
Декодер команд
...
2
Декодер команд
...
...
0 0
1 0
1
1 0
0
1 0
1
Сигналы управления
для
для(n-1)-й
1-й команды
2-й
n-й
команды
END-й
© Мазуренко А.В., 2015
Микропроцессорные устройства

4.

Вызов подпрограмм в AVR-МК. Использование механизма стека
...
...
...
...
...
n-1
n-1
n-1
n-1
nnnn
n
n+1
n+1
n+1
n+1
n+1
n-1
n-1команда
команда
n-1
команда
n-1
команда
вызовподпрограммы
подпрограммы1111(m)
(m)
вызов
вызов
подпрограммы
(m)
вызов
подпрограммы
(m)
n+1
n+1
команда
n+1команда
команда
n+1
команда
...
...
...
...
...
m
m
m
m
m
jjjj
j+1
j+1
j+1
j+1
j+1
1-якоманда
командаПП1
ПП1
1-я
1-я
команда
ПП1
1-я
команда
ПП1
...
...
...
вызов
вызовподпрограммы
подпрограммы222(x)
(x)
вызов
подпрограммы
(x)
вызовподпрограммы
подпрограммы22(x)
(x)
вызов
j+1команда
команда
j+1
j+1
команда
j+1
команда
qqqq
...
...
...
выход
выходиз
изПП1
ПП1
выход
из
ПП1
выходиз
изПП1
ПП1
выход
...
...
...
...
...
...
xxxx
1-я
1-якоманда
командаПП2
ПП2
1-я
команда
ПП2
1-я
команда
ПП2
yyyy
y
выход из ПП2
© Мазуренко А.В., 2015
...
...
...
выход
выход
из
ПП2
выходиз
изПП2
ПП2
ПодпрограмПодпрограмПодпрограмОсновная
ПодпрограмОсновная
Подпрограм-ПодпрограмПодпрограмПодпрограмПодпрограмПодпрограм- Основная
Основная
Основная
ма22
2(ПП2)
(ПП2)
ма
(ПП2)
ма11
1(ПП1)
(ПП1)
программа
программа
ма
(ПП1)
ма
2ма
(ПП2)
2 (ПП2) ма
программа
программа
ма
ма
1ма
(ПП1)
1 (ПП1) программа
Адрес
Адрес
Адрес
Адрес
ПЗУП
ПЗУП
ПЗУП
ПЗУП
Ячейка
ЯчейкаПЗУП
ПЗУП
Ячейка
ПЗУП
Ячейка
ПЗУП
3
Указательстека
стека
Указатель
Указатель
стека
Указатель
стека
High(k-2)
High(k-2)
High(k-4)
High(k-4)
High(k)
High(k)
Low(k-2)
Low(k-2)
Low(k-4)
Low(k-4)
Low(k)
Low(k)
Счетчик
Счетчиккоманд
команд
Счетчик
команд
Счетчик
команд
High(j+1)
High(q+1)
High(j+1)
High(j)
High(x)
High(y+1)
High(n+1)
High(y)
High(n+1)
High(m)
High(n)
Low(j+1)
Low(q+1)
Low(j+1)
Low(j)
Low(x)
Low(y+1)
Low(n+1)
Low(y)
Low(n+1)
Low(m)
Low(n)
ОЗУ(стек)
(стек)
ОЗУ
ОЗУ
(стек)
ОЗУ
(стек)
адрес содержимое
содержимое
адрес
адрес
содержимое
адрес
содержимое
...
...
...
...
k-5
k-5
k-5
k-5
k-4
k-4
k-4
k-4
k-4
k-3
k-3
k-3
k-3
k-3
k-2
k-2
k-2
k-2
k-1
k-1
k-1
k-1
k-1
kkkk
k
High(j+1)
High(j+1)
High(j+1)
Low(j+1)
Low(j+1)
Low(j+1)
High(n+1)
High(n+1)
High(n+1)
Low(n+1)
Low(n+1)
Low(n+1)
...
...
...
...
Микропроцессорные устройства

5.

Реакция на прерывание в AVR-МК. Использование механизма стека
mm
m
m+1
m+1
m+1
m+1
команда перехода на
ППОП
i-го
прерывания
(i)
ППОП
ППОП
i-го
прерывания
прерывания
(i)
ППОП
i-го
прерывания
ППОПi-го
i-го
прерывания(i)
(i)
Адрес
Адрес
Адрес
Адрес
...
...
...
...
... на
команда
перехода
на
команда
команда
перехода
перехода
на
на
команда
перехода
...
...
...
...
...
n-1
n-1
n-1
n-1
n nn
n+1
n+1
n+1
n+1
n-1
команда
осн.
прогр.
n-1
n-1
команда
команда
осн.
осн.
прогр.
прогр.
прогр.
n-1
команда
осн.
n-1
команда
осн.
прогр.
команда
осн.
прогр.
nnnn
команда
команда
осн.
осн.
прогр.
прогр.
команда
осн.
прогр.
n
команда
осн.
прогр.
n+1
команда
осн.
прогр.
n+1
n+1
команда
команда
осн.
осн.
прогр.
прогр.
прогр.
n+1
команда
осн.
n+1
команда
осн.
прогр.
...
...
...
...
ПрограммаОсновная
Таблица
ПрограммаОсновная
Таблица
ПрограммаПрограмма- программа
Основная
Основная
Таблица
Таблица
обработчик
векторов
обработчик
программа
векторов
обработчик
обработчик
программа
программа прерываний
векторов
векторов
прерывания
прерывания
прерываний
прерывания
прерывания
прерываний
прерываний
00
0
11
1
ПЗУП
ПЗУП
ПЗУП
ПЗУП
ПЗУП
Ячейка
ПЗУП
Ячейка
Ячейка
ПЗУП
ПЗУП
Ячейка
ПЗУП
Ячейка ПЗУП
команда
перехода
после
команда
команда
перехода
перехода
после
после
после
команда
перехода
команда перехода после
сброса
МК
(на
осн.
прог.)
сброса
сброса
МК
МК
(на
(на
осн.
осн.
прог.)
прог.)
прог.)
сброса
сбросаМК
МК(на
(наосн.
осн. прог.)
i ii
1-я
команда
ППОП
1-я
1-я
команда
команда
ППОП
ППОП
1-я
команда
ППОП
1-я
команда
ППОП
j j
j+1
j+1
j+1
jj команда
ППОП
jj команда
команда
ППОП
ППОП
команда
ППОП
команда
выхода
из
ППОП
команда
команда
команда
выхода
выхода
выхода
из
из
из
ППОП
ППОП
ППОП
...
...
...
...
...
...
...
...
4
Указатель
стека
Указатель
Указатель
Указатель
стека
стека
стека
Указатель стека
High(k)
High(k-2)
High(k-2)
High(k-2)
High(k)
High(k-2)
Low(k)
Low(k-2)
Low(k-2)
Low(k-2)
Low(k)
Low(k-2)
Счетчик
команд
Счетчик
Счетчик
Счетчик
команд
команд
команд
Счетчик
команд
High(n+1)
High(n+1)
High(j+1)
High(j+2)
High(i)
High(n)
High(m)
Low(n+1)
Low(n+1)
Low(j+1)
Low(j+2)
Low(i)
Low(n)
Low(m)
ОЗУ
(стек)
ОЗУ
ОЗУ
ОЗУ
(стек)
(стек)
(стек)
ОЗУ
(стек)
адрес
содержимое
адрес
адрес
адрес
содержимое
содержимое
адрессодержимое
содержимое
.........
...
k-5
k-5
k-5
k-5
k-5
k-4
k-4
k-4
k-4
k-4
k-3
k-3
k-3
k-3
k-3
k-2
k-2
k-2
k-2
k-2
k-1
k-1
k-1
k-1
kkk
High(n+1)
High(n+1)
High(n+1)
High(n+1)
Low(n+1)
Low(n+1)
Low(n+1)
Low(n+1)
.........
-- выборка
команды
-- выборка
выборка
команды
команды
выборка
команды
-выполнение
команды
-- выполнение
- выполнение
выполнение
команды
команды
команды
© Мазуренко А.В., 2015
Микропроцессорные устройства

6.

Таблица векторов прерываний МК ATmega16
5
Таблица векторов прерываний

вектора
1
2
3
4
Адрес
вектора
$0000
$0002
$0004
$0006
RESET
INT0
INT1
TIMER2 COMP
5
6
7
$0008
$000A
$000C
TIMER2 OVF
TIMER1 CAPT
TIMER1 COMPA
8
$000E
TIMER1 COMPB
9
10
$0010
$0012
TIMER1 OVF
TIMER0 OVF
11
12
13
14
15
16
17
18
19
20
$0014
$0016
$0018
$001A
$001C
$001E
$0020
$0022
$0024
$0026
SPI, STC
USART, RXC
USART, UDRE
USART, TXC
ADC
EE_RDY
ANA_COMP
TWI
INT2
TIMER0 COMP
21
$0028
SPM_RDY
Источник
© Мазуренко А.В., 2015
Описание
Сброс МК
Внешнее прерывание 0 (External Interrupt Request 0)
Внешнее прерывание 1 (External Interrupt Request 1)
Совпадение при сравнении таймера/счетчика 2 (Timer/Counter2
Compare Match)
Переполнение таймера/счетчика 2 (Timer/Counter2 Overflow)
Захват таймера/счетчика 1 (Timer/Counter1 Capture Event)
Совпадение A при сравнении таймера/счетчика 1 (Timer/Counter1
Compare Match A)
Совпадение B при сравнении таймера/счетчика 1 (Timer/Counter1
Compare Match B)
Переполнение таймера/счетчика 1 (Timer/Counter1 Overflow)
Совпадение при сравнении таймера/счетчика 0 (Timer/Counter0
Compare Match)
Завершение пересылки по ПИСП (Ser ial Transfer Complete)
Завершение приема с помощью УАПП (UART, Rx Complete)
Регистр данных УАПП пуст (UART Data Register Empty)
Завершение передачи с помощью УАПП (UART, Tx Complete)
Завершение АЦ-преобразования (ADC Conversion Complete)
Готовность к следующему сеансу обмена ЭСППЗУ (EEPROM Ready)
Срабатывание аналогового компаратора (Analog Comparator)
Прием данных по двухпроводному интерфейсу I2C
Внешнее прерывание 2 (External Interrupt Request 2)
Совпадение при сравнении таймера/счетчика 0 (Timer/Counter0
Compare Match)
Готовность загрузочного сектора
Микропроцессорные устройства
English     Русский Правила