Библиотека                      оригинал - http://avr.nikolaew.org/learn.htm

Что такое микроконтроллер AVR?

Сразу определимся с терминами и прочим “по умолчанию”. Рассматривать будем восьмиразрядные микроконтроллеры семейства AVR (далее - МК). Считаем, что читатель имеет представление о цифровой технике, знает, за какой конец держится паяльник и знает хотя бы Бейсик.

Не рассматривайте этот учебник как абсолютно полный и точный - наверное, это просто невозможно. Я хочу написать предельно простое и понятное пособие для первого ознакомления с МК

8535 в копрусе DIP-40 pin и Tiny15 в корпусе SIOC-8 pin

Итак, что же представляет собой типичный МК? Это микросхема, в которой на одном кристалле умещается уйма разнообразнейших устройств. Управляет всем арифметико-логическое устройство (АЛУ). К АЛУ подключен тактовый генератор, частота которого определяется, как правило, внешним кварцем, подключенным к выводам XTAL1 и XTAL2. Для AT90S8535 максимальная частота тактового генератора – 8 МГц, соответственно период, или длительность одного такта – 125 нс. Именно за это время выполняется большинство команд МК. Но не будем торопиться.

 Итак, на АЛУ поступает тактовый сигнал (TCK), АЛУ выбирает из ПЗУ команду и выполняет ее. А вот тут надо как-то одновременно рассказать и о командах, и о том, что они, собственно, изменяют и на что влияют… И рассказать желательно одновременно, поскольку все между собой тесно завязано. Наверное, все-таки начнем со второго.

0x00-0x1F

Регистры общего назначения,
R0-R31

R0-R15 младшие

R16-R31 старшие

0x20-0x5F

Регистры ввода-вывода

0x00-0x3F для команд IN,OUT

0x60-

Внутреннее ОЗУ

Размер и наличие зависит от модели МК

Адресное пространство МК

АЛУ подключено к регистрам общего назначения (РОН), регистрам ввода-вывода и встроенному ОЗУ. Регистров общего назначения всего 32, причем некоторые из них имеют специфическое предназначение, размер встроенного ОЗУ в зависимости от МК – от нуля  до 512 байт. И регистры, и ОЗУ имеют байтовый формат, то есть состоят из восьми бит. Ну и на всякий случай упомяну, что бит –

это по сути минимальная единица информации, может принимать значения 0 и 1. 

Отличаются же регистры и ОЗУ тем, что в ОЗУ можно только записывать данные из регистров (ну и читать в регистры, естественно), а с регистрами можно делать все что угодно – арифметические, логические операции, короче – в ОЗУ данные лежат, а в регистрах кипит работа.

Ну и еще уточним - не все регистры одинаковы. Младшие (см. таблицу) не могут работать с непосредственным операндом. R0 используется в команде LPM,  регистры R26-R27, R28-R29 и R30-R31 образуют регистровые пары X, Y и Z, которые тоже не одинаковы - регистровая пара X не дает обращаться к памяти со смещением, а Z кроме обычных действий позволяет делать косвенный переход и читать память программ.

Но никто не запрещает использовать эти "специальные" регистры и как обычные.

 

R0

используется в команде LPM

R1-R15

используются произвольно

Младшие регистры

R16-R25

используются произвольно

R26

Регистровая пара X

R27

R28

Регистровая пара Y

R29

R30

Регистровая пара Z

R31

Старшие регистры

Следует заметить, что к РОН и регистрам ввода-вывода можно обратиться и как к ОЗУ. Так, запись в ячейку ОЗУ с адресом 1 эквивалентна записи в R1, а чтение ОЗУ из адреса $22 – эквивалентно команде IN xxx,$02. Впрочем, к этому мы еще вернемся – не все сразу…

Итак, с регистрами общего назначения вроде разобрались. Что дальше? А дальше - регистры ввода-вывода.

Регистры ввода-вывода – это связь АЛУ с внешним миром и собственной периферией. Хотя сам по себе термин “периферия” идет с тех времен, когда микропроцессор был только микропроцессором и не более того. Все, начиная от генератора тактовых импульсов и кончая таймером – это были отдельные микросхемы или даже блоки. Ну да ладно, периферия так периферия, главное – понятно, что это такое. Под регистры ввода-вывода отведено 64 байта в адресном пространстве, но в различных МК реально задействовано разное их количество.

Впрочем, порты ввода-вывода мы рассмотрим на следующем уроке, поподробнее.

Еще в МК есть ПЗУ команд. Оно никак не связано с адресным пространством ОЗУ и регистров, по умному это называется гарвардской архитектурой. ПЗУ имеет 16-ти разрядную организацию, размер его у различных МК – от 1 кБайт до 8 кБайт. Как записать туда программу - рассмотрим в другой раз.

Упомянем еще биты блокировки памяти и биты конфигурации. Они никак не связаны с адресным пространством и не читаемы программно, изменяются только программатором.

Первые предназначены для защиты от пиратства - будучи установленными, запрещают чтение ПЗУ программ снаружи. На работу программы не влияют, и сбрасываются только при очистке кристалла.

Вторые определяют режимы работы МК и не изменяются при стирании кристалла. Количество их  разных МК - от одного до двух десятков.