6.06M
Категория: ЭлектроникаЭлектроника

Особливості виконання програм AVR - мікроконтролерів

1.

Національний аерокосмічний університет ім. М.Є. Жуковського
Цифрові пристрої
Digital devices
&
Microprocessors
Мікропроцесори
Тема 5:
Особливості виконання програм
AVR-мікроконтролерів
к.т.н., доцент каф.501
Мазуренко О.В.

2.

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

3.

2
Послідовний хід виконання програми AVR-МК
Адреса
Адреса
00
11
22
ПЗПП
ПЗПП
Комірка ПЗПП
ПЗПП
Комірка
1-а команда
команда
1-а
2-а команда
команда
2-а
3-я команда
команда
3-я
nn
n+1
n+1
END
END
Лічильник
Лічильник команд
команд
HighByte(n+1)
HighByte(n)
00
LowByte(n+1)
LowByte(n)
1
020
HighByte
HighByte
LowByte
LowByte
...
...
Регістр команд
команд
Регістр
1-а команда
команда
2-а
3-я
0
1-а
1-а
команда
2-а
3-я команда
0
1-а
HighByte
HighByte
LowByte
LowByte
...
...
Декодер команд
команд
Декодер
...
...
0 01 1
1
0 01 1
0
0
Сигнали керування для
(n-1)-ї
1-ї
n-ї
2-ї команди
END-ї
команди
© Мазуренко О.В., 2018
Мікропроцесори і їх програмування

4.

3
Стек AVR-МК
Стек – частина простору ОЗП, яка виділяється для зберігання адрес
повернення в точку програми, де було здійснено виклик підпрограми
(після виходу з неї), а також тимчасового зберігання (по командам
користувача) вмісту РЗП.
Поточна вершина
стеку
ОЗП
Адреса
Вміст комірки
...
k-5
k-4
k-3
k-2
k-1
k
стек
Вказівник стеку
High(k)
Low(k)
...
Вказівник стеку – потрібно обов’язково ініціалізувати (вказати початкову
вершину стеку) до використання стеку.
© Мазуренко О.В., 2018
Мікропроцесори і їх програмування

5.

4
Виконання програми AVR-МК з викликом підпрограм
ПЗПП
Вміст комірки
Адреса
...
команда ініціалізації ВС (k)
n-1
n
n+1
n-1 команда
виклик
підпрограми
1 (m)
виклик
підпрограми
1 (m)
n+1 команда
n+1 команда
Основна
програма
...
...
3
3
1-а команда ПП1
m
...
2
j
j+1
виклик
підпрограми
2 (x)2 (x)
виклик
підпрограми
j+1 команда
...
3
q
2
вихід із ПП1
...
x
1-а команда ПП2
...
y
© Мазуренко О.В., 2018
вихід із ПП2
Підпрограма 2 Підпрограма 1
(ПП1)
(ПП2)
f
Вказівник стеку
High(k-4)
High(k-2)
High(k)
Low(k-4)
Low(k-2)
Low(k)
3
122
Лічильник команд
High(n+1)
High(n+2)
High(q+1)
High(y+1)
High(j+1)
High(m)
High(n)
High(y)
High(х)
High(j)
Low(n+1)
Low(n+2)
Low(q+1)
Low(y+1)
Low(j+1)
Low(m)
Low(n)
Low(y)
Low(х)
Low(j)
ОЗП (стек)
Адреса
Вміст комірки
1
1
2
2
...
k-5
k-4
k-3
k-2
k-1
k
High(j+1)
Low(j+1)
High(n+1)
Low(n+1)
...
Мікропроцесори і їх програмування

6.

Поняття переривань мікропроцесорного пристрою.
Переривання AVR-МК
5
Переривання – це асинхронна подія, викликана сигналом переривання, що вимагає призупинення
виконання основної програми, а також обробки підпрограмою обробником переривання (ППОП), після
чого виконання основної програми може бути продовжено в штатному режимі.
Таблиця векторів переривань AVR-МК:

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

7.

6
Реакція AVR-МК на переривання
ПЗПП
ПЗПП
m
m
m+1
m+1
m+1
команда
команда переходу
переходу на
на
ППОП
ППОП
ППОПi-го
i-го
i-го
прерывания
прерывания
прерывания
(i)(i)
(i)
3
...
...
n-1
n-1
nn
n+1
n+1
n-1
n-1 команда
команда осн.
осн. прогр.
прогр.
nn команда
команда осн.
осн. прогр.
прогр.
n+1
n+1 команда
команда осн.
осн. прогр.
прогр.
...
...
2
ii
1-а
1-а команда
команда ППОП
ППОП
...
...
jj
j+1
j+1
jj команда
команда ППОП
ППОП
команда
команда виходу
виходу зз ППОП
ППОП
...
...
Основна
програма
...
...
Підпрограмаобробник
переривань
команда
команда переходу
переходу після
після
скидання
скидання МК
МК (на
(на осн.
осн. прог.)
прог.)
Таблиця
векторів
переривань
Вміст
Вміст комірки
комірки
Адреса
Адреса
00
11
Вказівник
Вказівник стеку
стеку
High(k-2)
High(k)
High(k)
Low(k-2)
Low(k)
Low(k)
-- вибірка
вибірка команди
команди
-- декодування
декодування іі виконання
виконання команди
команди
© Мазуренко О.В., 2018
3
2
1
Лічильник
Лічильник команд
команд
High(n+1)
High(n+2)
High(n+1)
High(i+1)
High(j+1)
High(m)
High(n)
High(i)
Low(n+1)
Low(n+2)
Low(n+1)
Low(i+1)
Low(j+1)
Low(m)
Low(n)
Low(i)
ОЗП
ОЗП (стек)
(стек)
1
2
Адреса
Адреса Вміст
Вміст комірки
комірки
...
...
k-5
k-5
k-4
k-4
k-3
k-3
k-2
k-2
k-1
k-1
kk
High(n+1)
Low(n+1)
...
...
SREG(I)=0
SREG(I)=1
SREG(I)=1
Мікропроцесори і їх програмування
English     Русский Правила