Вы находитесь на странице: 1из 31

Лекция 3” Микроконтроллеры

и SoC. Microchip AVR® –


программно-функциональная
модель)”

проф. Олег В. Непомнящий


План лекции
1. Микроконтроллер и система на кристалле
2. Система в корпусе
3. Microchip AVR - история и особенности
4. Microchip AVR - программная модель
5. Microchip AVR - аппаратная модель
6. Microchip AVR – регистровый фрейм
7. Microchip AVR Assembler
8. Microchip AVR – разбираем примемы программых кодов
Термины и определения
1. Микроконтроллер (MCU) представляет собой небольшой
компьютер, размещенный на одной интегральной схеме.
Микроконтроллер содержит один или несколько ЦП
(процессорных ядер), а также память программ и данных. В
состав микроконтроллера входят программируемые
периферийные устройства ввода/вывода. Память программ
может быть встроена в микросхему или быть внешней.
Обычно микроконтроллеры предназначены для
встраиваемых приложений.
2. Система на кристалле (SoC) представляет собой
интегральную схему, объединяющую всю электронную
систему. Эти компоненты включают центральный
процессор (ЦП), память, порты ввода/вывода. В отличие от
микроконтроллера СнК может содержать цифровые,
аналоговые, смешанные и часто радиочастотные модули
обработки сигналов. СнК похожа на микроконтроллер
(MCU), но более сложена. СнК может включать
микроконтроллер в качестве одного из своих компонентов.
Термины и определения
3. Система-в-корпусе (SiP) представляет собой
набор интегральных схем, заключенных в один
корпус-носитель микросхемы. Матрицы,
содержащие интегральные схемы, могут быть
уложены вертикально или горизонтально. Они
внутренне соединены тонкими проводами или
припаяны друг к другу и приклеены к корпусу. SiP
похожа на систему на кристалле (SoC), но менее
тесно интегрирована и не находится на одном
полупроводниковом кристалле.
4. AVR. Архитектура AVR была разработана двумя
студентами Норвежского технологического
института (NTH), Альф-Эгилем Богеном и Вегардом
Волланом. A и V — это инициалы имен
Alf-Egil Bogen Vegard Wollan
разработчиков, а R означает RISC.
Термины и определения
5. ROM - Read-only memory (ROM) постоянная память (ПЗУ) —
это общее название типа энергонезависимой памяти. Данные,
хранящиеся в ПЗУ, не могут быть изменены электронным
способом после изготовления запоминающего устройства.
6. EEPROM (Electrically Erasable Programmable Read-Only
Memory) - (электрически стираемое программируемое
постоянное запоминающее устройство) представляет собой тип
энергонезависимой памяти, используемой для хранения
относительно небольших объемов данных, но позволяющей
стирать и перепрограммировать отдельные байты.
7. FLASH - память может быть стерта, записана и прочитана
блоками (или страницами). Большие размеры блоков,
используемые при стирании флэш-памяти, дают ей
значительное преимущество в скорости по сравнению с EEPROM
без флэш-памяти при записи больших объемов данных.
Термины и определения
9. АЛУ - арифметико-логическое устройство
(АЛУ) представляет собой
комбинационную цифровую схему,
выполняющую арифметические и
побитовые операции над двоичными
числами.
10. Регистр состояния (флаги ALU), регистр
флага или регистр кода состояния (CCR)
представляет собой набор битов состояния
для процессора. Каждый бит этого регистра
содержит информацию о результате
операции в АЛУ, например, если результат
операции равен нулю, то флаг Z (признак
нуля) будет установлен в 1
Термины и определения
10. Периферия – Общее
название дополнительных
устройств, подключаемых через
контроллеры к системным
шинам процессора.
11. Порт ввода-вывода — это
разъем, к которому
подключается кабель. Порт
соединяет ЦП с периферийным
устройством через аппаратный
интерфейс или с сетью через
сетевой интерфейс.
Микроконтроллер и система на
кристалле
Интегральные схемы (ИС)
Интегральная схема представляет
собой микросхему, состоящую из
набора электронных схем. Эти схемы
созданы на основе транзисторов.
Транзисторы могут работать и как
резистор, конденсатор, катушка
индуктивности, переключатель и т. д.
Так мы можем создавать очень
маленькие интегральные схемы.
Микроконтроллер и система на
кристалле
Микроконтроллеры:
Микроконтроллер также представляет
собой ИС, которая состоит из ЦП и
других компонентов, таких как ОЗУ,
ПЗУ и порты ввода-вывода. Можно
сказать, что это расширение
микропроцессора. Микроконтроллеры
рассчитаны на выполнение нескольких
функций, например управление
нагревом при помощи цифрового
датчика. Как правило, они
используются во встроенных системах.
Микроконтроллер и система на
кристалле
Это также ИС, но здесь у нас Xiaomi Redmi Note 9 Pro Qualcomm snapdragon 865
больше компонентов, таких как
микроконтроллер, То есть SoC
состоят не только из элементов
памяти и процессора но также они
содержат графические ускорители,
модемы, последовательные
интерфейсы и т.д.
Samsung Galaxy A51
SoC больше похожи на
микроконтроллер. Они
используются в мобильных
устройствах, например в
смартфонах, планшетах и т. д.
Система в корпусе Octavo Systems AM335x

TI OSD335x C-SiP Features


TI Sitara AM335x
Процессор Arm Cortex-A8 up to
1GHz
RAM Up to 1GB DDR3

Электропитание PMIC + LDO


EEPROM 4KB
FLASH Up to 16GB
Система
Integrated
такирования
27mm X 27 mm -
Корпус
400 BGA
Microchip AVR – История создания
Оригинальный микроконтроллер AVR был разработан компанией ASIC
в Тронхейме, Норвегия, в то время называвшейся Nordic VLSI, теперь
Nordic Semiconductor, где Боген и Воллан работали студентами.
Разработчики тесно сотрудничали с разработчиками компиляторов в
IAR Systems, поэтому набор инструкций AVR обеспечивает
эффективную компиляцию языков высокого уровня.
Архитектура 8-битного микроконтроллера AVR была представлена ​в
1997 году. К 2003 году Atmel поставила 500 миллионов флэш-
микроконтроллеров AVR. Платформа Arduino, разработанная для
простых электронных проектов, была выпущена в 2005 году и
включала микроконтроллеры ATmega8 AVR.
В январе 2016 года Microchip купила Atmel за 3,56 миллиарда
долларов.
Microchip AVR – Microchip AVR –
История создания
Microchip AVR – Microchip AVR – История
создания
Microchip Technology Inc. является
одним из ведущим поставщиков
микроконтроллеров и аналоговых
микросхем, обеспечивая более низкую
общую стоимость систем и более
быстрый вывод на рынок тысяч
разнообразных клиентских приложений
по всему миру. Компания Microchip со
штаб-квартирой в Чандлере, штат
Аризона, предлагает превосходную
техническую поддержку наряду с
надежной логистикой и качеством.
Microchip AVR – Microchip AVR –
История создания
Семейства AVR
tinyAVR® MCUs оптимизированы для приложений, требующих
производительности, энергоэффективности и простоты
использования в небольшом корпусе. Встроенный АЦП, ЦАП,
компараторы, память EEPROM и детектор снижения напряжения.
Устройства tinyAVR также имеют флэш-память и модуль встроенного
отладчика.
megaAVR® MCUs являются идеальным выбором для приложений,
требующих большого объема кода, megaAVR имеют большой объем
памяти для программ и данных с производительностью до 20 MIPS.
Встроенная, инновационная технология Atmel picoPower® помогает
минимизировать энергопотребление. Все устройства megaAVR
поддерживают самопрограммирование.
AVR® XMEGA MCUs обеспечивают наилучшее сочетание
производительности в реальном времени, высокой интеграции и
низкого энергопотребления для 8/16-битных приложений.
Microchip AVR – Обзор
Microchip AVR – Программная модель
16-bit 8-bit В микроконтроллерах
AVR имеется три вида
$000 32 General $0000
памяти, поэтому нет
Purpose необходимость во
FLASH Registers $001F внешней памяти в
4K x 16 8-bit
64 Standard $0020 большинстве
I/O Registers $005F $000 приложений.
$0060 Программа хранится в
Application Flash General пространстве памяти
Selection purpose RAM EEPROM команд FLASH, тогда
(SRAM) 512 x 8 как память данных
SRAMEnd
хранит данные SRAM и
Boot Flash Extended
$1FF EEPROM.
$FFF Selection external RAM $FFFF

FLASH SRAM EEPROM


Microchip AVR – Память данных (RAM)
8-bit
Data Address
$0000
Область Память данных состоит
32 General R0 из 3 частей:
$0001
Purpose R1 - GPRs (Регистровый фрейм)

$001F Registers - Регистры ввода-вывода I/O

$0020 - Внутренняя память данных
… 64 Standard SRAM
R29 XL X
I/O Registers
R27 XH GPR включают 32 восьмибитовых
$005F регистра общего назначения
$0060 R28 YL Y
(РОН) с именами R0-R31. Почти
R29 YH

General все не выполняют каких либо
purpose RAM R30 ZL Z специальных функций. Однако
(SRAM) R31 ZH старшие 6 (R29-R31) объединены
SRAMEnd в три пары 16-битных регистров:

Extended X, Y и Z.

$FFFF
external RAM Эти регистры имеют самое короткое (самое быстрое) время
доступа, что позволяет работать арифметико-логическому
устройству (АЛУ) за один цикл.
Microchip AVR – Память данных (RAM)
8-bit
Data Address
$0000 RWBR Область ввода-вывода (Specific Function
$0001
32 General Registers SFRs) Эти регистры управляют
Purpose TWSR
… ЦП, функциями периферийных
$001F Registers устройств, состояниями процессора,

$0020 таймерами, контроллерами
… 64 Standard SPH последовательной связи, портами ввода-
I/O Registers SREG вывода, АЦП и так далее. Эти регистры
$005F
$0060 так же 8-битные.
General Количество периферийных устройст и объем памяти у разных

purpose RAM ЧИПов отличаются. Однако все AVR имеют как минимум 64
(SRAM) байта ячеек для ввода-вывода.
SRAMEnd В AVR с более чем 32 контактами на корпусе например,

Extended ATMega64, ATMega128 и ATMega256) также имеется
external RAM расширенная память ввода-вывода, которая содержит регистры
$FFFF для управления дополнительными портами и дополнительными
периферийными устройствами.
Microchip AVR – Память данных (RAM)
Data Address
$0000 Встроенная память данных используется для временного
$0001
32 General
Purpose хранения временных данных и констант определнных

$001F Registers программистам AVR и компилятором C.
$0020 К каждой ячейке SRAM можно получить доступ по адресу
… 64 Standard для чтения или записи любых данных. Данные 8-битные
I/O Registers (Доступ по адресу осуществляется с использованием
$005F инструкций LDS и STS)
$0060 ПРИМЕР:
General LDS R1,0x0060 ; Load R1 with the contents of memory

purpose RAM ; cell witch location is SRAM address
(SRAM) ; 0x60
SRAMEnd STS 0x0060,R1 ; Store contents of R1 to memory

Extended
$FFFF
external RAM Размер SRAM может варьироваться в зависимости от чипа, даже
среди членов одного семейства.
AVR Assembler. Регистры
GPRs (РОН) спользуются для временного хранения информации. Эта
информация может быть байтом данных для обработки или адресом,
указывающим на данные, которые нужно извлечь. Подавляющее
большинство регистров AVR являются 8-битными регистрами. Эти
регистры могут использоваться всеми арифметическими и логическими
операциями.

LDI (Load Immediate) – copies 8-bit data into GPR


Example:
LDI R16,53 ; loads the R16 with the value 53 in decimal
LDI r12,0x1F ; loads the R16 with the value 1F in hexadecimal
LDI r04,$1F99 ; invalid instruction
MOV (move) – copies 8-bit GPR
MOV R22,R10 ; copy r10 into r22
Microchip AVR – Регистр статуса (флагов) (SREG)
Status register (SREG) в AVR это 8-битный регистр. Содержит
D7 D0
информацию о состоянии процессора. Его также называют
I T H S V N Z C регистром флагов. Биты C, Z, N, V, S и H называются
условными флагами, что означает, что они указывают на
некоторые условия, возникающие после выполнения
инструкции.
C, the carry flag. Этот флаг устанавливается всякий раз, когда происходит перенос из бита D7.
Z, the zero flag. Признак нуля. отражает результат арифметической или логической операции.
N, the negative flag. Признак отрицательного числа.
V, the overflow flag. Этот флаг устанавливается, если результат операции со знаком слишком
велик, что приводит к переполнению бита старшего разряда битом знака.
S, the sign flag. При вычислении чисел со знаком возникает, если после арифметической
операции возникает отрицательный результат. Флаг S = V XOR N.
H, the half carry flag. Если во время операции ADD или SUB происходит перенос из D3 в D4, этот
бит устанавливается, в противном случае он очищается. (Междтетрадный перенос)
T, the custom flag. Пользовательский флаг
Iфлаг разрешения прерывания. При значении 1 все прерывания разрешены.
AVR – Assembler. Команды (инструкции)
Некоторые инструкции по выполнению арифметических и логических
операций
ADD (addition) MUL (multiplication) INC (increment)
SUB (subtraction) AND (logic AND) DEC (decrement)

Пример - 1: Пример - 2: Пример - 3


ADD R25,R9 ; R25=R25+R9 ldi r16,19 ldi r16,19
SUB R25,R9 ; R25=R25-R9 ldi r20,95 ldi r20,95
INC R25 ; R25=R25+1 ldi r21,5 add r16,r20
DEC R25 ; R25=R25-1 add r16,r20 ldi r20,5
SER R22 ; Set R22=0xFF=255 add r16,r21 add r16,r20
SUBI R22,2 ; R22=R22-2
CLR R22 ; Clear R22=0
3-й лучше 2-го ПОЧЕМУ?
AVR – Assembler. Shift и Rotate
Carry flag
SREG C
0

D7 D6 D5 D4 D3 D2 D1 D0 D7 D6 D5 D4 D3 D2 D1 D0

Пример - 1 Пример - 2
stc ; Set bit C (SREG) ldi r23,0b11110000
ldi r23,0b11110000 lsr r23 ; logic shift to right r21
ror r23 ; rotate to right r21 Результат в r23 это 0b01111000 все
Результат в r23 это 0b11111000 биты сдвинуты в право
Все биты по круку перемещены в
А сдвиг влево?
право C=0
AVR – Assembler. Представления чисел и
операции над ними
Числа Операции
250 - Decimal ! Negation == Equal
045 - Octal +- Plus, Minus != Not equal
$1F - Hexadecimal << >> Left / Right Shift & Bitwise "AND"
0x1F - Hexadecimal <> Less / Greater | Bitwise "OR"
0b11001100 - Binary
Пример 1:
ldi r22, 0b00011100
ldi r17, r22 >> 2 ; In r17 load r22 shifted right 2 times
Результат в r17 это 0b00000111 все биты сдвинуты в лево на 2 позиции
Пример 2:
ldi r22, 0b00011100
ldi r17, r22 & 0xF0 ; In r17 load Bitwise "AND” r22 and 0b11110000
Результат в r17 это 0b00010000 биты перемножены побитово
AVR – Assembler. Директивы и функции
Существует более 15 функций, таких как low(), high(), exp(), abs() и т.д. …
Существует более 25 директив ассемблера, таких как .byte, .org, .cseg и т. д.
Также есть более 10 директив препроцессора, таких как #include, #define…
Пример Data segment Command segment
.dseg RAM FLASH
.org 0x70 Address Address
Array:. db 10, 0x12 $0060 ? $0000 ldi r30, low (Array)
.cseg … … ldi r31, high (Array)
ldi r30, low (Array) $0070 10 ld r28, Z+
ldi r31, high (Array) $0071 0x12
ld r28,Z+ $0072 ? Z - register
Результат в r28 это 10, $0073 ? $00 $70
Z=r31:r30=0x71 …
? $00 $71
Z – register ++
AVR – Assembler. Простой пример 1
; Задача Заполнить массив константой
.dseg ; Это сегмент данных — (адрес SRAM 0x60)
mas:. byte 10 ; мы зарезервировали 10 байт в
; Начальный адрес массива (метка) mas
.cseg ; Это сегмент команд - Flash (адрес 0)
ldi r30, low (mas) ; Загрузите младшую часть адреса первого элемента в ZL
ldi r31, high (mas) ; Массив имеет 16-битный адрес
ldi r22, $ 55 ; Константа 55 - hex
ldi r23,10 ; Счетчик 10 байт
m1: st z+,r22 ; Сохранить константу по адресу в Z, после этого увеличить Z
dec r23 ; Уменьшение счетчика
brne m1 ; Если счетчик еще не 0, то перейти к отметке m1
m2: rjmp m2 ; В противном случае - стоп
AVR – Assembler. Простой пример 2
; Задача найти минимальный элемент массива
.def minimum = r20 ; “minimum” is r20 register
.dseg
mas:. db 10, 5, 0x12, $ FF, -4 ; это сегмент данных - RAM (адрес 0x60)
; определяем в нем 5 байт
.cseg ; это сегмент команд - Flash (адрес 0)
ldi r30, low (mas) ; загрузить адрес первого элемента в Z
ldi r31, high (mas)
ldi r23, 5 ; счетчик 5 байт отрицательный
m1: ld minimum, z+ ; загрузить текущий элемент массива в «минимум» и Z++
cp minimum, r22 ; сравнить минимальный и текущий элемент
brlo m2 ; если минимум меньше то идем дальше
mov minimum, r22 ; если минимум больше, то заменим на новый
m2: dec r23 ; уменьшить счетчик
brne m1 ; если счетчик еще не 0 то переходим к отметке m1
m3: rjmp m3 ; иначе стоп
НАЙШЛИ ОШИБКУ? ДА НЕТ
Задание
1. Мы рассмотрели микроконтроллеры, интегральные схемы,
системы на кристалле и системы в корпусе, но что вы думаете
о микропроцессоре?
2. Как, на ваш взгляд, организовано программное обеспечение в
этих системах? В чем разница и сходство между ними в
разработке программного обеспечения и в его применении?
3. Напишите небольшое (максимум 10 страниц) эссе на тему «От
интегральной схемы к системе в корпусе».
4. Лабораторная работа 2 «Проектирование приложений для
работы с памятю».
Лекция 2 – Рекомендуемая литература и
видео
1. Sarmad Naimi, Sepehr Naimi, Muhammad Ali Mazidi. The Avr Microcontroller and Embedded
Systems Using Assembly and C: Using Arduino Uno and Atmel Studio. MicroDigitalEd, 2017. p.632.
ISBN 0997925965. Section 0.1 numeric and coding systems. Chapter 1 The AVR
microcontroller history and features. Chapter 2 AVR architecture and assembly language
programming.
2. Steven F. Barrett, Daniel J. Pack. Microchip AVR® Microcontroller Primer: Programming and
Interfacing, Third Edition. Synthesis Lectures on Digital Circuits and Systems. Morgan & Claypool
Publishers, 2019. p.373. ISBN 1681736233. Part 1 . Atmel AVR Architecture Overview
3. Thomas Grace. Programming and Interfacing ATMEL® AVR® Microcontroller. © 2016 Cengage
Learning PTR. p.283. ISBN-13: 978-1-305-50999-3. Chapter 1. Digital Systems. Chapter 2
Microcomputer Architecture, The AVR Family of Microcontrollers
4. https://www.newbiehack.com/MicrocontrollerTutorial.aspx Microcontroller Tutorial Made for the
Beginner – Video lessons.
5. https://www.youtube.com/watch?v=HKrgVZ_b9Eo Atmel: Introduction of the Atmel AVR XMEGA
Microcontroller (MCU)
6. http://www.rjhcoding.com/index.php AVR assembler and C tutorials and examples ALL OF YOU
NEED :)
7. Microchip AVR® Assembler. User Guide. © 2017 Microchip Technology Inc. DS40001917A. p.45
Спасибо за внимание!
Демонстрационные материалы к
лекции:
1Лабораторная плата STK - 500
2. Дрон - DJI Mavic mini
3. Микросхемы

Вам также может понравиться