Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Разработка киберфизических систем на основе микроконтроллеров. Учебное пособие

.pdf
Скачиваний:
1
Добавлен:
08.09.2026
Размер:
2 Мб
Скачать
☆
Лекция 6. Микропроцессоры и микроконтроллеры в киберфизических системах
31
36 тактов генератора, а сами инструкции могут быть одно-, двух- или трёх­байтовыми.
RISC (Reduced Instruction Set Computer – компьютер с набором сокра-
щённых инструкций). Концепция, положенная в основу данной архитекту­ры, предполагает реализацию инструкций фиксированной длины и стре­мится к выполнению каждой инструкции за один такт системного генера­тора. Таким образом, RISC архитектура получает сравнительное преиму­щество в производительности, без повышения тактовой частоты. Благодаря этому RISC-архитектура стала более перспективной и получила в настоя­щее время наибольшее распространение. Примером микроконтроллеров с
RISC-архитектурой могут послужить микроконтроллеры AVR фирмы Atmel и микроконтроллеры PIC фирмы Microchip.
В то же время разные производители в стремлении повысить функци­ональность и производительность своих изделий, часто используют пре­имущества и тех и других архитектурных принципов. Поэтому разделение этих принципов довольно условно. К примеру, в микроконтроллерах AVR для реализации принципов RISC-архитектуры, разработчикам пришлось расширить разрядность памяти программ до 16 бит. Память программ и память данных разделены и соответствуют Гарвардской архитектуре. Практически все инструкции процессорного ядра за исключением тех, у которых операндом является 16-разрядный адрес, выполняются за один такт. Создатели этой архитектуры (Alf Bogen и Vergard Wollan) называли её улучшенной RISC-архитектурой (Enhanced RISC).
Процессорные ядра современных микроконтроллеров содержат, как правило, такие общие элементы, как блок регистров общего назначения (РОН), регистры ввода вывода, стек, арифметико-логическое устройство (АЛУ), регистр состояния (регистр флагов), регистр команд и программный счётчик.
Регистры общего назначения (РОН) – предназначены для временного размещения данных в процессе выполнения операций процессорным яд­ром. Блок регистров общего назначения иногда называют регистровым файлом. Регистры из блока РОН, как правило, имеют разрядность, соответ­ствующую разрядности процессорного ядра. Функциональность регистров общего назначения может быть различной. Один из регистров, обладаю­щий наибольшей функциональностью, обычно называется аккумулятором. При выполнении арифметических, логических и других операций, один из
1. Основы проектирования киберфизических систем
32
операндов должен находиться именно в аккумуляторе. Аккумулятор также в большинстве операций является приёмником результата вычислений.
Стек – некоторая область памяти, которая организуется либо в памяти
данных, либо в блоке РОН. Стек – это определённая структура из последо­вательно расположенных ячеек памяти с особыми методами доступа и ис­пользования, имеющая важные функциональные особенности. Например: благодаря организации стека, становится возможной реализация вызова и возврата из подпрограмм. При вызове подпрограммы, на вершине стека ап­паратно сохраняется содержимое программного счётчика, а в программный счётчик загружается адрес местонахождения подпрограммы. После выпол­нения подпрограммы, осуществляется обратная загрузка из стека в про­граммный счётчик и микроконтроллер, таким образом, возвращается к вы­полнению прерванной основной программы. Метод доступа к данным со­храняемым на стеке осуществляется по принципу «последним пришёл – первым вышел», т. е. последние данные, сохранявшиеся ранее на стеке, при операции извлечения из стека будут считаны первыми. Кроме того, возмо­жен и программный доступ к стеку, т. е. на стеке можно сохранять данные, адреса, операнды, промежуточные результаты вычислений и пр., при усло­вии тщательного соблюдения правил и особенностей работы со стеком.
Арифметико-логическое устройство (АЛУ) представляет собой логи-
ческую схему, которая позволяет производить над операндами из регистров общего назначения арифметические и логические действия в соответствии с кодом операции, хранящимся в регистре команд. Спектр различных дей­ствий над операндами зависит от конкретного процессорного ядра. В одних микроконтроллерах – это простейшие арифметические и логические дей­ствия, такие как сложение, вычитание, инкрементирование и декременти­рование, логические AND, OR, XOR, NOT и пр., в других доступны также аппаратные умножение и деление, операции над числами с фиксированной и плавающей запятой и т.д. Кроме того, АЛУ непосредственно связано с регистром состояния (регистром флагов). Флаги регистра состояния позво­ляют отслеживать атрибуты результатов арифметических и логических операций, такие как переполнение, перенос, нулевой результат, отрица­тельный результат и т.п. Флаги могут быть доступны как для чтения, так и для записи. На рис. 9 показано подключение к АЛУ блока РОН и регистра флагов SREG микроконтроллера AVR [4].
Лекция 6. Микропроцессоры и микроконтроллеры в киберфизических системах
33
Рис. 9. Арифметико-логическое устройство
Регистр команд содержит текущую инструкцию, выполняемую про­цессорным ядром, после выполнения которой, из памяти программ будет считана следующая. Инструкция преобразуется дешифратором команд в сигналы микропрограммного автомата процессорного ядра.
Программный счётчик – функциональный регистр, в котором содер- жится адрес следующей инструкции в памяти программ. После выполнения текущей инструкции, из памяти программ будет считана следующая, а со­держимое программного счётчика увеличится на количество считанных байт.
Регистры ввода-вывода предназначены для обеспечения взаимодей­ствия микроконтроллера с внешними периферийными устройствами. Реги­стры ввода-вывода позволяют управлять сигналами на выводах микро­контроллера и реагировать на сигналы, поступающие извне.
Регистры ввода-вывода реализованы таким образом, что возможно об­ращение как к целому регистру, так и отдельно к каждому из разрядов. Программная модель регистров ввода-вывода может различаться у разных микроконтроллеров. В одних микроконтроллерах область регистров ввода-
1. Основы проектирования киберфизических систем
34
вывода является частью регистрового файла РОН и ввод-вывод осуществ­ляется командами работы с РОН (ядро CIP-51 фирмы Silicon Laboratories), в других же существует специальная группа команд ввода-вывода (AVR фирмы Atmel или Z8 фирмы Zilog).
Память программ Flash (ПЗУ) предназначается для размещения про-
грамм микроконтроллера. Технология, используемая при производстве па­мяти этого типа, гарантирует сохранность программ микроконтроллера в течение 40 лет, при обеспечении нормальных условий эксплуатации. Коли­чество циклов перезаписи не менее 100000 [5].
Микроконтроллеры AVR оснащаются Flash-памятью различного объ­ёма. Например, микроконтроллер ATmega8 содержит Flash-память, объё­мом 8 Кбайт (8192 байта). Учитывая то, что формат инструкций 16- или 32-разрядный, то можно говорить о практическом объёме в 4 096 двухбайт­ных слов.
Доступ к памяти программ осуществляется с помощью независимой
16-разрядной адресной шины и специального регистра PC (Program Counter – программный счётчик). Регистр PC в процессе выполнения про-
граммы микроконтроллера содержит текущий адрес команды хранящейся в Flash-памяти (ПЗУ).
Все выводы портов AVR имеют независимое управление, симметрич­ные нагрузочные характеристики и допускают входные и выходные токи до 20…25 мА.
Каждый из портов представляет собой 8-битную группу выводов. Каждому порту присвоено символическое буквенное обозначение A, B, C, D и т.д. Для обозначения на схемах принято использование следующего формата обозначений: PA1...PA7 (порт A разряды 1...7), PB1..PB7 (порт B разряды 1…7) и т.д. В некоторых моделях микроконтроллеров порты могут содержать меньше 8-разрядов [6].
Кроме того, многие линии имеют альтернативное назначение, что предполагает возможность использования линий не только в качестве пор­тов ввода-вывода, но и в качестве линий подключенных к внутренним пе­риферийным модулям микроконтроллера, например к входным линиям АЦП, или встроенного компаратора, к линиям модулей USART, SPI и пр.
Описание выводов микроконтроллера ATmega8 приведено в табл. 1, а схема их расположения на рис. 10 [6].
Лекция 6. Микропроцессоры и микроконтроллеры в киберфизических системах
35
Таблица 1
Описание выводов микроконтроллеров ATmega8
Номер
вывода
в корпусе
DIP-28
Номер
вывода
в корпусах
TQFP-32 и
MLF-32
Функция
вывода
Описание
14
12
PB0
0-й бит порта B
ICP1
Вход захвата таймера-счетчика 1
16
13
PB1
1-й бит порта B
OC1A
ШИМ-вывод A таймера-счетчика 1
16
14
PB2
2-й бит порта B
OC1B
ШИМ-вывод B таймера-счетчика 1
SS
Вывод Slave нашине SPI
17
15
PB3
3-й бит порта B
OC2
ШИМ-вывод таймера-счетчика 2
MOSI
Выход Master или вход Slave данных на шине SPI
18
16
PB4
4-й бит порта B
MISO
Вход Master или выход Slave данных на шине SPI
19
17
PB5
5-й бит порта B
SCK
Выход Master или вход Slave тактового сигнала модуля SPI
9
7
PB6
6-й бит порта B
XTAL1
Вывод тактового генератора
TOSC1
Вывод для подключения резонатора к таймеру-счетчику 2
10
8
PB7
7-й бит порта B
XTAL2
Вывод тактового генератора
TOSC2
Вывод для подключения резонатора к таймеру-счетчику 2
1. Основы проектирования киберфизических систем
36
Продолжение табл. 1
Номер
вывода
в корпусе
DIP-28
Номер
вывода
в корпусах
TQFP-32 и
MLF-32
Функция
вывода
Описание
2
30
PD0
0-й бит порта D
RXD
Вход USART
3
31
PD1
1-й бит порта D
TXD
Выход USART
4
32
PD2
2-й бит порта D
INT0
Вход внешнего прерывания 0
5
1
PD3
3-й бит порта D
INT1
Вход внешнего прерывания 1
6
2
PD4
4-й бит порта D
XCK
Вход/выход внешнего тактового сигнала модуля USART
T0
Вход/выход внешнего тактового сигнала таймера-счетчика 0
11
9
PD5
5-й бит порта D
T1
Вход/выход внешнего тактового сигнала таймера-счетчика 1
12
10
PD6
6-й бит порта D
AIN0
Неинвертирующий вход компаратора
13
11
PD7
7-й бит порта D
AIN1
Инвертирующий вход компаратора
23
23
PC0
0-й бит порта C
ADC0
0-й вход АЦП
24
24
PC1
1-й бит порта C
ADC1
1-й вход АЦП
Лекция 6. Микропроцессоры и микроконтроллеры в киберфизических системах
37
Окончание табл. 1
На рис. 11 приведено внутреннее логическое устройство одной линии
порта ввода-вывода. К каждому порту соответствуют три регистра ввода вывода: DDRx, PORTx и PINx (x – имя порта A, B, C и т.д.). Адреса реги­стров портов ввода-вывода A, B, C, D находятся в первой половине адрес­ного пространства РВВ, поэтому доступно управление отдельными разря­дами портов. В цифровых портах AVR реализован режим «чтение – моди­фикация – запись».
Номер
вывода
в корпусе
DIP-28
Номер
вывода
в корпусах
TQFP-32 и
MLF-32
Функция
вывода
Описание
25
25
PC2
2-й бит порта C
ADC2
2-й вход АЦП
26
26
PC3
3-й бит порта C
ADC3
3-й вход АЦП
27
27
PC4
4-й бит порта C
ADC4
4-й вход АЦП
SDA
Вход/выход данных модуля TWI
28
28
PC5
5-й бит порта C
ADC5
5-й вход АЦП
SCL
Вход/выход тактового сигнала модуля TWI
1
29
PC6
6-й бит порта C
RESET
Вход сброса
-
19
ADC6
6-й вход АЦП
-
22
ADC7
7-й вход АЦП
8,22
3,5,21
GND
Общий вывод
21
20
VREF
Вход опорного напряжения для АЦП
20
18
AVCC
Вывод источника питания АЦП
7
4,6
VCC
Вывод источника питания микроконтроллера
1. Основы проектирования киберфизических систем
38
Рис. 10. Расположение выводов ATmega8
х – название порта А, В, С, D и т.д.
n – номер линии 0–7
Рис. 11. Внутренняя схема линии порта ввода-вывода
Лекция 6. Микропроцессоры и микроконтроллеры в киберфизических системах
39
Регистр DDRx предназначен для переключения направления передачи
данных. Запись лог.1 в разряды DDRx настраивает линии на вывод, а за­пись лог. 0 – на ввод. Например:
ldi R16,0b11100011; настроить на ввод линии 2, 3, 4 и out DDRB,R16; на вывод линии 0, 1, 5, 6, 7 порта В sbi DDRB,0; настроить на вывод линию 0 порта В cbi DDRB,1; настроить на ввод линию 1 порта В Назначение регистра PORTx зависит от содержимого DDRx. При
настройке линий порта на вывод, содержимое PORTx определяет логиче­ское состояние выводов порта, а при настройке порта на ввод, регистр PORTx определяет подключение к линиям порта внутренних подтягиваю­щих резисторов (pull-up) к шине питания. Установка в 1 линию разрядов PORTx означает подключение внутреннего pull-up резистора, а установка в 0 – отключение.
Пример применения: ldi R16,0b11110000; настроить на вывод линии 4…7 out DDRC,R16; и на ввод линии 0…3 порта С
ldi R16,0b11111111; выставить на линиях 4…7 порта С уровень лог.1 out PORTC,R16; и подключить к линиям 0…3 порта С pull-up резисто-
ры
sbi DDRC,0; настроить на вывод линию 0 порта С cbi PORTC,0; выставить на линии 0 порта С уровень лог.0
сbi DDRC,1; настроить на ввод линию 1 порта С сbi PORTC,1; отключить pull-up резистор
Регистр PINx предназначен для считывания уровней сигнала с выво­дов микроконтроллера. Естественно, что необходимость в этом существует только для линий настроенных на ввод (для линий настроенных на вывод содержимое PINx повторяет состояние выходного регистра PORTx). Разря­ды PINx не оказывают никакого влияния на состояние выводов, а сам ре­гистр доступен только для чтения.
Пример использования:
cbi PORTD,0; настроить на ввод линию 0 порта D
sbi PORTD,0; подключить к линии 0 порта D pull-up резистор
nop; задержка 1 цикл для установки режима
sbis PIND,0; считать состояние линии 0 порта D
1. Основы проектирования киберфизических систем
40
rjmp ulo; если лог.0, то перейти на метку ulo rjmp uhi; если лог.1, то перейти на метку uhi
В микроконтроллерах AVR предусмотрена возможность управления
подключением подтягивающих резисторов сразу ко всем его выводам. Бит PUD регистра ввода-вывода SFIOR или MCUCR. Установка бита PUD в 1 отключает pull-up резисторы от выводов порта, а его сброс в 0 разрешает управление подключением резисторов через PORTx.
При переводе микроконтроллера в спящий режим по команде sleep,
входной буфер порта отключается.
Варианты настройки портов ввода-вывода микроконтроллера AVR
приведены в табл. 2.
Таблица 2
Конфигурация выводов порта
Для использования альтернативных функций линий микроконтроллера
необходимо произвести их настройку. Для использования компаратора или АЦП, от соответствующих линий необходимо отключить pull-up резисто­ры, а для вывода сигналов от таймера или организации ШИМ-управления, линии должны настраиваться на вывод [6].
Контрольные вопросы
1. Дайте определение понятиям «микроконтроллер» и «микропроцес-
сор».
2. Опишите архитектуру микроконтроллера.
DDRxn
PORTxn
PUD
Функция
вывода
Резистор
Примечание
0 0 X
Вход
Отключен
На выводе z-состояние
0 1 0
Вход
Подключен
На выводе присутствует положительное смещение к источнику питания
0 1 1
Вход
Отключен
На выводе z-состояние
1 0 X
Выход
Отключен
На выводе лог.0
1 1 X
Выход
Отключен
На выводе лог.1
Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]