# 12. Архитектура микропроцессора AVR ## Схема на английском языке ### Хорошее объяснение на английском https://www.youtube.com/watch?v=itYs-vz-E08 ![](https://i.imgur.com/PmiJaCj.png) ![](https://i.imgur.com/ymzLfyL.png) ## Схема на русском языке ![](https://i.imgur.com/kvuayGT.png) ### Объяснение на русском https://www.youtube.com/watch?v=PAHQaU3iY28&t=446s ### Конспект Ядро состоит, в первую очередь, из памяти программ (Flash Programm Memory) и Арифметико-логического устройства (ALU), блока управления (на диаграмме не показан) и программного счетчик (Program Counter). Также есть тактовый генератор, задающий импульсы относительно которых работают блоки микроконтроллера. При старте микроконтроллера значение программного счетчика равно 0000 — это адрес первой команды в нашей flash ROM. Микроконтроллер хватает оттуда два байта (код команды и ее аргументы) и отдает на выполнение в декодер команд (Instruction Decoder). Декодер команд загребает команду и скармливает ее логике блока управления, который уже пинает все остальные блоки, заставляя их делать нужные действия в нужном порядке. Вся математика и обработка делается посредством ALU.Он может складывать, вычитать, сравнивать, сдвигать разными способами, иногда делить и умножать. В качестве промежуточных операндов используются 32 ячейки — Оперативные регистры общего назначения РОН. ***Младшие R0..R15*** Обычные регистры общего назначения, но какие то ущербные. С ними не работают многие команды, например, такие как загрузка непосредственного числа. Т.е. нельзя, например, взять и присвоить регистру число. Зато можно скопировать число из любого другого регистра. ***Старшие R16..R31*** Полноценные регистры, работающие со всеми командами без исключения. ***Индексные R26…R31*** Шесть последних регистров из старшей группы особенные. В принципе, их можно юзать и как обычные регистры общего назначения. Но, кроме этого, они могут образовывать регистровые пары X(R26:R27), Y(R28,R29), Z(R30:R31) которые используются как указатели при работе с памятью. ***ОЗУ*** Кроме 32 регистров в микроконтроллере есть оперативная память. Оперативная память это несколько сотен ячеек памяти. В этих ячейках могут храниться любые данные, а доступ к ним осуществляется через команды Load и Store. ***EEPROM*** Долговременная память. Память которая не пропадает после выключения питания.ЕЕПРОМ используется для сохранения всяких настроек, предустановок, собранных данных и прочего барахла, что может потребоваться после включения питания и в основном на чтение. ***Периферия*** Порты ввода вывода — то без чего невозможно взаимодействие контроллера с внешним миром. UART/USART приемопередатчик — последовательный порт. Таймеры/счетчики — задача таймеров отсчитывать тики. Им же можно подсчитывать длительность входных сигналов, подсчитывать число входных импульсов. АЦП — аналоговый вход.Позволяет взять и замерить аналоговый сигнал. АЦП это своеобразный вольтметр. I2C(TWI) интерфейс — последовательная шина IIC. Через нее осуществляется связь с другими устройствами. SPI — еще один последовательный протокол, похожа на IIC, но не позволяет организовывать сети. Работает только в режиме Мастер-Ведомый. SPI — еще один последовательный протокол, похожа на IIC, но не позволяет организовывать сети. Работает только в режиме Мастер-Ведомый. JTAG/DebugWire — средство отладки, позволяет заглянуть в мозги контроллера с помощью специального адаптера PWM — ШИМ генератор. Вообще это не отдельный блок, а дополнительная функция таймера, но тоже полезная. С помощью ШИМ генератора легко задать аналоговый сигнал. Например, менять яркость свечения светодиода или скорость вращения двигателя. ## Описание компонентов - **Программный счетчик** - **Указатель стека** > [name=Дарья Воронская]какого такого компьютера, у нас авр... точно та инфа, которая нужна? - **Регистр команд** — регистр управляющего устройства компьютера. Он предназначен для хранения кода команды на период времени, который необходим для ее выполнения - **Декодер команд (Instruction Decoder)** - блок, обрабатывающий шестнадцатибитные инструкции и управляющий АЛУ - **АЛУ**(Арифметико-Логическое Устройство) -выполняет арифметические и логические операции. Напрямую связано с регистрами. Любая операция выполняется за 1 такт - **GPR (Регистры общего назначения РОН)** - хоть регистры XYZ и нарисованы отдельно, они также относятся к РОН. Эти регистры являются 16-битными указателями адреса для косвенной адресации в области памяти данных - **Control Lines** - ??? - **Регистр признаков (Status register, SREG)**