Привет!

Это резервный блог для GetChip.net - "Готовые решения для твоих электронных проектов".
Заходите, найдете что-то интересное для себя.

А почему именно AVR?

А почему именно AVR?:
Справедливый вопрос. Вот моя история приобщения к микроконтроллерам. Давным – давно, на заре появления микроконтроллеров у нас на радиорынках, возникло у меня непреодолимое желание приручить это «чудо». А в то время из «чудес» на радиорынках водились только микроконтроллеры под немного детским названием Pic. С далеко не детской ценой и строго «под заказ». Но толи отпугивала цена, толи неуверенность в том, что осилю это чужеземное создание – микроконтроллеры обходил стороной. Прошло определенное время, цена на контроллеры уже не пугала, так как они здорово подешевели, да и закончил учиться, начал работать, зарабатывать денюжку. Можно бы начать освоение, но опять мешали обстоятельства – осталась та неуверенность в том смолу ли осилить, и работа, та что, вроде бы, должна помогать в денежном плане нещадно отбирала время, рубая на корню порывы юности, нырнуть в загадочный и манящий мир микроконтроллеров.
Программированием баловался с тех же ранних лет. Сначала был ,Бейсик потом ассемблер на Z80, потом были х86. Дальше был провал, заполняемый играми, работой и еще какой то фигней. Все это время, общаясь со старшими|младшими товарищами, которые чего-то там вытворяли с микроконтроллерами, испытывал непреодолимое желание начать таки с ними разбираться. И вот настал момент когда звезды стали нужным образом и я твердо решил: начну – полюбому начну. Чтобы начать не с нуля, тупо мигая светодиодиками, нужен был маштабный проект, чтоб было интересно, увлекательно и со смыслом. И вот, в срочном порядке, в Инете был нарыт проект(схема) на который должны быть брошены все силы и энергия, все деньги и время. Понятное дело решено было начать изучать микроконтроллер, который маячил с ранних лет красненьким флажком – PIC. Благо на работе приятель давно и серьезно занимается PIC-ами (клепает шабашки помаленьку) и с программатором проблем не должно было быть. Мне был анонсирован данный девайс (программатор) и в анонсе проскакивали фразы «все виды PIC-ов», «внутрисхемное программирование», «внутрисхемная отладка», «USB» и другие страшные слова. Принесши на работы свой девайс, он с гордостью мне его вручил. В руки я получил здаравенную коробку (кто помнит в такие коробочки на заре компьютеризации засовывали 5 дюймовые дисководы (по крайней мере, я засовывал) с одной стороны одиноко торчал хвостик USB а с другой – также одиноко, торчал хвостик с разъемом внутрисхемного программирования. Вид этого монстра, скажу честно, немного меня озадачил, и сразу захотелось позаглядывать внутрь этого «черного ящика». Так как мой коллега «крутой хакер» и болтики крепления вещь противоречащая его существу, то на широко раскрытые глаза и тыкающий в ящик палец он пожал плечами и снял верхнюю крышку. Внутри “Черного ящика» меня ожидал еще один сюрприз – на дне лежала небольшая платка 5х10см. Оправдывая звание крутого хакера, коллега прихватил плату ко дну коробки горячим клеем. Плата была заводской, содержала под десяток разнокалиберных микросхем довольно плотно упакованных на плату. Надо ли говорить, что для неподготовленного мозга начинающего электронщика это было слишком – мозг ушел в ступор. Друг, увидев мое состояние, решил не травмировать больше неокрепшую психику и бережно вернул крышку девайса на место. На вопрос «а че, самому собрать нельзя?» друг сделал печальную мину и выдал фразу «та пробовал – натра..лся – решил проще купить». Так у меня началось знакомство с программатором для микроконтроллеров. И я в один миг лишился иллюзий по поводу того, что все будет легко и просто. Ладно, думаю – поюзаю девайс друга первое время, потом куплю себе свой. Про цену готового программатора у друга я не спросил, побоялся еще больше омрачить знакомство с микроконтроллерами. Пришло время начать знакомство с загадочным 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, но ни ценой, ни доступностью они Вас не порадуют). Если вы планируете писать свои программы на Си или другом языке высокого уровня, то в принципе разницы не будет.