Как микроконтроллер выполняет программу

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

Но, если сильно все упростить, то основной функцией микроконтроллера является «дрыганье ножками». Т.е. у него есть несколько выводов (от 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р)

Спасибо. Вы потрясающие! Всего за месяц мы собрали нужную сумму в 500000 на хоккейную коробку для детского дома Аистенок. Из которых 125000+ было от вас, читателей EasyElectronics. Были даже переводы на 25000+ и просто поток платежей на 251 рубль. Это невероятно круто. Сейчас идет заключение договора и подготовка к строительству!

А я встрял на три года, как минимум, ежемесячной пахоты над статьями :)))))))))))) Спасибо вам за такой мощный пинок.

94 thoughts on “AVR. Учебный Курс. Вводная. Что такое микроконтроллер.”

Mazayac :

«В среднем PIC контроллере нет такого количества периферии как в AVR»
Ага-ага, используем сейчас Пики с Ethernet-ом на борту, 80 ног, закупаем по 135 рублей. AVR такие есть?

DI HALT :

Конкретно с эзернетом не встречал. По моему это вообще фишка именно пика. Другие до такого не дошли 🙂 Но я же говорил не конретно про наличие чего либо, а в целом по архитектуре. А вообще, возьми любую АВРку — так у ней на борту стандартный набор это АЦП, ШИМ, УАРТ, СПИ, и2с, зачастую есть часы, компаратор. Пики они более узкозаточенные.

Хотя есть АТМЕГА и начиная со 64й на нее можно сделать эзернет программно, библиотека готовая в WinAVR есть. Только PHY подрубить.
Кстати в том пике PHY внутренняя?

nokfyt :

не знал куда написать, решил написать сюда) Хотел бы попросить совета. Учусь на тором курсе. Есть вот такой вот стенд:
http://opensys.com.ua/Stend/Ev8031 с LCD. Поставлена задача реализовать на нем протокол ModBus RTU, чтобы он выступал как мастер и опрашивал какое-то устройство. С микроконтроллерами дела до этого я не имел. Огромное количество информации — не знаю за что хвататся: i8051, uart, сам модбас…
В голове полная каша. Посоветуйте как правильно построить изучение и на что обратить внимание в первую очередь, какую-небудь литературу конкретную, которая поможет разобратся.
Потрясающтй сайт! Отличный статьи для начинающих! Спасибо вам за труд.

Удивил езернетом на пике. Нагугли xmega атмеловский и прикинь может ли это все пик =)

Команда в PIC выполняется за 4 такта! (а не 1)… Периферии, например, в достаточно популярных 16F873 — 876 вполне достаточно в большинстве случаев. Примерно то же, что и в MEGA32, только памяти поменьше. Но ее много и не к чему (если внутрь Бэйсик не пихать). Зато у PIC есть важное отличие от Атмелов — таймер с предделителем с внешнего входа могут считать до 70-80 МГц даже у 16F84 с тактовой 4 Мгц! Удобно для частотомеров. Атмелам до этого ох как далеко…
А вообще, все микроконтроллеры хороши, надо только оптимально их использовать. Еще в 80х годах я на работе разрабатывал и изготавливал для нужд производства контроллеры сначала на 580ИК80, затем 1816ВЕ35 (MCS 48!), и они прекрасно справлялись с многозадачной работой в режиме реального времени, и ПЗУ 2-4 Кб вполне хватало. (Это вам не VISTA)!

DI HALT :

Много периферии важно для новичков. Чтобы купив один кристалл изучить сразу все возможное. За это я и люблю Атмел.

Источник: easyelectronics.ru

Начало работы с микроконтроллерами PIC: руководство для начинающих

В 1980 году компания Intel разработала первый микроконтроллер (8051) с гарвардской архитектурой 8051, и с тех пор микроконтроллеры произвели настоящую революцию в электронике. И в настоящее время мы располагаем целым набором эффективных и сравнительно дешевых микроконтроллеров: AVR, PIC, ARM и др. Данные микроконтроллеры просты в освоении и поддерживают широкий набор современных интерфейсов связи: USB, I2C, SPI, CAN и т.д. Отдельную микро революцию в этой сфере произвели такие платы как Arduino и Raspberry Pi, при этом Raspberry Pi представляет собой не просто микроконтроллер, а целый компьютер внутри.

Читайте также:
Команда или серия команд программы составленной на одном из языков программирования

Данным материалом мы начнем на нашем сайте цикл обучающих статей по микроконтроллерам PIC, которые являются отличным выбором для начинающих освоение микроконтроллерной техники.

Внешний вид компонентов, необходимых для начала работы с микроконтроллерами PIC

В этой статье мы рассмотрим общее устройство микроконтроллеров PIC и программное обеспечение, с помощью которого можно работать с данными микроконтроллерами. Видео в конце данной статьи расскажет вам об установке и настройке таких программ как MPLABX, XC8, Proteus. Также будет рассмотрена быстрая распаковка программатора PICkit 3.

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

Микроконтроллер PIC впервые был представлен компанией Microchip Technologies в 1993 году. Первоначально эти микроконтроллеры были разработаны как часть компьютеров PDP (Programmed Data Processor), и все периферийные устройства подключались к данному компьютеру с использованием данного микроконтроллера PIC. Отсюда микроконтроллеры PIC и получили свое название – Peripheral Interface Controller (контроллер периферийного интерфейса). Позже компания Microchip разработала множество микросхем серии PIC, которые могут быть использованы для практически любых небольших приложений, таких, к примеру, как освещение, и вплоть до достаточно «продвинутых» устройств.

Каждый микроконтроллер в современном мире построен на основе определенной архитектуры, самый известный сейчас тип архитектуры для микроконтроллеров – это гарвардская архитектура. И микроконтроллеры PIC основаны именно на этой архитектуре, поскольку они принадлежат к классическому семейству 8051. Поэтому давайте рассмотрим основы данной архитектуры.

Микроконтроллер PIC16F877A состоит из встроенного процессора, портов ввода-вывода, нескольких типов памяти, аналого-цифрового преобразователя (АЦП), таймеров/счетчиков, системы прерываний, портов последовательной связи, генератора и модуля CCP, что делает его удобным для применения в большинстве проектов встраиваемой электроники. Структурная схема архитектуры микроконтроллера PIC приведена на следующем рисунке.

Центральный процессор (Central Processing Unit, CPU)

Центральный процессор в микроконтроллерах PIC предназначен для выполнения арифметических и логических операций и операций чтения/записи в память. Также он выполняет функции координатора между оперативной памятью (RAM) и другими периферийными устройствами микроконтроллера.

Центральный процессор состоит из следующих основных компонентов:

  • арифметико-логическое устройство (АЛУ), выполняющее арифметические и логические операции;
  • блок памяти (Memory unit, MU), хранит инструкции (команды) после их выполнения;
  • блок управления, выполняет роль коммуникационной шины между центральным процессором и другими периферийными устройствами микроконтроллера.

Оперативное запоминающее устройство (Random Access Memory, RAM)

Оперативное запоминающее устройство (ОЗУ) – это один из компонентов, который оказывает существенное влияние на скорость работы микроконтроллера. Оно состоит из набора регистров, каждый из которых выполняет свои определенные функции. Данные регистры могут быть классифицированы по двум основным признакам:

  • регистры общего назначения (General Purpose Register, GPR);
  • специальные регистры (Special Function Register, SFR).

Как следует из их названия, регистры общего назначения (РОН) выполняют такие основные функции как сложение, вычитание и т.д. В микроконтроллерах PIC эти операции ограничены размером 8 бит. Регистры общего назначения доступны как для записи, так и для чтения, и не могут выполнять каких либо специальных функций если это не предусмотрено в программе.

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

Постоянное запоминающее устройство (Read Only Memory, ROM)

Постоянное запоминающее устройство (ПЗУ) – это место, в котором хранится наша программа. Оно определяет максимальный размер нашей программы, по этой причине его также называют памятью программ (program memory). Для записи ПЗУ доступно только во время программирования микроконтроллера PIC, во время выполнения программы оно представляет собой память, доступную только для чтения (read only memory).

Электрически стираемое программируемое постоянное запоминающее устройство (ЭСППЗУ, EEPROM)

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

Флэш память (Flash Memory)

Флэш память представляет собой еще один вид программируемой памяти, доступной только для чтения (Programmable Read Only Memory, PROM), в которую мы можем записывать, считывать и стирать программу тысячу раз.

Порты ввода/вывода

В микроконтроллере PIC16F877A есть пять портов: Port A, Port B, Port C, Port D и Port E. Из этих пяти портов только Port A является 16-битным, а PORT E – 3-битным. Остальные 3 порта являются 8-битными.

Контакты данных портов могут использоваться для ввода и вывода данных, в зависимости от конфигурации регистра TRIS. Кроме функций ввода/вывода контакты портов могут выполнять специальные функции: формирование ШИМ сигнала, обработка прерываний, связь по интерфейсу SPI и др.

Шина

Термин «шина» означает совокупность проводов, которые соединяют входные и выходные устройства с центральным процессором и оперативной памятью. Шина данных используется для передачи или приема данных.

Адресная шина используется для передачи адреса памяти от периферийных устройств к центральному процессору. Контакты ввода/вывода (I/O pins) используются для подключения внешних периферийных устройств. Протоколы последовательной связи UART и USART используются для подключения таких устройств как модули GSM, GPS, Bluetooth, инфракрасной связи и др.

Различие в функциях адресной шины и шины данных

Выбор микроконтроллера PIC для наших проектов

Микроконтроллеры PIC от компании Microchip подразделяются на 4 больших семейства. Каждое семейство отличается своим набором компонентов и характеристик.

  1. Первое семейство, PIC10 (10FXXX) – называется Low End.
  2. Второе семейство, PIC12 (PIC12FXXX) – называется Mid-Range.
  3. Третье семейство – это PIC16 (16FXXX) .
  4. Четвертое семейство – это PIC 17/18(18FXXX) .

Поскольку в дальнейшем мы на нашем сайте будем рассматривать достаточно много проектов на основе микроконтроллеров PIC, то для этих проектов мы решили выбрать достаточно универсальный микроконтроллер, относящийся к семейству 16F – это микроконтроллер PIC16F877A. Он способен работать с такими популярными сейчас интерфейсами как SPI, I2C и UART.

После того как вы выбрали микроконтроллер, первым делом необходимо изучить даташит на него. Из данного даташита можно узнать что микроконтроллер PIC16F877A содержит 3 таймера, два из которых являются 8-битными, а третий – с 16-битным предделителем. Данные таймеры также могут использоваться в качестве счетчиков. Также из даташита можно узнать, что микроконтроллер поддерживает CCP опции (Capture Compare и PWM), которые позволяют ему формировать сигналы ШИМ (широтно-импульсной модуляции) и считывать частоту входных сигналов. Для связи с внешними устройствами он обладает интерфейсами SPI, I2C, PSP и USART.

Микроконтроллер PIC16F877A содержит 8-канальный 10-битный АЦП (аналого-цифровой преобразователь), который позволяет производить преобразование аналоговых значений в цифровые с разрешением 10 бит. Это преобразование можно осуществлять на 8 контактах микроконтроллера. Также в составе микроконтроллера есть два встроенных компаратора, которые позволяют непосредственным образом сравнивать значения поступающих напряжений, без считывания их программным способом.

Память программ микроконтроллера поддерживает до 100 тысяч циклов перезаписи, что позволяет его перепрограммировать 100 тысяч раз. Разъем ICSP™ (In-Circuit Serial Programming™) позволяет нам программировать микроконтроллер с помощью PICKIT3. Отладку работы программы можно производить через разъем ICD (In-Circuit Debug). Также в составе микроконтроллера есть и сторожевой таймер (Watchdog Timer, WDT), который позволяет, при необходимости, производить сброс работы программы.

На следующем рисунке представлена распиновка микроконтроллера PIC16F877A, на которой вы можете увидеть все специальные функции, которые могут выполнять определенные контакты микроконтроллера.

Распиновка микроконтроллера PIC16F877A

Выбор программного обеспечения для наших проектов

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

Для программирования микроконтроллеров PIC нам понадобится интегрированная среда разработки (Integrated Development Environment, IDE), в которой мы непосредственно будем писать программы. Также нам будет необходим компилятор, который преобразовывать нашу программу в HEX файл – формат, который понимает наш микроконтроллер. И, наконец, нам понадобится интегрированная среда программирования (Integrated Programming Environment, IPE), которая будет записывать наш HEX файл в микроконтроллер. В качестве всех этих инструментов мы выберем следующие:

Читайте также:
2 какое число будет выведено в результате работы следующей программы

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

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

Подготовка аппаратного обеспечения

Для загрузки кода программы в микроконтроллер PIC мы будем использовать программатор PICkit 3, купить который на Aliexpress можно по следующей ссылке. Данный программатор прост в освоении, относительно дешево стоит и управляется с помощью программы MPLAB IDE (версии v8.20 или выше), установленный на компьютер с Windows. Кроме данного программатора нам также понадобится перфорированная или макетная плата, паяльная станция, непосредственно сам микроконтроллер, кварцевые генераторы, конденсаторы и т.д.

Внешний вид программатора PICkit 3

Видео

Источник: microkontroller.ru

Микроконтроллеры семейства 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

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

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

Фото чипа MegaAVR

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

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

Фото чипа XmegaAVR

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

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

Название серии Число контактов Объем флэш-памяти Особенность
TinyAVR 6-32 0,5 – 8 КБ Небольшой размер
MegaAVR 28-100 4-256 КБ Периферийные устройства
XmegaAVR 44-100 16-384 КБ Система прерываний, поддержка DMA

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

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

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

Фото AVR32

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

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

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

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

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

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

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

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

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

Схема архитектуры AVR

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

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

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

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

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

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

Заключение

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

Источник: biosgid.ru

Рейтинг
( Пока оценок нет )
Загрузка ...
EFT-Soft.ru