Выбрать главу

Электрически порты PIC совместимы с портами х51. В принципе архитектура PIC (пусть на меня ее приверженцы не обижаются) есть довольно половинчатая и компромиссная попытка улучшить архитектуру х51: так, ревностное следование концепции RISC в микроконтроллерах совершенно необязательно и набором всего из 33 команд пользоваться не всегда удобно. Но PIC появились крайне вовремя, когда кроме штампованных клонов 8051 и его предшественника 8048, по сути, никто ничего не предлагал. По этой причине (а также из-за демократической торговой и ценовой политики Microchip) "пики" и сейчас занимают не менее 14% такого консервативного рынка, как производство 8-разрядных МК.

Семейство AVR

Фирма Atmel сыграла в электронной промышленности роль, в некотором роде сравнимую с ролью Apple в производстве ПК: она не находится на первых ролях, но всегда отличалась передовыми инновациями. Сейчас на рынке 8-разрядных МК она имеет около 6%. Фирму основал в начале 1980-х Джордж Перлегос, известный тем, что руководил в Intel направлением энергонезависимой памяти: при его непосредственном участии были разработаны первые типы электрически стираемых кристаллов EEPROM. В 80-е годы Atmel попыталась занять ведущее место на этом быстрорастущем рынке, и остается до сих пор одним из ведущих производителей flash- и EEPROM-чипов для установки в схемы различных устройств (например, нередко можно встретить Flash BIOS на чипах Atmel).

В конце 1980 х Atmel в числе других оказалась втянута в патентные разборки с энергонезависимой памятью, инициированные Intel, из которых вышла даже с некоторой прибылью, оказавшись обладателем лицензии на производство х51-совместимых МК, в каковой области и поныне является одной из ведущих. В 1993 году Atmel стала инициатором переворота в отрасли, начав производство МК AT89C51 со встроенной flash-памятью программ, что оказалось значительно удобнее одноразовых "прожигаемых" кристаллов или УФ-стираемых, требующих длительной "ручной" процедуры очистки.

В 1995 году два норвежских студента из г. Тронхейма, Альф Боген и Вегард Воллен, выдвинули идею 8-разрядного RISC-ядра, которую предложили руководству Atmel. Ядро это, названное AVR по именам разработчиков (Alf - Vergard - RISC), было разработано без оглядок на существовавшие решения, и вполне заслуживает название революционного. В AVR-ядре типовые инструкции выполняются за один такт, причем в обеспечение этого имеется элементарный конвейер с одновременным выполнением инструкции и выборкой следующей (потому команды ветвления выполняются за два такта - конвейер "тупо" полагает, что условие ветвления не выполнится). Первоначальное ядро состояло всего из 32 тысяч транзисторов.

В работе над ядром приняла участие упоминавшаяся фирма IAR System, разработчик С-компиляторов. Возможно, поэтому главной особенностью AVR стал решительный разрыв с характерными для существовавших ранее архитектур с инструкциями, выполнявшимися через специальный регистр-аккумулятор: большинство команд здесь может непосредственно оперировать с регистрами общего назначения (которых имеется аж 32 штуки), в ряде случаев вообще не нуждаясь в обращении к ОЗУ. Потому структура ассемблерных программ для AVR стала подозрительно напоминать программы на языке высокого уровня, где операторы работают не с ячейками памяти и регистрами, а с абстрактными переменными и константами. Мало того, в ряде младших моделей нельзя даже напрямую работать со стеком - для программы он при таком количестве регистров-переменных оказывается попросту ненужным, и используется лишь аппаратно при вызове подпрограмм.

Сделать шажок к переходу от ассемблера на С при такой архитектуре значительно проще: фактически оставалось лишь упаковать то, что знаменитый программист Дейкстра назвал "лапшой условных и безусловных переходов", в привычные циклы с предусловием/постусловием или операторы выбора. Именно по этим причинам архитектура AVR считается наиболее приспособленной к программированию на С.

Причем различные способы адресации, имеющие такое важное значение в архитектуре х51, здесь разбросаны по совершенно разным командам, и программист вообще может не изучать соответствующий раздел инструкции. Количество команд в архитектуре AVR довольно большое, 120-130 штук, но противоречия с RISC-концепцией здесь нет - 30-40% команд есть лишь псевдонимы, введенные для удобства программиста. Причем инструкций деления и умножения, в полном соответствии с RISC-концепцией, канонический AVR не предусматривает: лишь позднее для более "продвинутых" моделей появилась возможность аппаратного умножения.

Другим большим плюсом AVR стал впервые введенный последовательный интерфейс занесения программы в память кристалла, благодаря чему МК стало можно программировать прямо в готовой схеме, без каких-либо специальных программаторов: в принципе достаточно чисто софтверного решения на ПК, соединяющегося через LPT со схемой пятью проводочками. Не стоит и говорить, что из-за подобной фичи AVR снискали себе горячую любовь отечественных (и не только) радиолюбителей. Позднее таким интерфейсом были вынуждены обзавестись и другие популярные семейства МК.