---
# System prepended metadata

title: 12. Архитектура микропроцессора AVR

---

# 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)**

