Базовые понятия микроконтроллеров, которые помогут в дальнейшем (при желании) освоить процесс создания своих собственных устройств.


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

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

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

  • Кофейный автомат
  • Турникет в метро
  • Домофон
  • MP3 плеер
  • пульт Д/У

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

Все как в сказке: младший сын, старший сын и средний... Или даже все как в жизни: в зависимости от сложности задачи, которую необходимо исполнить, нужны мозги разного уровня развития и разной специализации. Мега-Мозг гражданина Теслы, к примеру, можно было бы использовать для сортировки писем. Я бы не хотел жить мире с таким распределением обязанностей (вру: если считать, что я немного гиперболизировал пример, то мы живем почти в таком мире), тем не менее сам мир бы не рухнул :). С другой стороны - такая задача не под силу обезьяне (на момент написания статьи ни одну, вроде как, такому еще не обучили, хотя определенные успехи есть). И если таки задаться целью сортировать письма при помощи даже армии обезьян, крах почтовой системе обеспечен (да-да, даже не из-за наличия интернет-почты). Иными словами - есть мозги быстрые, есть медленные, есть умеющие хорошо управлять руками, ногами, руками/ногами и т.д. Дабы не уходить от темы статьи, давайте рассмотрим, на какие группы разделены наши микроконтроллеры от Аtmel:

 

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

На этом наше введение заканчивается. Следующими шагами к созданию устройств на базе МК будет: