Что такое avr. Микроконтроллеры семейства avr. Программы для микроконтроллера

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

Прежде всего, разберемся с самим понятием «микроконтроллер». Микроконтроллер можно определить как миниатюрный компьютер на базе одного-единственного чипа, включающий, помимо процессора ряд вспомогательных элементов, таких, как ОЗУ, ППЗУ, таймер, и.т.д. Микроконтроллер предназначен для выполнения каких-либо заранее определенных заданий.

Проще всего сравнить микроконтроллер с персональным компьютером. Как и ПК, микроконтроллер имеет процессор, оперативную и постоянную память. Однако, в отличие от ПК, все эти элементы расположены на одном-единственном чипе.

Но означает ли это, что микроконтроллер равноценен персональному компьютеру? Разумеется, нет. ПК создан для того, чтобы выполнять задачи общего назначения. Например, вы можете использовать компьютер, для набора текста, хранения и запуска мультимедиа-файлов, серфинга в Интернет, и.т.д. Микроконтроллеры предназначены для выполнения специальных заданий, например, выключения кондиционера, когда температура в комнате опускается ниже определенного значения, или наоборот, его включения, когда температура повышается.

Существует несколько популярных семейств микроконтроллеров, которые используются для различных целей. Наиболее распространенными из них являются семейства микроконтроллеров 8051, PIC и AVR. И о последнем семействе мы и собираемся вам рассказать подробнее.

История семейства

Семейство микроконтроллеров AVR было создано в 1996 г. корпорацией Atmel, а разработчиками архитектуры микроконтроллеров являются Alf-Egil Bogen и Vegard Wollan. Отсюда и происходит название семейства – от первых букв имен разработчиков – A и V, и первой буквы аббревиатуры RISC – типа архитектуры, на которой базируется архитектура микроконтроллера. Также эту аббревиатуру часто расшифровывают как Advanced Virtual RISC (модернизированный эффективный RISC).

Первым микроконтроллером в серии был AT90S8515, однако первым микроконтроллером, выпущенным на рынок, стал AT90S1200. Это случилось в 1997 г.

На сегодняшний день доступны 3 линейки микроконтроллеров:

  • TinyAVR – небольшой объем памяти, небольшие размеры, подходит для самых простых задач.

Внешний вид микроконтроллера TinyAVR

  • MegaAVR – наиболее распространенная линейка, имеющая большой объем встроенной памяти (до 256 КБ), множество дополнительных устройств и предназначенная для задач средней и высокой сложности.

Внешний вид микроконтроллера MegaAVR

  • XmegaAVR – используется в сложных коммерческих задачах, требующих большого объема памяти и высокой скорости.

Пример микроконтроллера XmegaAVR

Сравнительные характеристики различных линеек:

Особенности семейства

Прежде всего, микроконтроллеры этой серии являются быстрыми. Большинство инструкций процессор микроконтроллера выполняет за один цикл. Микроконтроллеры AVR примерно в 4 раза быстрее, чем PIC. Кроме того, они потребляют немного энергии и могут работать в 4 режимах экономии энергии.

Большинство контроллеров AVR являются 8-разрядными, хотя сейчас существует и 32-разрядная разновидность контроллеров AVR32. Кроме того, как уже упоминалось выше, AVR принадлежат к типу RISC-микроконтроллеров. Архитектура RISC (Complex Instruction Set Computers) означает, что набор инструкций, которые может выполнять процессор устройства, является ограниченным, но, в то же время, подобная архитектура дает преимущество в скорости. Противоположностью архитектуры RISC является архитектура CISC (Complex Instruction Set Computers).

32-разрядная разновидность контроллеров AVR32

8-битность контроллера означает, что он способен передавать и принимать 8-битные данные. Доступные регистры ввода/вывода также являются 8-битными.

Архитектура контроллера основана на регистрах. Это означает, что для хранения исходных данных операции и ее результата в контроллере используются регистры.

Процессор контроллера берет данные из двух входных регистров, выполняет логическую операцию и сохраняет результат в выходном регистре. Все это занимает 1 исполняемый цикл.

Архитектура контроллера

Всего контроллер AVR имеет 32 8-битных регистра общего назначения. В течение цикла процессор берет данные из двух регистров и помещает их в арифметико-логическое устройство (АЛУ), которое производит операцию над данными и помещает их в произвольный регистр. АЛУ может выполнять как арифметические, так и логические действия над операндами. Также АЛУ может выполнять и действия с одним операндом (регистром). При этом контроллер не имеет регистра-аккумулятора, в отличие от контроллеров семейства 8051 – для операций могут использоваться любые регистры, и результат операции также может быть помещен в любой регистр.

Контроллер соответствует Гарвардской вычислительной архитектуре, согласно которой компьютер имеет отдельную память для программ и данных. Поэтому в то время, пока выполняется одна инструкция, происходит предварительное извлечение из памяти следующей инструкции.

Котроллер способен выполнять одну инструкцию за цикл. Отсюда следует, что если тактовая частота контроллера составляет 1 МГц, то его производительность составит 1 млн. оп./c. Чем выше тактовая частота контроллера, тем выше будет его скорость. Однако при выборе тактовой частоты контроллера следует соблюдать разумный компромисс между его скоростью и энергопотреблением.

Помимо флэш-памяти и процессора контроллер имеет такие устройства, как , аналого-цифровой преобразователь, таймеры, коммуникационные интерфейсы – I2C, SPI и последовательный порт UART. Все эти устройства могут контролироваться программно.

Типовая архитектура микроконтроллеров AVR

Программы для микроконтроллера

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

Программа микроконтроллера может храниться во встроенной памяти контроллера и представляет собой серию очень простых команд, которые выбирают данные и осуществляют с ними операции. В большинстве случаев это означает считывание входящих данных, проверка их состояния и вывода соответствующих выходных данных. Иногда может потребоваться изменение данных и совершение с ними некоторых операций, а также передача данных какому-либо внешнему устройству, например, индикатору, или последовательному порту.

Для таких элементарных задач используются наборы двоичных команд, каждая из которых имеет аналог на более доступном человеческому восприятию языке ассемблера. Поэтому наиболее распространенным способом написания программ для контроллера является написание их на языке ассемблера.

Преимуществом ассемблера является очень быстрый, компактный и эффективный код, но создание таких программ одновременно требует и глубоких знаний работы процессора контроллера, ручного управления памятью и контроля структуры программы. Поэтому зачастую для написания программ используются и языки высокого уровня, такие, как С, Basic и Java. В этом случае задачу по контролю структуры программы и управлению памятью берет на себя компилятор. Кроме того, часто используемые функции могут быть при этом помещены в библиотеки и извлекаться из них по мере надобности.

Заключение

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

Источники электроснабжения не обладают абсолютной надежностью и иногда отключаются, что приводит к негативному влиянию на объекты потребления. Для ответственных устройств это недопустимо, поэтому они обеспечиваются питанием от двух и более дополнительных источников. При их подключении применяются устройства АВР. Что это такое, поясняет расшифровка аббревиатуры - "автоматический ввод резерва". Он является способом создания бесперебойного электроснабжения потребителя с двумя или более питающими вводами. Это обеспечивается автоматическим подключением резервного ввода при потере основного.

Оба источника питания могут быть подключены одновременно. Недостатками способа являются большие токи КЗ, высокие потери и сложность защиты сетей. Ввод резерва обычно производится с помощью коммутирующего устройства, отключающего основной источник питания. Мощность резерва должна соответствовать нагрузкам. Если ее недостаточно, производится подключение только самых важных потребителей.

Требования к АВР

  • Быстрый ввод резерва после срабатывания
  • Включение в любых случаях при исчезновении питания, за исключением коротких замыканий.
  • Отсутствие реагирования на посадку напряжения при запуске мощных нагрузок у потребителя.
  • Однократность срабатывания.

Классификация

Устройства разделяются по принципу действия.

  • Односторонние. Схема содержит две секции: сети питания и резервную. Последняя подключается при потере основного напряжения.
  • Двухсторонние. Любая из линий может быть как рабочей, так и резервной.
  • Восстанавливающиеся АВР. При возобновлении основного питания автоматически вводится в работу прежняя схема, а резервная отключается.
  • Без автоматического восстановления. Настройка режима работы с основным источником питания производится вручную.

Принцип действия АВР

В низковольтных сетях удобно применять контролирующие напряжение в схемах защиты специальные реле (схемах АВР и др.). АВР здесь предпочтительней, поскольку не вся техника способна выдерживать частые переключения электроснабжения. Как выглядит АВР? Что это такое и как работает? Данное устройство хорошо видно по любой простой схеме.

  • Реле ЕЛ-11 контролирует трехфазное напряжение, следит за перекосом фаз, их обрывом и чередованием.
  • Электромагнитные реле с мощными контактами применяются для подключения нагрузок. В нормальном режиме катушка главного ввода питается от него и своими контактами КМ 1 подключает подачу питания на нагрузку.
  • Когда исчезает напряжение в основной цепи, реле КМ 1 отключается, и питание поступает на катушку реле КМ 2, которое подключает резервный ввод.

Данная схема АВР может применяться в частных домах, производственных и административных зданиях, где коммутируемая нагрузка достигает десятков киловатт. Недостатком схемы является сложность выбора реле для больших токов. Для коммутации маломощных потребителей она еще подходит, но при больших нагрузках лучше взять пускатель АВР или симистор.

Незаменимыми источниками дополнительного питания являются бензиновые или Последние нашли широкое применение благодаря экономичности и большей мощности. Рынок предлагает широкий ассортимент содержащих системы защиты от больших перегрузок.

Работа АВР

Как функционирует АВР? Что это такое по степени надежности в снабжении электроэнергией потребителей? Устройства делятся на 3 категории. Электроснабжение жилья относится к самой низкой. При частых сбоях в сети питания резерв в доме лучше установить, поскольку от этого зависит долговечность бытовых приборов, а также комфортные условия проживания. В квартиры устанавливают бесперебойники на аккумуляторах, которые преимущественно применяются для электронной техники. Генераторы наиболее распространены как резервные источники питания частных домов.

Бензиновый генератор в самом простом варианте подключается к электроснабжению дома через перекидной рубильник. Это предупреждает короткое замыкание при ошибочном вводе резерва, когда не выключены автоматы подачи электроэнергии в дом. Рубильник выбирается с тремя положениями, где среднее из них полностью отсекает электричество.

АВР своими руками можно установить в автоматическом режиме, если снабдить генератор автоматическим пусковым устройством и управлять им из шкафа с помощью контакторов, которые также переключают вводы. Автоматика работает на микропроцессорном управлении, например, на реле-контроллерах Easy. Для ввода резерва АВР применяют датчики напряжения. Как только отключается питание, сразу происходит запуск двигателя генератора. На достижение рабочего режима уходит некоторое время, после чего АВР производит переключение нагрузки на резерв. Подобные задержки допустимы для бытовых потребностей.

Блок автоматического запуска генератора (БАЗГ)

АВР - система частного дома, которая обеспечивает запуск и управление резервным генератором при нарушении электроснабжения. Последний комплектуется специальным блоком БАЗГ, который является недорогим решением при сбоях в подаче электроэнергии в главной сети. Он производит пять попыток запуска в течение 5 секунд в каждом интервале после того, как исчезнет напряжение на основном вводе. Кроме того, он управляет воздушной заслонкой, закрывая ее в момент запуска.

Если на основном вводе снова появляется напряжение, устройство переключает нагрузку обратно и останавливает двигатель генератора. При простое генератора подача топлива перекрывается электромагнитным клапаном.

Особенности работы АВР частного дома

Наиболее распространен способ с двумя вводами, где первый из них имеет приоритет. При подключении к сети бытовые нагрузки большей частью работают на одной фазе. При ее пропадании не всегда удобно подключать генератор. Достаточно подключить другую линию в качестве резервной. При трехфазном вводе питание контролируется с помощью реле на каждой из фаз. При выходе напряжения за пределы нормы контактор фазы отключается, и дом питается от двух оставшихся фаз. Если из строя выходит еще одна линия, вся нагрузка перераспределяется на одну фазу.

Для небольшого коттеджа или дачи применяют ДГУ мощностью не более 10 кВт для щита, работающего на 25 кВт. Такого генератора вполне достаточно, чтобы обеспечить дом необходимым минимумом электричества на короткое время. При возникновении аварийной ситуации реле контроля напряжения переключает шину потребителя на резервное питание и подает сигнал на запуск ДГУ. При возобновлении основного питания реле переключается на него, после чего генератор останавливается.

Расширение функций АВР

Для управления по выбранным алгоритмам применяются программируемые логические контроллеры (ПЛК). В них уже заложена программа АВР, которую только требуется настроить для реализации того или иного режима работы. Использование ПЛК, например, контроллера АС500, дает возможность упростить электрические схемы, хотя на первый взгляд устройство кажется сложным. Управление АВР можно расположить на дверце щита в виде набора переключателей, кнопок и индикации.

В типовом решении уже предусмотрено программное обеспечение. Оно устанавливается в ПЛК.

Заключение

Сбои в электроснабжении могут приводить к различным негативным явлениям у потребителей. Большинство пользователей имеют только смутное представления об АВР. Что это такое, многие вообще не знают и принимают за устройство продукцию, которая предназначена совершенно для других целей. В связи с большими затратами на электрооборудование важно правильно выбрать автомат ввода резерва. Здесь потребуется консультация специалиста. АВР позволяет повысить работоспособность бытовых приборов и объектов, для которых важна постоянная подача питания.

МК AVR приобрели огромную популярность в радиолюбительской среде, привлекая электронщиков такими показателями, как цена, энергоэффективность и быстродействие. Кроме того огромным плюсом являются удобные режимы программирования, свободная доступностью программных средств поддержки и широкий выбор МК. Эта серия компании Atmel применяется в автомобильной и бытовой электронике, сетевых картах и материнских платах компьютеров и ноутбуков, в смартфонах и планшетах.


В соответствии с единой базовой архитектурой эти МК делятся на три больших семейства:


Tiny AVR – дешевые и довольно простые по конструкции микроконтроллеры в 8-выводном корпусе
Classic – основная базовая линейка микроконтроллера;
Mega AVR – МК для сложных задач, требующих значительного объема памяти программ и данных.

AVR Classic – самая массовая линейка среди остальных Flash-МК корпорации Atmel. Последняя представила первый 8-разрядный Flash-МК в таком далеком 1993 году и с тех пор только совершенствует технологию. Компания постоянно работает над совершенствованием своей производственной линии в следующих основных направлениях: снижении удельного энергопотребления; увеличение диапазона питающих напряжений и быстродействия; возможность легкой встройки в изделия реально-временных отладчиков; реализации функции самопрограммирования; расширения количества и модернизация периферийных модулей; встройки различных специализированных устройств (передатчиков, USB-контроллеров, драйверов ЖКИ и др.

Успех AVR-микроконтроллеров кроется в простоте выполнения поставленной задачи с достижением требуемого результата, чему способствует доступность огромного числа инструментальных средств, как разработанных корпорацией Atmel, так и сторонними производителями ПО. Многие сторонние фирмы выпускают полный спектр необходимых компиляторов, программаторов, отладчиков, ассемблеров, адаптеров и разъемов. Отличительной чертой програмных средств от AVR является их низкая стоимость.

Они необходимы для обмена данными с различными подключенными к нему устройствами, например, реле, световыми и звуковыми индикаторами, датчиками и т.п. С помощью АВР портов, осуществляется не только обмен данными, но и синхронизация схемы в целом. Количество AVR портов зависит от модели МК. В среднем имеется (1-7) портов. Обычно, порты AVR восьмиразрядные, если разрядность не ограничена количеством выводов на корпусе МК.

Давайте попробуем написать простую программу для "Мигания светодиодом". Писать программу для простоты понимания будем на языке С для этого нам понадобится специальная утилита CodeVisionAVR.

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

Вы узнаете как можно управлять ЖК дисплеем с помощью команд имеющихся в компиляторе CodeVisionAVR, на примере МК семейства ATmega8 и алфавитно-цифровым ЖК экраном со встроенным чипом HD44780

Любой микроконтроллер способен “воспринимать” только цифровые сигналы – логический ноль или единицу. Например, у МК ATmega8 при напряжении питания 5 В логический ноль – это напряжение лежащие в интервале от 0 до 1,3 В, а единица – от 1,8 до 5 В. Довольно часто в радиолюбительской практике возникает необходимость измерять напряжения, которое может принимать любое значение в диапазоне от нуля до уровня напряжения питания. Для этих задач в составе всех микроконтроллеров АВР имеется аналого-цифровой преобразователь.


ПО используется для интегрированной среды разработки программного обеспечения под микроконтроллеры данного типа. Основными особенностями CodeVisionAVR является то, что он очень понятный для самостоятельного изучения, а также поддерживает все существующие МК этого семейства.

Информация по структуре, системе команд микроконтроллеров и периферийным устройствам. Издание поможет правильно выбрать МК требуемого типа, разработать функциональную схему устройства и программу работы МК на языке AVR Ассемблера

Особенностью данной схемы частотомера на микроконтроллере является то, что она работает вместе с компьютером и подсоединена к материнской плате через разъем IRDA. От этого же разъема конструкция получает питание

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

Повышение производительности 8-разрядного микроконтроллера можно достигнуть с помощью нескольких простых решений. Во-первых, в полной мере используйте свой компилятор и полного набора функциональных возможностей, предоставляемых им. В настоящее время компиляторы являются очень продвинутыми, и многие из них с очень неплохой оптимизацией. В зависимости от задачи и доступной памяти компиляторы способны оптимизировать как по размеру кода, так и по скорости. Убедитесь, что вы хорошо знаете, для чего применяете МК, и используйте компилятор в соответствии с поставленными исходными данными.

Во-вторых, не брезгуйте ручной оптимизацией программного кода. Хотя нынешние компиляторы функциональны, но они не способны сделать всю работу за вас. Поэтому программист микроконтроллеров должен тщательно подходить к написанию кода. Здесь важно структурировать код и отделить часть кода коммуникационного стека от остальных частей программы. Это позволит существенно быстро изменять необходимые части и наблюдать за временем их исполнения.

Помимо структурирования используйте наиболее эффективные типы данных. Так, разные архитектурные решения имеют разные размеры баз данных. То есть в 8-разрядном микроконтроллере не стоит по возможности использовать 32-разрядными int-переменные. Лучше заменить их на переменные типа byte, если конечно это возможно. Кроме того не применяйте переменные с плавающей точкой при программировании микроконтроллеров.

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

Но, если сильно все упростить, то основной функцией микроконтроллера является «дрыганье ножками». Т.е. у него есть несколько выводов (от 6 до нескольких десятков в зависимости от модели) и на этих выводах он может выставить либо 1 (высокий уровень напряжения, например +5вольт), либо 0 (низкий уровень напряжения, около 0.1 вольта) в зависимости от программного алгоритма зашитого в его память. Также микроконтроллер может определять состояние сигнала на своих ножках (для этого они должны быть настроены на вход) — высокое там напряжение или низкое (ноль или единица). Современные микроконтроллеры также почти поголовно имеют на борту Аналогово Цифровой Преобразователь — это штука подобная вольтметру, позволяет не просто отследить 0 или 1 на входе, а полноценно замерить напряжение от 0 до опорного (обычно опорное равно напряжению питания) и представить его в виде числа от 0 до 1024 (или 255, в зависимости от разрядности АЦП)

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

Микроконтроллеров существует очень и очень много. Практически каждая уважающая себя фирма по производству радиокомпонентов выпускает свой собственный контроллер. Однако и в этом многообразии есть порядок. МК делятся на семейства, все их я не перечислю, но опишу лишь самые основные восьмиразрядные семейства.

MSC-51
Самое обширное и развитое это MSC-51 , старейшее из всех, идущее от intel 8051 и ныне выпускаемое массой фирм. Иногда кратко зовется С51 . Это 8-ми разрядная архитектура, отличается от большинства других восьмиразрядников тем, что это CISC архитектура. Т.е. одной командой порой можно совершить довольно сложное действие, но команды выполняются за большое число тактов (обычно за 12 или 24 такта, в зависимости от типа команды), имеют разную длину и их много, на все случаи жизни. Среди контроллеров архитектуры MSC-51 встречаются как динозавры вроде AT89C51 , имеющие минимум периферии, крошечную память и неважнецкое быстродействие, так и монстры вроде продукции Silicon Laboratories имеющие на борту весьма мясистый фарш из разнокалиберной периферии, огромные закрома оперативной и постоянной памяти, мощные интерфейсы от простого UART ‘a до USB и CAN , а также зверски быстрое ядро , выдающее до 100 миллионов операций в секунду. Что касается лично меня, то я обожаю архитектуру С51 за ее чертовски приятный ассемблер на котором просто кайфово писать. Под эту архитектуру уже написаны гигабайты кода, созданы все мыслимые и немыслимые алгоритмы.

Atmel AVR
Вторым моим любимым семейством является AVR от компании Atmel . Вообще Atmel производит и MSC-51 контроллеры, но все же основной упор они делают на AVR . Эти контроллеры уже имеют 8-ми разрядную RISC архитектуру и выполняют одну команду за один такт, но в отличии от классического RISC ядра имеют весьма развесистую систему команд, впрочем не такую удобную как у С51, за что я их недолюбливаю. Но зато AVR всегда снаряжены как на войну и просто напичканы разной периферией, особенно контроллеры подсемейства ATMega . А еще их очень легко прошивать, для этого не нужны ни специализированные программаторы, ни какое либо другое сложное обрудование. Достаточно лишь пяти проводков и компьютера с LPT портом. Простота освоения позволила этому контроллеру прочно запасть в сердца многих и многих радиолюбителей по всему миру.

Microchip PIC .
Еще один 8-ми разрядный RISC микроконтроллер, отличается весьма извратской системой команд, состоящей всего из пары десятков команд. Каждая команда выполняется за четыре такта. есть ряд достоинств, в первую очередь это низкое энергопотребление, и быстрый старт. В среднем PIC контроллере нет такого количества периферии как в AVR, но зато самих модификаций PIC контроллеров существует такое количество, что всегда можно подобрать себе кристалл с периферией подходящей точно под задачу, не больше не меньше. На PIC ‘ax традиционно построены бортовые компьютеры автомобилей, а также многочисленные бытовые сигнализации.

Какое же семейство выбрать? О, это сложный вопрос. На многочисленных форумах и конференциях по сей день идут ожесточенные бои на тему какое семейство лучше, фанаты AVR грызутся с приверженцами MSC-51 , попутно не забывая пинать по почкам PIC ‘овцев, на что те отвечают тем же.

Ситуация тут как в Starcraft:) Кто круче? Люди? Зерги? Протоссы? Все дело в применении, масштабах задач и массе других параметров. У каждого семейства есть свои достоинства и недостатки. Но лично я бы выбрал AVR и вот по каким причинам:

  • 1. Доступность в России. Эти контроллеры заслуженно популярны и любимы народом, а значит наши торговцы их охотно возят. Впрочем, как и PIC. С MSC-51 ситуация хуже. Морально устаревшие AT89C51 достать не проблема, но кому они нужны? А вот современные силабы это уже эксклюзив.
  • 2. Низкая цена. Вообще низкой ценой в мире славится PIC, но вот ирония — халявы начинаются только если брать его вагонами. На деле же, на реальном прилавке, AVR будет процентов на 30-40 дешевле чем PIC при несколько большем функционале. С MSC-51 ситуация ясна еще по первому пункту. Эксклюзив это не только редко, но и дорого.
  • 3. Очень много периферии сразу. Для серийного устройства это скорей недостаток. Куда лучше иметь только то, что надо в текущей задаче, а остальное чтобы не мешалось и не кушало зря энергию. Этим славится PIC со своим развесистым модельным рядом, где можно найти контроллер в котором будет нужное и не будет ненужного. Но мы то собираемся изучать и делать для себя! Так что нам лучше чтобы все, сразу и про запас. И вот тут AVR на голову выше чем PIC, выкатывая раз за разом все более фаршированные контроллеры. Купил себе какую-нибудь AtMega16A и все, можешь все семейство изучить.
  • 4. Единое ядро. Дело в том, что у всех современных AVR одинаковое ядро с единой системой команд. Есть лишь некоторые различия на уровне периферии (и те незначительные). Т.е. код из какой нибудь крошечной ATTiny13 легко копипастом перетаскивается в ATMega64 и работает почти без переделок. И почти без ограничений наоборот. Правда у старых моделей AVR (всякие AT90S1200) совместимость сверху вниз ограниченная — у них чуть меньше система команд. Но вот вверх на ура. У Микрочипа же существует целая куча семейств. PIC12/16/18 с разной системой команд. 12е семейство это обычно мелочь малоногая (вроде Tiny в AVR), а 18 это уже более серьезные контроллеры (аналог Mega AVR) И если код с 12го можно перетащить на 18, то обратно фиг.
  • 5. Обширная система команд контроллеров AVR. У AVR около 130 команд, а у Microchip PIC всего 35. Казалось бы PIC в выйгрыше — меньше команд, проще изучить. Ну да, именно так и звучит микрочиповский слоган, что то вроде «Всего 35 команд!». Только это на самом деле фигня. Ведь что такое команда процессора? Это инструмент! Вот представь себе два калькулятора — обычный, бухгалтерский и инженерный. Бухгалтерский куда проще изучить чем инженерный. Но вот попробуй посчитать на нем синус? Или логарифм? Нет, можно, не спорю, но сколько нажатий кнопок и промежуточных вычислений это займет? То то же! Куда удобней работать когда у тебя под рукой куча разных действий. Поэтому, чем больше система команд тем лучше.
  • 6. Наличие бесплатных кроссплатформенных компиляторов Си. Конечно, кряк всегда найти можно. Где где, а в нашей стране это проблемой никогда не было. Но зачем что то воровать если есть халявное? ;)
  • 7. Ну и последний аргумент, обычно самый весомый. Наличие того, кто бы научил и подсказал. Помог советом и направил на путь истинный. Я выбрал для себя AVR и на этом сайте (по крайней мере пока) досконально будет разбираться именно это семейство, а значит выбора у тебя особого нет:))))))

Ой, но этих же AVR целая прорва. Какой взять???
Интересный вопрос. Вообще МК лучше выбирать под задачу. Но для изучения лучше хапнуть что то фаршированное.

Для начала разберем маркировку, чтобы ты по прайсу сразу мог понять что за зверь перед тобой. Вот тебе пример

ATmega16А — 16PI

  • AT — сделано в Atmel
  • Mega — вид семейства. Существует еще Tiny и Xmega (новая — фаршу жуть, полный вертолет). Вообще задумывалось, что Тини это, вроде как, малобюджетное с малым количеством фарша и вообще ущербная, а Мега наоборот — все и сразу. В реальности, разница между семействами Тини и Мега по фаршу сейчас минимальная, но в Тини меньше памяти и корпуса у нее бывают с числом выводов от 6 до 20.
  • 16 — количество памяти флеша в килобайтах. Вообще тут не все так просто. Числом памяти является степень двойки. Так что Mega162 это не контроллер со 162КБ флеша, а своеобразная Мега16 модификации2 с памятью 16кб. Или вот Мега88 — не 88кб, а 8кб флеша, а вторая 8 это вроде как намек на то, что это дальнейшее развитие Мега8. Аналогично и Мега48 или Мега168. Тоже самое и семейством Тини. Например, Тини2313 — 2килобайта флеша. А что такое 313? А хрен знает что они имели ввиду:) Или Тини12 — 1кб Флеша. В общем, фишку просек.
  • А — префикс энергопотребления (обычно). Этой буквы может и не быть, но в новых сериях она присутствует почти везде. Например, V и L серии — низковольтные, могут работать от 2,7 вольт. Правда за низковольтность приходится платить меньше частотой. Но оверклокинг возможен и тут, ничто человеческое нам не чуждо:) A и P имеют новые серии AVR с технологией PicoPower т.е. ультраэкономичные. Разницы по фаршу и внутренней структуре с их безиндексовыми моделями нет, тут все различие в работе всяких спящих режимов и энергопотреблении. Т.е. Mega16A легко меняется на Mega16 без А. И ничего больше менять не нужно.
  • 16 — Предельная тактовая частота в мегагерцах. В реальности можно разогнать и до 20 ;)
  • P — тип корпуса. Важная особенность. Дело в том, что далеко не всякий корпус можно запаять в домашних условиях без геморроя. Рекомендую пока обратить внимание на P — DIP корпус. Это громоздкий монстр, но его легко запаять, а, главное, он легко втыкается в специальную панельку и вынимается из нее обратно. Корпуса вида SOIC (индекс S) или TQFP (индекс A) пока лучше отложи в сторонку. Без хорошего опыта пайки и умения вытравить качественную печатную плату к ним лучше не соваться.
  • I — Тип лужения выводов. I — свинцовый припой. U — безсцвиновый. Для тебя никакой совершенно разницы. Бери тот что дешевле.

Рекоменую следующие модели:

  • ATMega16A-16PU — недорогой (около 100-150р), много выводов, много периферии. Доступен в разных корпусах. Прост, под него заточен мой учебный курс и все дальнейшие примеры.
  • ATTiny2313-20SU — идеальный вариант для изготовления всяких часов/будильников и прочей мелкой домашней автоматики. Дешев (рублей 40), компактен. Из минусов — нет АЦП.
  • ATmega48/88/168 любой из этих контроллеров. Компактен (в корпусе tqfp является самым тонким и мелким из AVR), дешев (рублей 100-150), фарширован донельзя.
  • ATmega128 для искушенных. Большой, мощный, дофига памяти. Дорогой (около 400р)

МИКРОКОНТРОЛЛЕРЫ AVR

Микроконтроллеры AVR являются разработкой и продуктом фирмы Atmel. Отличие данных микроконтроллеров от аналогичных, в довольно удачной архитектуре ядра процессора и широкому набору периферийных модулей, что облегчает процесс программирования устройства. Эти микросхемы производятся по технологии 0,35 мкм, и работают с тактовой частотой от - 16 МГц, обеспечивая производительность до 16 MIPS.

В основе микроконтроллеров семейства AVR лежит 8-ми битное центральное процессорное устройство, построенное по принципу RISK-архитектуры. Базой данного блока является арифметико-логическое устройство - АЛУ. По тактовому сигналу из памяти программ в соответствии с содержимым счетчика команд, выбирается нужная команда и выполняется вычисление. При выборе команды из памяти программ происходит выполнение предыдущей выбранной команды, это позволяет получить быстродействие на уровне 1 MIPS на 1 МГц. АЛУ подключено к 32-м регистрам общего назначения. РОН находятся в начале адресного пространства оперативной памяти, но не являются ее частью физически . Поэтому к ним идёт обращение и как к регистрам, и как к памяти.

Фирма ATMEL выпускает такие семейства 8-битных микроконтроллеров: tiny и mega. Микроконтроллеры tiny имеют Флэш -ПЗУ по 1 и 2 кбайт в корпусе на 8 -20 выводов, а микроконтроллеры mega соответственно: Флэш-ПЗУ 8 -128 кбайт в корпусе на 28 -64 вывода.

Технические характеристики микроконтроллеров AVR:
- частота до 16 МГц с временем выполнения команды 62,5 нс;
- встроенный програмируемый RC-генератор, частота 1, 2, 4, 8 МГц;
-
Флэш -ПЗУ программ,программируемое в системе, до 128 кбайт;
- двухпроводный интерфейс TWI, совместимый с интерфейсом I2C;
- многоканальный 8-, 9-, 10-, 16-битный ШИМ-модулятор;
- 10-битный АЦП со временем преобразования 70 мкс и дифференциальными входами;
- программируемый коэффициент усиления — 1; 10 или 200;
- встроенный источник опорного напряжения;
- аналоговый компаратор;
- настраиваемая схема задержки запуска после подачи питания;
- схема слежения за напряжением питания;
- JTAG-интерфейс для подключения эмулятора;

- электрически перепрограммируемое ПЗУ данных до 4 кбайт;
- внутреннее ОЗУ со временем доступа 1 такт, до 4 кбайт;
- мощный набор команд (более 120 инструкций);
- 6 аппаратных команд умножения (для семейства mega);
- развитая система адресации, оптимизированная для работы с С-компиляторами;
- 32 регистра общего назначения (аккумулятора);
- синхронный (USART) или асинхронный (UART) последовательные порты;
- синхронный последовательный порт (SPI);
- потребление тока 0.1 мА в активном режиме.

Типы микроконтроллеров AVR:

ТИП память программ,КБайт EEPROM данных,байт ОЗУ данных,байт Такт.частота,МГц
ATTiny11 1 - - 6 6
ATTiny11L 1 - - 2 6
ATTiny12 1 64 - 8 6
ATTiny12L 1 64 - 4 6
ATTiny12V 1 64 - 1,2 6
ATTiny13 1 64 64 20 6
ATTiny15L 1 64 - 1,2 6
ATTiny28L 2 - - 4 19
ATTiny28V 2 - - 1,2 19
AT90S2313 4 256 512 10 15
ATMega16 16 512 1024 16 32
ATMega48 4 256 512 20 40

Более подробно читайте об AVR микроконтроллерах в специальном

Так-же микроконтроллеры AVR семейства Mega имеют возможность самостоятельного изменения содержимого своей памяти программ. Это позволяет создавать на их основе гибкие системы, алгоритм работы которых будет изменяться самим микроконтроллером в зависимости от внутренних условий и внешних событий. Микроконтроллеры AVR имеют встроенный 8-канальный 10-битный аналого-цифровой преобразователь. Режим энергосбережения позволяет отключить неиспользуемые модули и в результате снизить энергопотребление.

Микроконтроллеры AVR могут работать при напряжениях питания 2 - 6 Вольт. Ток потребления в активном режиме составляет около 1 мА для работы на частоте 500 кГц, 6 мА для 5 МГц и до 10 мА на частоте 12 МГц. Есть возможность переводить их программным путем в такие режимы пониженного энергопотребления:

1.Экономичный режим. Продолжает работать только генератор таймера обеспечивая сохранность временной базы, остальные функции отключены.
2.Режим холостого хода. Прекращает работу только процессор и фиксируется содержимое памяти данных, внутренний генератор синхросигналов, таймеры, система прерываний и сторожевой таймер продолжают работать, при этом ток потребления в районе 2,5 мА на частоте 12 МГц.
3.Стоповый режим. Сохраняется содержимое регистрового файла, останавливается внутренний генератор синхросигналов, и останавливаются все функции, до поступления сигнала внешнего прерывания или аппаратного сброса, ток потребления составляет 80 мкА.

Для программирования микроконтроллеров AVR есть такие системы: AVR Studio - официальная система программирования от Atmel, позволяет писать и отлаживать программы, написанные на ассемблере, С и С++. IAR - коммерческая система программирования на C, С++ и ассемблере. WinAVR - компилятор с открытыми исходниками, поддерживающий множество самых разных языков, и AtmanAVR - система программирования для AVR с интерфейсом аналогичным, как у Visual C++ 6. Ещё одну простую и популярную программу можно скачать в разделе софт.