Вот история моего выбора. На заре появления микроконтроллеров у нас на радиорынках, возникло у меня непреодолимое желание применить их для хозяйственных целей. А в то время выбор на радиорынках состоял из одних PICов. С не детской ценой и строго «под заказ». Но, то ли отпугивала цена, то ли неуверенность в том, что осилю это чудо, но так и не получалось заняться микроконтроллерами Pic. Прошло определенное время, цена на контроллеры уже не пугала, так как они здорово подешевели, да и закончил учиться, начал работать, зарабатывать денюжку. Можно бы начать освоение, но опять мешали обстоятельства – осталась та неуверенность в том, смолу ли осилить, и работа, та что, вроде бы, должна помогать в денежном плане нещадно отбирала время, рубая на корню давние порывы, нырнуть в загадочный и манящий мир микроконтроллеров.
Программированием баловался с тех же ранних лет. Сначала был ,Бейсик потом ассемблер на Z80, потом были х86. Дальше был провал, заполняемый играми, работой и еще какой то фигней. Все это время, общаясь со старшими|младшими товарищами, которые чего-то там вытворяли с микроконтроллерами, испытывал непреодолимое желание начать таки с ними разбираться. И вот настал момент когда звезды стали нужным образом и я твердо решил: начну – полюбому начну. Чтобы начать не с нуля, тупо мигая светодиодиками, нужен был маштабный проект, чтоб было интересно, увлекательно и со смыслом. И вот, в срочном порядке, в интернете был нарыт проект на который должны быть брошены все силы, деньги и время. Понятное дело, решено было начать изучать микроконтроллер, который маячил с ранних лет красненьким флажком – PIC. Благо на работе приятель давно занимается PIC-ами и с программатором проблем не должно было быть. По моей просьбе мне был анонсирован данный девайс (программатор) и в анонсе проскакивали фразы «все виды PIC-ов», «внутрисхемное программирование», «внутрисхемная отладка», «USB» и другие страшные слова. Принеся на работу свой девайс, он с гордостью мне его вручил. В руки я получил здоровенную коробку (кто помнит в такие коробочки на заре компьютеризации засовывали 5 дюймовые дисководы (по крайней мере, я засовывал) с одной стороны одиноко торчал хвостик USB а с другой — также одиноко, торчал хвостик с разъемом внутрисхемного программирования. Вид этого монстра, скажу честно, немного меня озадачил, и сразу захотелось заглянуть внутрь этого «черного ящика». Так как мой коллега давно занимался электроникой и болтики крепления вещь противоречащая его существу, то на широко раскрытые глаза и тыкающий в ящик палец он пожал плечами и снял верхнюю крышку. Внутри “Черного ящика» меня ожидал еще один сюрприз — на дне лежала небольшая платка. Коллега прихватил плату ко дну коробки горячим клеем. Плата была заводской, содержала под десяток разнокалиберных микросхем довольно плотно упакованных на плату. Надо ли говорить, что для неподготовленного мозга начинающего электронщика это было слишком – мозг ушел в ступор. Друг, увидев мое состояние, решил не травмировать больше неокрепшую психику и бережно вернул крышку девайса на место. На вопрос «а че, самому собрать нельзя?» друг сделал печальную мину и выдал фразу «та пробовал – натра..лся — решил, проще купить». Так у меня началось знакомство с программатором для микроконтроллеров. И я в один миг лишился иллюзий по поводу того, что все будет легко и просто. Ладно, думаю – поюзаю девайс друга первое время, потом куплю себе свой. Про цену готового программатора у друга я не спросил, побоялся еще больше омрачить знакомство с микроконтроллерами. Пришло время начать знакомство с загадочным PIC-ом. Как оказалось линейка PIC-ов довольно-таки обширная и для выбора нужного экземпляра моих знаний просто не хватило. Другом был рекомендован чип который, по его мнению, был довольно универсальным. Также был вручен электронная книга с описанием и пожелание удачного знакомства с микроконтроллером. После беглого ознакомления с документом меня ожидало разочарование. Так как у меня с ранних времен остались положительные впечатления от ковыряния в ассемблере Z80, то решено было изучать ассемблер. С Z80 все было легко и понятно и я приготовился к тому, что с PIC-ками будет еще проще. Я ошибался. Ну, во-первых, меня просто до глубины души возмущала такая нелогичность как 14битные ячейки памяти программ. Ну не укладывалось у меня в мозгу, как так может быть, чтоб слово программы было так бессовестно кастрировано. А как тогда хранить данные в памяти? Разбивать байты на части или терять 6ти битные обрезки. И это во времена, когда память стоит дешевле семечек. Дальше — больше. Ну нафига в микроконтроллере с размером памяти в 4-16 килобайт страничная организация памяти? Ну хоть убейте не понимаю. А размазать по 4 страницам управляющие регистры вперемешку с ячейками памяти — это вообще мазохизм какой то. Еще, почему-то, в книжке преподносилось как достоинство небольшое (скудное) количество инструкций ассемблера – 30 с хвостиком. Короче, писать на ассемблере мне резко перехотелось. Ладно, думаю, буду писать на Си – он все разрулит. И тут я себе представил офигевший компилятор Си который, по ходу программы, переключается между страницами, пытается хранить константы в 14 битных ячейках памяти, строит комбинации из этих самых «всего 30+ инструкций», при этом тратя на каждую инструкцию по 4 такта. В общем разочарование полное. На мое счастье тот самый стартовый проект, о котором я говорил ранее, был в 2х вариантах. Вернее сначала он был сделан на PIC-е, а вторую версию автор переделал с применением Atmel ATtiny2313. Так как я уже до этого почитывал топики с холиварами PIC vs AVR, то я решил посмотреть как там дела у конкурента. И был сразу поражен различием архитектуры у вроде-бы равнозначных микроконтроллеров. Гениальное произведение корпорации Атмел с архитектурой RISC сразу меня покорило.
Создатели умудрились сделать микроконтроллер быстрый, простой, можно даже сказать элегантный. Почти все команды микроконтроллера выполняются за 1 такт, память линейная с четкой разбивкой по функциональности, куча команд контроллера(больше 130) подогнанных под Си (теперь компилятор не фигеет – он фривольно работает с вариантами оптимизации кода) и самое главное, для меня ставшее неожиданным сюрпризом – 32!!! аккумулятора — регистра общего назначения. То есть с каждым из них можно делать все что угодно – любые операции! Программаторы у AVR очень просты – самый примитивный называется «5 проводков» — реально 5 проводков цепляются на LPT порт и шьется микроконтроллер. Я был покорен AVR. С таким жирным набором плюсов было решено делать проект только на AVR и только на ассемблере. Вот так я выбирал микроконтроллер.
Прошу прощения у приверженцев PIC. В некоторых моментах я, конечно-же, не прав, так как поверхностно изучал PIC и не написал ни одной программы для него. Если где-то в тексте Вы видите несоответствия – напишите я поправлю.
В качестве заключения дам небольшой совет. Если вы выбираете контроллер и Вам нужен ассемблер и быстродействие – хорошим выбором будет AVR (как вариант можно выбрать новые серии PIC, но ни ценой, ни доступностью они Вас не порадуют). Если вы планируете писать свои программы на Си или другом языке высокого уровня, то, в принципе, разницы не будет.