-

Осваиваем AVR!

новости  | с чего начать? | ссылки | учебник | примеры | программатор | отладчик | осциллограф | давно это было | download | сотрудничество | пишите мне

Введение  | Периферия | Система команд | Система команд (продолжение) | Система команд(Mega) | FAQ

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

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

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

 

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

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

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

Несмотря на такое, казалось бы, различие между этими двумя МК (8535 и Tiny15) - ядро и система команд у них практически одинаковы

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

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

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

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

0x00-0x1F Регистры общего назначения,
R0-R31
R0-R15 младшие
R16-R31 старшие
0x20-0x5F Регистры ввода-вывода 0x00-0x3F для команд IN,OUT
0x60- Внутреннее ОЗУ Размер и наличие зависит от модели МК
Адресное пространство МК

 

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 кБайт. Как записать туда программу - рассмотрим в другой раз.


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

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

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

  


Vital M M orthomol.  

(с)nml 10-Jul-2009