Добавил:
ivanov666
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз:
Предмет:
Файл:Разработка киберфизических систем на основе микроконтроллеров. Учебное пособие
.pdf
Лекция 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
Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]
