Для начинающих микроконтроллер: Микроконтроллеры для начинающих

Содержание

Советы начинающим программистам микроконтроллеров / Хабр

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



1. Многие начинающие электронщики не знают с чего начать

, поэтому спрашивают совета. Большинство бывалых радиолюбителей ответят, что начни собирать какую нибудь схему. Естественно в голове любого начинающего сразу мелькает LCD дисплей с jpeg картинками, какой нибудь mp3 плеер или часы, без малейшей мысли о том, что не имея базовых знаний это неподъемная задача.

Я категорически против такого подхода. Обычно это все заканчивается — либо ничем, либо забитые форумы с мольбами помочь. Даже если кому то помогают, то в 90% он больше никогда не всплывет на сайтах по электронике. В остальных 10% он так и продолжает заливать форумы мольбами, его будут сначала пинать, затем поливать грязью. Из этих 10% отсеивается еще 9%. Далее два варианта: либо таки до глупой головы доходит и все же происходит goto к началу, либо в особо запущенных вариантах, его удел копировать чужие конструкции, без единой мысли о том как это работает. Из последних зачастую рождаются ардуинщики.

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

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

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

2. Перед решением задачи, дробите ее до абсурда вплоть до «припаять резистор», это помогает, проверено. Мелкие задачи решать куда проще. Когда большая задача разбита на кучу мелких действий, то все что остается — это выполнить их. Могу привести еще один годный совет, хоть он вам и покажется бредовым — заведите блокнотик и пишите в него все что собираетесь сделать. Вы думаете, итак запомню, но нет. Допустим сегодня у меня хорошее настроение и думаю о том, как собрать плату. Запиши план действий: сходить купить резистор, подготовить провода, сделать крепление дисплея. Потом все забудешь, откроешь блокнотик и смотришь — ага сегодня настроение попилить и построгать, сделаю крепление. Или собираешь ты плату и уже осталось допаять последний компонент, но не тут то было резисторы кончились, вот записал бы перед тем как паять, то вспомнил.

3. Не пользуйтесь кодогенераторами, нестандартными фичами и прочими упрощалками, хотя бы на первых этапах. Могу привести свой личный пример. Во времена активного использования AVR я пользовался кодогеном CAVR. Меня он полностью устраивал, хотя все говорили, что он кака. Звоночки звенели постоянно, были проблемы с библиотеками, с синтаксисом, с портированием, но было тяжело от этого отказаться. Я не разбирался как это работает, просто знал где и как поставить галочки.

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

По поводу всех улучшалок и упрощалок, было одно очень хорошее сравнение, что они подобны инвалидным коляскам, которые едут по рельсам, можно ехать и наслаждаться, но вставать нельзя, куда везут — туда и приедешь.

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

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

Очень многие начинающие брезгуют изучением языка, поэтому если вы не будете как все, то сразу станете на две ступени выше остальных новичков. Так же не никакой разницы, где изучать язык. На мой взгляд, микроконтроллер для этого не очень подходит. Гораздо проще поставить какую нибудь Visual studio или Qt Creator и порешать задачки в командной строке.

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

5. Изучение ассемблера? Бояться его не нужно, равно как и боготворить. Не нужно думать, что умея написать программу на ассемблере, вы сразу станете гуру микроконтроллеров, почему то это частое заблуждение. В первую очередь это инструмент. Даже если вы не планируете использовать его, то все равно я бы настоятельно рекомендовал написать хотя бы пару программ. Это сильно упростит понимание работы микроконтроллера и внутреннего устройства программ.

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

7. Часто народ просит прислать даташит на русском. Даташит — это то, что должно восприниматься как истина, самая верная информация. Даже там не исключены ошибки. Если к этому добавятся ошибки переводчика, он ведь тоже человек, может даже не нарочно, просто опечататься. Либо у него свое видение, может что-то упустить, на его взгляд не важное, но возможно крайне важное для вас. Особенно смешной становится ситуация, когда нужно найти документацию на не сильно популярные компоненты.

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

Мною был проведен эксперимент: в наличии был студент, даташит и гугл переводчик. Эксперимент №1: студенту вручен даташит и дано задание самостоятельно найти нужные значения, результат — «да как я смогу», «да я не знаю английский», «я ничего не нашел/я не понял» типичные фразы, говорящие о том, что он даже не пытался. Эксперимент №2: тому же студенту, вручен все тот же даташит и тоже задание, с той разницей, что я сел рядом. Результат — через 5 минут он сам нашел все нужные значения, абсолютно без моего участия, без знания английского.

8. Изобретайте велосипед. Например, изучаете какую то новую штуку, допустим транзистор, дядька Хоровиц со страниц своей книги авторитетно заявляет, что транзистор усиливает, всегда говорите — НЕ ВЕРЮ. Берем в руки транзистор включаем его в схему и убеждаемся что это действительно так. Есть целый пласт проблем и тонкостей, которые не описываются в книгах. Прочувствовать их можно только, когда возьмешь в руки и попробуешь собрать. При этом получаем кучу попутных знаний, узнаем тонкости. Кроме того, любая теория без практики забудется намного быстрее.

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

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

9. А как бы я сделал это, если бы находился на месте разработчиков? Могу ли я сделать лучше? Каждый раз задавайте себе эти вопросы, это очень хорошо помогает продвигаться в обучении. Например, изучите интерфейсы 1wire, i2c, spi, uart, а потом подумайте чем они отличаются, можно ли было сделать лучше, это поможет осознать почему все именно так, а не иначе. Так же вы будете осознавать, когда и какой лучше применить.

10. Не ограничивайтесь в технологиях. Важно что этот совет имеет очень тонкую грань. Был этап в жизни, когда из каждой подворотни доносилось «надо бы знать ПЛИС», «а вот на ПЛИС то можно сделать». Формально у меня не было целей изучать ПЛИСины, но и пройти мимо было никак нельзя. Этому вопросу было выделено немного времени на ознакомление. Время не прошло зря, у меня был целый ряд вопросов, касаемых внутреннего устройства микроконтроллеров, именно после общения с плисинами я получил ответы на них. Подобных примеров много, все знания, которые я приобретал в том или ином виде, рано или поздно пригодились. У меня нет ни единого бесполезного примера.

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

11. Если спросить начинающего радиолюбителя, что ему больше нравится программирование или схемотехника, то с вероятностью 99% ответ будет программирование. При этом большую часть времени эти программисты тратят на изготовление плат ЛУТом/фоторезистом. Причины в общем то понятны, но довольно часто это переходит в некий маразм, который состоит в изготовлении плат ради изготовления плат.

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

12. Следующий совет, особенно болезненный, мне очень не хочется его обсуждать, но надо. Часто мне пишут, мол ххх руб за ууу дорого, где бы подешевле достать. Вроде бы обычный вопрос, но обычно я сразу напрягаюсь от него, так как зачастую он переходит в бесконечные жалобы на отсутствие денег. У меня всегда возникает вопрос: почему бы не оторвать пятую точку и не пойти работать? Хоть в тот же макдак, хоть на стройку, потерпеть месяц, зато потом можно приобрести парочку плат, которых хватит на ближайший год. Да я знаю, что маленьких городах и селах сложно найти работу, переезжайте в большой город. Работайте на удаленке, в общем нужно крутиться. Просто жаловаться нет смысла, выход из ситуации есть, кто ищет его тот находит.

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

Не говорю что дешевое = плохое, нет — все зависит от ситуации. Вернусь к примеру кримпера, было время когда обжимал чем попало, поэтому часто возникали проблемы. Особенно неприятно, когда заводишь плату и она не работает, после долгих поисков ошибки понимаешь что из-за плохо обжатого проводочка, обидно. С тех пор как появилась нормальная обжимка этих проблем нет. Да внутренняя жаба и квакала, и душилась от ее стоимости, но ни разу не пожалел об этом решении. Все что я хочу сказать, что поработав с нормальным инструментом, совершенно не хочется возвращаться к плохому, даже не хочется обсуждать это. Как показывает практика, лучше не экономить на инструментах, если сомневаетесь — возьмите у кого нибудь потестить, почитайте отзывы, обзоры.

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

15. Тонкий вопрос: профильное высшее образование, нужно ли оно? Мне известны не единичные случаи, когда люди работали абсолютно без образования и по опыту и знаниям они могли дать прикурить любому дипломированному специалисту. Собственно, у меня нет профильного образования, испытываю ли я от этого дискомфорт? В определенной степени да.

Еще в самом начале, когда микроконтроллеры были для меня хобби, я много помогал с курсовыми и дипломами разных вузов, просто чтобы оценить свой уровень. Могу сказать уверенно, что уровень в целом невысок вне зависимости от имени вуза. Учиться несколько лет, для того чтобы написать такой диплом, совершенно необязательно. Достигнуть этого можно самостоятельно за весьма короткий срок. И все же зачастую бывали моменты, когда студенты знали какой то предмет, который они проходили на 2-3 курсе, а я этого не знал. Хоть все эти знания и компенсировались самообразованием, но все же лучше было бы не тратить на это время.

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

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

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

Если подытожить то совет таков: если есть хоть малейшая возможность — нужно идти учиться, обязательно по профилю, если есть хоть какие то шансы, то лезть везде, а не отсиживать штаны на задней парте. Заводить знакомства, параллельно дома самому практиковаться, развиваться.

16. Поздно ли начинать программировать в 20, 30, 40, 50 лет? Практика других людей показывает, что возраст вообще не помеха. Многие почему то не учитывают то, что есть целый пласт работы, которую молодые в силу своих амбиций не хотят делать. Поэтому работодатели предпочитают брать тех, кто будет ее тащить. Это ваш шанс зацепиться, а дальше все зависит только от вас.

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

Михаэль Хофманн. Микроконтроллеры для начинающих

Михаэль Хофманн. Микроконтроллеры для начинающих

Предисловие

Микроконтроллеры находятся почти во всех электронных устройствах. В этой книге показано, что запрограммировать и применить микроконтроллер не так уж сложно. Хотя у некоторых при упоминании слова «Ассемблер» (Assembler) в связи с программированием «волосы встают дыбом». После прочтения этой книги вы поймете, что это вовсе не так уж сложно, как это иногда кажется.

Возможности микроконтроллера рассмотрены на различных примерах, в которых используется микроконтроллер PIC16F876A производства компании Мicrochip, имеющий различные интерфейсы и обладающий достаточно широкими возможностями. На примерах будет показано, как осуществить опрос входов и переключение выходов микросхемы. Вы также научитесь управлять дисплеем для отображения текста и данных. Узнаете, как измерить аналоговые сигналы, сохранить их в ЕЕРRОМ-памяти (Electrically Erasable Programmable Read-On1y Memory — электрически стираемое программируемое постоянное запоминающее устройство) и затем прочитать с помощью персонального компьютера. На другом примере будет показано управление выходами с помощью инфракрасного управления. Часть примеров может моделироваться с помощью среды разработки МРLАВ, поэтому в принципе не потребуются какие-либо аппаратные средства. Но поскольку любой микроконтроллер должен когда-нибудь хоть раз использоваться для схемы, представляется маленькая монтажная плата, на которой все примеры могут испытываться в реальной среде. Для облегчения работы и отладки монтажа вы можете приобрести неукомплектованную (без деталей) печатную плату, если посетите мой сайт (www.edmh.de). Если вы захотите сами дополнить ее, то найдете расположение схемных элементов в Eagle-формате на приложенном CD-ROM. На нем находится также различная документация, например, обзор команд и описания регистров микроконтроллера. Для программирования микроконтроллера используется внутрисхемный отладчик ICD 2 (In-CircuitDebugger) от компании Microchip. Однако на CD-ROM находится очень простая схема, с которой РIС-контроллер может программироваться через последовательный интерфейс.

Что нужно для программирования микроконтроллеров? ⋆ diodov.net

Теперь, когда мы уже ознакомлены с некоторыми возможностями и функциями микроконтроллеров, естественно, возникает логичный вопрос: что нужно для программирования микроконтроллеров? Какие необходимы программы и устройства, где их взять?

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

Структура и порядок написания программы

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

Следующим этапом после составления алгоритма является непосредственное написание кода программы. Программы для микроконтроллеров пишутся на языке Си или Ассемблере. Только Ассемблер больше относится к набору инструкций, нежели к языку программирования и является языком низкого уровня.

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

Здесь мы не будем сравнивать преимущества и недостатки написания программ на Ассемблере и Си. Со временем, приобретя некоторый опыт в программировании МК, вы сами для себя сделаете полезные выводы.

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

Компиляция программы

Написанный нами код на Си еще вовсе не понятен микроконтроллеру, поскольку МК понимает команды только в двоичной (или шестнадцатеричной) системе, которая представляет собой набор нулей и единиц. Поэтому Си-шный код нужно преобразовать в нули и единицы. Для этого применяется специальная программа, называемая компилятор, а сам процесс преобразования кода называется компиляция.

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

прошить микроконтроллер.

Для прошивки МК применяется устройство, называемое программатор. В зависимости от типа программатора вход его подключается к COM или USB порту, а выход к определенным выводам микроконтроллера.

Существует широкий выбор программаторов и отладочных плат, однако нас вполне устроит самый простой программатор USBASP, который в Китае стоит не более 3 $.

После того, как микроконтроллер прошит, выполняется отладка и тестирование программы на реальном устройстве или, как еще говорят, на «железе».

Теперь давайте подытожим этапы программирования микроконтроллеров.

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

Следует заметить, что отладку и тестирование программы также выполняют до прошивки МК.

Необходимый набор программ

Существует множество полезных и удобных программ для программирования МК. Они бывают как платные, так и бесплатные. Среди них можно выделить три основных:

1) Atmel Studio

2) CodeVisionAVR

3) WinAVR

Все эти программы относятся к IDEIntegrated Development Environment – интегрированная среда разработки

. В них можно писать код, компилировать и отлаживать его.

Следует обратить внимание на Code Vision AVR. Эта IDE позволяет упростить и ускорить написание кода. Однако программа платная.

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

Прошивка и отладка программы

Прошивать микроконтроллеры мы будем с помощью дополнительной программы

AVRDUDE.

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

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

Еще один важный элемент, который нам пригодится – это техническая документация на МК, называемая datasheet. В общем, нужно скачать datasheet на микроконтроллер ATmega8.

Итак, полный набор для программирования МК состоит из таких элементов:

1) Atmel Studio

2) Datasheet на ATmega8

3) Proteus

4) AVRDUDE

5) Программатор USB ASP (+ драйвер на него)

6) Макетная плата

7) Микроконтроллер ATmega8

Если микроконтроллера нет в наличии, не стоит откладывать изучение микроконтроллеров на потом, достаточно скачать и установить:

1) Atmel Studio

2) Datasheet на ATmega8

3) Proteus

Скачать AVRDUDE

Скачать datasheet ATmega8

Скачать Atmel Studio

Еще статьи по данной теме

Программирование микроконтроллеров для начинающих: легко и доступно

Всё популярнее становится тема электронного конструирования. Предлагаем вашему вниманию статью, которая расскажет, что такое программирование микроконтроллеров для начинающих.

Какие микроконтроллеры существуют?

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

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

Программирование микроконтроллеров осуществляется, как правило, с помощью специальных приспособлений, которые называются программаторами. Программаторы могут быть или покупными или самодельными. Но при прошивке микроконтроллера с помощью самодельного программатора шанс того, что он превратится в «кирпич», довольно высокий. Есть ещё один вариант, который можно рассмотреть на примере платы «Ардуино». Плата работает на МК фирмы Atmel, и в ней осуществляется программирование микроконтроллеров AVR. В плате уже есть заранее прошитый бутлоадер и порт USB, которые позволяют безопасно прошить используемый микроконтроллер, не давая пользователю доступа к данным, что могут этот самый МК вывести из строя. Программирование микроконтроллеров для начинающих не так сложно, как может показаться, и при определённой сноровке и сообразительности избавит вас от необходимости ехать за новым механизмом.

Аппаратные различия разных микроконтроллеров

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

Языки программирования микроконтроллеров

В качестве языков программирования микроконтроллеров используется два: С/С++ и ассемблер. Каждый из них имеет свои преимущества и недостатки. Так, если говорить про ассемблер, то он даёт возможность сделать всё очень тонко и качественно, особенно важно это, когда не хватает оперативной памяти или оперативных мощностей (что, впрочем, довольно редко происходит). Но его изучение и написание программ на нём требует довольно много усилий, пунктуальности и времени. Поэтому для разработок на основе микроконтроллеров часто используют языки программирования С и С++. Они являются более понятными, по своему виду и структуре они близки человеческой речи, хотя и не представляют из себя её в полноценном понимании. Также они имеют очень хорошо проработанный функционал, который может запросто взаимодействовать с аппаратной частью, представляя, что это всего лишь элемент программы. При всех своих явных преимуществах на С и С++ создают более объемные программы, нежели на ассемблере.

Также в отдельных случаях, когда критичным является используемое оперативное пространство, можно соединить эти языки. Почти все среды разработки для С и С++ имеют возможность установки в программу ассемблерных вставок. Поэтому в случае возникновения проблемы на критическом участке можно написать ассемблерную вставку и интегрировать её в прошивку для микроконтроллера, а саму прошивку, точнее, большую её часть, написать на С или С++. Программирование микроконтроллеров на СИ является более лёгким, поэтому многие выбирают именно эти языки. Но те, кто не боится трудностей и хочет понять особенность работы аппаратуры, могут попробовать свои силы и с ассемблером.

Напутствие

Если появилось желание поэкспериментировать с микроконтроллерами, это прекрасно. Можно только посоветовать запастись терпением и настойчивостью, и тогда любые цели, поставленные перед изобретателем, окажутся осуществимыми. Программирование микроконтроллеров для начинающих и для опытных людей выглядит по-разному: что для начинающих сложно, то для опытных — рутина. Главное — помнить, что всё, что не противоречит законам физики, является осуществимым и решаемым.

Программирование микроконтроллеров для начинающих с чего начать. Устройство и программирование микроконтроллеров AVR. Микроконтроллер и как его победить. Языки программирования микроконтроллеров

Теперь, когда мы уже ознакомлены с некоторыми возможностями и функциями микроконтроллеров, естественно, возникает логичный вопрос: что нужно для программирования микроконтроллеров? Какие необходимы программы и устройства, где их взять?

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

Структура и порядок написания программы

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

Следующим этапом после составления алгоритма является непосредственное написание кода программы. Программы для микроконтроллеров пишутся на языке

Си или Ассемблере . Только Ассемблер больше относится к набору инструкций, нежели к языку программирования и является языком низкого уровня.


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

Здесь мы не будем сравнивать преимущества и недостатки написания программ на Ассемблере и Си. Со временем, приобретя некоторый опыт в программировании МК, вы сами для себя сделаете полезные выводы.

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

Компиляция программы

Написанный нами код на Си еще вовсе не понятен микроконтроллеру, поскольку МК понимает команды только в двоичной (или шестнадцатеричной) системе, которая представляет собой набор нулей и единиц. Поэтому Си-шный код нужно преобразовать в нули и единицы. Для этого применяется специальная программа, называемая компилятор , а сам процесс преобразования кода называется компиляция .

Для прошивки МК применяется устройство, называемое программатор . В зависимости от типа программатора вход его подключается к COM или USB порту, а выход к определенным выводам микроконтроллера.


Существует широкий выбор программаторов и отладочных плат, однако нас вполне устроит самый простой программатор , который в Китае стоит не более 3 $.


После того, как микроконтроллер прошит, выполняется отладка и тестирование программы на реальном устройстве или, как еще говорят, на «железе».

Теперь давайте подытожим этапы программирования микроконтроллеров.


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

Следует заметить, что отладку и тестирование программы также выполняют до прошивки МК.

Необходимый набор программ

Существует множество полезных и удобных программ для программирования МК. Они бывают как платные, так и бесплатные. Среди них можно выделить три основных:

1) Atmel Studio

2) CodeVisionAVR

3) WinAVR

Все эти программы относятся к IDE I ntegrated D evelopment E nvironment – интегрированная среда разработки . В них можно писать код, компилировать и отлаживать его.

Следует обратить внимание на Code Vision AVR. Эта IDE позволяет упростить и ускорить написание кода. Однако программа платная.

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

Прошивка и отладка программы

Прошивать микроконтроллеры мы будем с помощью дополнительной программы .

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

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

Я категорически против такого подхода. Обычно это все заканчивается — либо ничем, либо забитые форумы с мольбами помочь. Даже если кому то помогают, то в 90% он больше никогда не всплывет на сайтах по электронике. В остальных 10% он так и продолжает заливать форумы мольбами, его будут сначала пинать, затем поливать грязью. Из этих 10% отсеивается еще 9%. Далее два варианта: либо таки до глупой головы доходит и все же происходит goto к началу, либо в особо запущенных вариантах, его удел копировать чужие конструкции, без единой мысли о том как это работает. Из последних зачастую рождаются ардуинщики.

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

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

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

2. Перед решением задачи, дробите ее до абсурда вплоть до «припаять резистор», это помогает, проверено. Мелкие задачи решать куда проще. Когда большая задача разбита на кучу мелких действий, то все что остается — это выполнить их. Могу привести еще один годный совет, хоть он вам и покажется бредовым — заведите блокнотик и пишите в него все что собираетесь сделать. Вы думаете, итак запомню, но нет. Допустим сегодня у меня хорошее настроение и думаю о том, как собрать плату. Запиши план действий: сходить купить резистор, подготовить провода, сделать крепление дисплея. Потом все забудешь, откроешь блокнотик и смотришь — ага сегодня настроение попилить и построгать, сделаю крепление. Или собираешь ты плату и уже осталось допаять последний компонент, но не тут то было резисторы кончились, вот записал бы перед тем как паять, то вспомнил.

3. Не пользуйтесь кодогенераторами, нестандартными фичами и прочими упрощалками, хотя бы на первых этапах. Могу привести свой личный пример. Во времена активного использования AVR я пользовался кодогеном CAVR. Меня он полностью устраивал, хотя все говорили, что он кака. Звоночки звенели постоянно, были проблемы с библиотеками, с синтаксисом, с портированием, но было тяжело от этого отказаться. Я не разбирался как это работает, просто знал где и как поставить галочки.

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

По поводу всех улучшалок и упрощалок, было одно очень хорошее сравнение, что они подобны инвалидным коляскам, которые едут по рельсам, можно ехать и наслаждаться, но вставать нельзя, куда везут — туда и приедешь.

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

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

Очень многие начинающие брезгуют изучением языка, поэтому если вы не будете как все, то сразу станете на две ступени выше остальных новичков. Так же не никакой разницы, где изучать язык. На мой взгляд, микроконтроллер для этого не очень подходит. Гораздо проще поставить какую нибудь Visual studio или Qt Creator и порешать задачки в командной строке.

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

5. Изучение ассемблера? Бояться его не нужно, равно как и боготворить. Не нужно думать, что умея написать программу на ассемблере, вы сразу станете гуру микроконтроллеров, почему то это частое заблуждение. В первую очередь это инструмент. Даже если вы не планируете использовать его, то все равно я бы настоятельно рекомендовал написать хотя бы пару программ. Это сильно упростит понимание работы микроконтроллера и внутреннего устройства программ.

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

7. Часто народ просит прислать даташит на русском. Даташит — это то, что должно восприниматься как истина, самая верная информация. Даже там не исключены ошибки. Если к этому добавятся ошибки переводчика, он ведь тоже человек, может даже не нарочно, просто опечататься. Либо у него свое видение, может что-то упустить, на его взгляд не важное, но возможно крайне важное для вас. Особенно смешной становится ситуация, когда нужно найти документацию на не сильно популярные компоненты.

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

Мною был проведен эксперимент: в наличии был студент, даташит и гугл переводчик. Эксперимент №1: студенту вручен даташит и дано задание самостоятельно найти нужные значения, результат — «да как я смогу», «да я не знаю английский», «я ничего не нашел/я не понял» типичные фразы, говорящие о том, что он даже не пытался. Эксперимент №2: тому же студенту, вручен все тот же даташит и тоже задание, с той разницей, что я сел рядом. Результат — через 5 минут он сам нашел все нужные значения, абсолютно без моего участия, без знания английского.

8. Изобретайте велосипед. Например, изучаете какую то новую штуку, допустим транзистор, дядька Хоровиц со страниц своей книги авторитетно заявляет, что транзистор усиливает, всегда говорите — НЕ ВЕРЮ. Берем в руки транзистор включаем его в схему и убеждаемся что это действительно так. Есть целый пласт проблем и тонкостей, которые не описываются в книгах. Прочувствовать их можно только, когда возьмешь в руки и попробуешь собрать. При этом получаем кучу попутных знаний, узнаем тонкости. Кроме того, любая теория без практики забудется намного быстрее.

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

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

9. А как бы я сделал это, если бы находился на месте разработчиков? Могу ли я сделать лучше? Каждый раз задавайте себе эти вопросы, это очень хорошо помогает продвигаться в обучении. Например, изучите интерфейсы 1wire, i2c, spi, uart, а потом подумайте чем они отличаются, можно ли было сделать лучше, это поможет осознать почему все именно так, а не иначе. Так же вы будете осознавать, когда и какой лучше применить.

10. Не ограничивайтесь в технологиях. Важно что этот совет имеет очень тонкую грань. Был этап в жизни, когда из каждой подворотни доносилось «надо бы знать ПЛИС», «а вот на ПЛИС то можно сделать». Формально у меня не было целей изучать ПЛИСины, но и пройти мимо было никак нельзя. Этому вопросу было выделено немного времени на ознакомление. Время не прошло зря, у меня был целый ряд вопросов, касаемых внутреннего устройства микроконтроллеров, именно после общения с плисинами я получил ответы на них. Подобных примеров много, все знания, которые я приобретал в том или ином виде, рано или поздно пригодились. У меня нет ни единого бесполезного примера.

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

11. Если спросить начинающего радиолюбителя, что ему больше нравится программирование или схемотехника, то с вероятностью 99% ответ будет программирование. При этом большую часть времени эти программисты тратят на изготовление плат ЛУТом/фоторезистом. Причины в общем то понятны, но довольно часто это переходит в некий маразм, который состоит в изготовлении плат ради изготовления плат.

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

12. Следующий совет, особенно болезненный, мне очень не хочется его обсуждать, но надо. Часто мне пишут, мол ххх руб за ууу дорого, где бы подешевле достать. Вроде бы обычный вопрос, но обычно я сразу напрягаюсь от него, так как зачастую он переходит в бесконечные жалобы на отсутствие денег. У меня всегда возникает вопрос: почему бы не оторвать пятую точку и не пойти работать? Хоть в тот же макдак, хоть на стройку, потерпеть месяц, зато потом можно приобрести парочку плат, которых хватит на ближайший год. Да я знаю, что маленьких городах и селах сложно найти работу, переезжайте в большой город. Работайте на удаленке, в общем нужно крутиться. Просто жаловаться нет смысла, выход из ситуации есть, кто ищет его тот находит.

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

Не говорю что дешевое = плохое, нет — все зависит от ситуации. Вернусь к примеру кримпера, было время когда обжимал чем попало, поэтому часто возникали проблемы. Особенно неприятно, когда заводишь плату и она не работает, после долгих поисков ошибки понимаешь что из-за плохо обжатого проводочка, обидно. С тех пор как появилась нормальная обжимка этих проблем нет. Да внутренняя жаба и квакала, и душилась от ее стоимости, но ни разу не пожалел об этом решении. Все что я хочу сказать, что поработав с нормальным инструментом, совершенно не хочется возвращаться к плохому, даже не хочется обсуждать это. Как показывает практика, лучше не экономить на инструментах, если сомневаетесь — возьмите у кого нибудь потестить, почитайте отзывы, обзоры.

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

15. Тонкий вопрос: профильное высшее образование, нужно ли оно? Мне известны не единичные случаи, когда люди работали абсолютно без образования и по опыту и знаниям они могли дать прикурить любому дипломированному специалисту. Собственно, у меня нет профильного образования, испытываю ли я от этого дискомфорт? В определенной степени да.

Еще в самом начале, когда микроконтроллеры были для меня хобби, я много помогал с курсовыми и дипломами разных вузов, просто чтобы оценить свой уровень. Могу сказать уверенно, что уровень в целом невысок вне зависимости от имени вуза. Учиться несколько лет, для того чтобы написать такой диплом, совершенно необязательно. Достигнуть этого можно самостоятельно за весьма короткий срок. И все же зачастую бывали моменты, когда студенты знали какой то предмет, который они проходили на 2-3 курсе, а я этого не знал. Хоть все эти знания и компенсировались самообразованием, но все же лучше было бы не тратить на это время.

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

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

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

Если подытожить то совет таков: если есть хоть малейшая возможность — нужно идти учиться, обязательно по профилю, если есть хоть какие то шансы, то лезть везде, а не отсиживать штаны на задней парте. Заводить знакомства, параллельно дома самому практиковаться, развиваться.

16. Поздно ли начинать программировать в 20, 30, 40, 50 лет? Практика других людей показывает, что возраст вообще не помеха. Многие почему то не учитывают то, что есть целый пласт работы, которую молодые в силу своих амбиций не хотят делать. Поэтому работодатели предпочитают брать тех, кто будет ее тащить. Это ваш шанс зацепиться, а дальше все зависит только от вас.

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

Всем привет. Как и обещал, с сегодняшнего дня начинаем изучать программирования AVR микроконтроллеров (на примере Atmega8). Тем же читателям, которым интересно программирование платы ардуино, не волнуйтесь, статьи по данному направлению будут продолжаться 🙂 .

Можно задать логичный вопрос, почему из ряда других микроконтроллеров (далее — МК) в качестве подопытного выбран именно МК AVR . На это есть несколько причин:

  • МК AVR повсеместно доступны;
  • У них достаточно невысокая цена;
  • В интернете можно найти много бесплатных программ, что помогут при работе с данными МК.
  • Кроме этого, существует великое множество написанных статей и форумов, на которых можно задать вопросы по данным МК AVR.

Как говорил ранее, в качестве подопытного будем использовать МК Atmega8 . Почему именно его?

Данный микроконтроллер может похвастаться наличием 3 портов ввода/вывода. Кроме этого он довольно дешевый.

Под портами, понимают шины данных, которые могут работают в двух противоположных направлениях (то бишь на вывод и на ввод).

У Atmega8 3 порта. Порт B состоит из 8 ножек-выводов (нумерация 0,1,2,3,4,5,6,7). Порт С состоит из 7 ножек-выводов (нумерация 0,1,2,3,4,5,6). Порт D состоит из 8 ножек-выводов (нумерация 0,1,2,3,4,5,6,7).

Запитывать микроконтроллер можно от 3,3 и 5 В. При напряжении питания 5 В максимальная частота тактирования составляет 16 МГц, а при напряжении питания 3,3 В – максимальная частота тактирования 8 МГц. Пока не будем заморачиваться относительно частот тактирования.

Питания подаётся на 7 ножку-вывод, а «земля» подводится к 8 ножке.

Скачивается бесплатно. Скачали, установили, запустили 🙂

Первое, с чего следует начать знакомство с Atmel Studio – это создание проекта.

Выбираем File -> new -> project .

Откроется окно выбора. Выбираем папку «Browse», в которой будем сохранять написанные проекты. Папку для проектов создал заранее.

Присваиваем имя проекту, в моём случае lesson_avr_1

Обратите внимание на галочку «create directory for solution». Если отметка стоит, то в той папке, которую мы выбрали для сохранения проектов, будет создана отдельная папка под текущий проект.

На этом всё – проект создан.

Займемся настройкой созданного нами проекта. Нажимаем Projest -> lesson_avr_1 properties или (alt+F7)

Переходим на вкладку Tool. Выбираем – симулятор. Совершенные нами действия сделают возможным отлаживать написанный код. Сохраняем изменения. Можно сохранить изменения в одном (текущем) файле или же во всех файлах проекта сразу. Закрываем настройки.

Программирование микроконтроллеров

Введение

Раздел 2. Среды программирования. Схемы подключения микроконтроллера

Раздел 3. Практическая реализация программы на микроконтроллере

Список использованных источников

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

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

Можно считать что микроконтроллер (МК) — это компьютер, разместившийся в одной микросхеме. Отсюда и его основные привлекательные качества: малые габариты; высокие производительность, надежность и способность быть адаптированным для выполнения самых различных задач.

Микроконтроллер помимо центрального процессора (ЦП) содержит память и многочисленные устройства ввода/вывода: аналого-цифровые преобразователи, последовательные и параллельные каналы передачи информации, таймеры реального времени, широтно-импульсные модуляторы (ШИМ), генераторы программируемых импульсов и т.д. Его основное назначение — использование в системах автоматического управления, встроенных в самые различные устройства: кредитные карточки, фотоаппараты, сотовые телефоны, музыкальные центры, телевизоры, видеомагнитофоны и видеокамеры, стиральные машины, микроволновые печи, системы охранной сигнализации, системы зажигания бензиновых двигателей, электроприводы локомотивов, ядерные реакторы и многое, многое другое. Встраиваемые системы управления стали настолько массовым явлением, что фактически сформировалась новая отрасль экономики, получившая название EmbeddedSystems (встраиваемые системы).

Достаточно широкое распространение имеют МК фирмы ATMEL, которые располагают большими функциональными возможностями.

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

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

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

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

К наиболее распространенным встроенным устройствам относятся устройства памяти и порты ввода/вывода (I/O), интерфейсы связи, таймеры, системные часы. Устройства памяти включают оперативную память (RAM), постоянные запоминающие устройства (ROM), перепрограммируемую ROM (EPROM), электрически перепрограммируемую ROM (EEPROM). Таймеры включают и часы реального времени, и таймеры прерываний. Средства I/O включают последовательные порты связи, параллельные порты (I/O линии), аналого-цифровые преобразователи (A/D), цифроаналоговые преобразователи (D/A), драйверы жидкокристаллического дисплея (LCD) или драйверы вакуумного флуоресцентного дисплея (VFD). Встроенные устройства обладают повышенной надежностью, поскольку они не требуют никаких внешних электрических цепей.

В отличие от микроконтроллера контроллером обычно называют плату, построенную на основе микроконтроллера, но достаточно часто при использовании понятия «микроконтроллер» применяют сокращенное название этого устройства, отбрасывая приставку «микро» для простоты. Также при упоминании микроконтроллеров можно встретить слова «чип» или «микрочип», «кристалл» (большинство микроконтроллеров изготавливают на едином кристалле кремния), сокращения МК или от английского microcontroller — MC.

микроконтроллер программа микросхема электронный

Микроконтроллеры можно встретить в огромном количестве современных промышленных и бытовых приборов: станках, автомобилях, телефонах, телевизорах, холодильниках, стиральных машинах. и даже кофеварках. Среди производителей микроконтроллеров можно назвать Intel, Motorola, Hitachi, Microchip, Atmel, Philips, Texas Instruments, Infineon Technologies (бывшая Siemens Semiconductor Group) и многих других. Для производства современных микросхем требуются сверхчистые помещения.

Основным классификационным признаком микроконтроллеров является разрядность данных, обрабатываемых арифметико-логическим устройством (АЛУ). По этому признаку они делятся на 4-, 8-, 16-, 32 — и 64-разрядные. Сегодня наибольшая доля мирового рынка микроконтроллеров принадлежит восьмиразрядным устройствам (около 50 % в стоимостном выражении). За ними следуют 16-разрядные и DSP-микроконтроллеры (DSP — Digital Signal Processor — цифровой сигнальный процессор), ориентированные на использование в системах обработки сигналов (каждая из групп занимает примерно по 20 % рынка). Внутри каждой группы микроконтроллеры делятся на CISC — и RISC-устройства. Наиболее многочисленной группой являются CISC-микроконтроллеры, но в последние годы среди новых чипов наметилась явная тенденция роста доли RISC-архитектуры.

Тактовая частота, или, более точно, скорость шины, определяет, сколько вычислений может быть выполнено за единицу времени. В основном производительность микроконтроллера и потребляемая им мощность увеличиваются с повышением тактовой частоты. Производительность микроконтроллера измеряют в MIPS (Million Instruсtions per Second — миллион инструкций в секунду).

Термин контроллер образовался от английского слова to control — управлять. Эти устройства могут основываться на различных принципах работы от механических или оптических устройств до электронных аналоговых или цифровых устройств. Механические устройства управления обладают низкой надежностью и высокой стоимостью по сравнению с электронными блоками управления, поэтому в дальнейшем мы такие устройства рассматривать не будем. Электронные аналоговые устройства требуют постоянной регулировки в процессе эксплуатации, что увеличивает стоимость их эксплуатации. Поэтому такие устройства к настоящему времени почти не используются. Наиболее распространенными на сегодняшний день схемами управления являются схемы, построенные на основе цифровых микросхем.

В зависимости от стоимости и габаритов устройства, которым требуется управлять, определяются и требования к контроллеру. Если объект управления занимает десятки метров по площади, как, например, автоматические телефонные станции, базовые станции сотовых систем связи или радиорелейные линии связи, то в качестве контроллеров можно использовать универсальные компьютеры. Управление при этом можно осуществлять через встроенные порты компьютера (LPT, COM, USB или Ethernet). В такие компьютеры при включении питания заносится управляющая программа, которая и превращает универсальный компьютер в контроллер.

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

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

Всё популярнее становится тема электронного конструирования. Предлагаем вашему вниманию статью, которая расскажет, микроконтроллеров для начинающих.

Какие микроконтроллеры существуют?

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

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

Программирование микроконтроллеров осуществляется, как правило, с помощью специальных приспособлений, которые называются программаторами. Программаторы могут быть или покупными или самодельными. Но при прошивке микроконтроллера с помощью самодельного программатора шанс того, что он превратится в «кирпич», довольно высокий. Есть ещё один вариант, который можно рассмотреть на примере платы «Ардуино». Плата работает на МК фирмы Atmel, и в ней осуществляется программирование микроконтроллеров AVR. В плате уже есть заранее прошитый бутлоадер и порт USB, которые позволяют безопасно прошить используемый микроконтроллер, не давая пользователю доступа к данным, что могут этот самый МК вывести из строя. Программирование микроконтроллеров для начинающих не так сложно, как может показаться, и при определённой сноровке и сообразительности избавит вас от необходимости ехать за новым механизмом.

Аппаратные различия разных микроконтроллеров

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

Языки программирования микроконтроллеров

В качестве языков программирования микроконтроллеров используется два: С/С++ и ассемблер. Каждый из них имеет свои преимущества и недостатки. Так, если говорить про ассемблер, то он даёт возможность сделать всё очень тонко и качественно, особенно важно это, когда не хватает оперативной памяти или оперативных мощностей (что, впрочем, довольно редко происходит). Но его изучение и написание программ на нём требует довольно много усилий, пунктуальности и времени. Поэтому для разработок на основе микроконтроллеров часто используют языки программирования С и С++. Они являются более понятными, по своему виду и структуре они близки человеческой речи, хотя и не представляют из себя её в полноценном понимании. Также они имеют очень хорошо проработанный функционал, который может запросто взаимодействовать с аппаратной частью, представляя, что это всего лишь элемент программы. При всех своих явных преимуществах на С и С++ создают более объемные программы, нежели на ассемблере.

Также в отдельных случаях, когда критичным является используемое оперативное пространство, можно соединить эти языки. Почти все среды разработки для С и С++ имеют возможность установки в программу ассемблерных вставок. Поэтому в случае возникновения проблемы на критическом участке можно написать ассемблерную вставку и интегрировать её в прошивку для микроконтроллера, а саму прошивку, точнее, большую её часть, написать на С или С++. Программирование микроконтроллеров на СИ является более лёгким, поэтому многие выбирают именно эти языки. Но те, кто не боится трудностей и хочет понять особенность работы аппаратуры, могут попробовать свои силы и с ассемблером.

Напутствие

Если появилось желание поэкспериментировать с прекрасно. Можно только посоветовать запастись терпением и настойчивостью, и тогда любые цели, поставленные перед изобретателем, окажутся осуществимыми. Программирование микроконтроллеров для начинающих и для опытных людей выглядит по-разному: что для начинающих сложно, то для опытных — рутина. Главное — помнить, что всё, что не противоречит законам физики, является осуществимым и решаемым.

Микроконтроллеры для начинающих. Часть 27. Команды управления | Разумный мир

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

В отличии от предыдущих статей я не буду приводить в конце список команд. Я буду рассматривать каждую команду в отдельности в ходе статьи.

Ничего не делать

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

Режимы работы микроконтроллера — выполнение программы и сон

Обычно, процессор микроконтроллера непрерывно выбирает и выполняет команды. Но иногда нужно подождать какого то события и просто ничего не делать. Этим событием может быть, например, окончание работы АЦП, нажатие кнопки пользователем, внешнее прерывание свидетельствующее о поступлении информации по каналу связи.

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

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

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

Для перевода микроконтроллера (хотя точнее, процессора) в режим сна используется команда SLEEP, которая есть у PIC и AVR.

В STM8 такая команда называется HALT — останов. Можно считать, что микроконтроллер действительно остановлен в режиме сна. Но для STM8 четко оговаривается, что останавливается и тактовый генератор и все периферийные модули. Энергопотребление при этом минимально.

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

В STM8 есть и очень похожая на WFE команда WFI (ожидание прерывания). Основным отличием от WFE является то, что при выполнении WFI прерывания всегда разрешены. А при выполнении WFE их обработка зависит от флага I регистра CC.

Сторожевой пес, он же таймер

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

В общем, и упрощенном, случае сторожевой таймер — WDT (Watch Dog Timer) — это счетчик с отдельным тактовым генератором. Это позволяет ему работать режиме сна, когда основной тактовый генератор остановлен. Когда этот счетчик переполняется производится сброс микроконтроллера. Или его пробуждение, если он был в спящем режиме.

Что бы не происходил сброс микроконтроллера нужно периодически сбрасывать счетчик сторожевого таймера. Основное назначение сторожевого таймера перезапуск микроконтроллера при сбоях программы.

Для сброса сторожевого таймера в PIC существует специальная команда CLRWDT, так как его счетчик не имеет адреса. В AVR сторожевой таймер сбрасывается командой WDR.

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

Прервемся для отладки

В AVR и STM8 есть команда BREAK, которая предназначена для использования в аппаратным отладчиком. При выполнении этой команды процессор останавливается, а продолжение нормальной работы возможно только отладчиком. Эта команда реализует установку точек останова (break point) отладчика.

Если отладчик не подключен, что BREAK выполняется как NOP.

Заключение

Подошла к концу не только статья, но и наше знакомство машинными командами микроконтроллеров. И даже знакомство в процессорами микроконтроллеров.

Это был трудный путь, который многим мог показаться и довольно скучным. Но эти знания важны для глубокого понимания работы микроконтроллер и, в конечном итоге, успешного их применения. Возможно, вы никогда не напишите ни одной машинной команды, ни одной программы на ассемблере (который мы не рассматривали, кстати). Но к этим знаниям бы будем возвращаться еще не раз, даже при программировании на С.

Начиная со следующей статьи мы будем «строить мост» между процессором, с его машинными командами и регистрами, и языком высокого уровня, в качестве которого будет выступать С.

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

До новых встреч!

main

main

Здравствуйте!

   Меня зовут Ceливaнoв Мaкcим. И если Вас интересует электроника, программирование и микроконтроллеры, и Вы хотите пополнить свой багаж знаний в этих областях, то, Вы попали на нужную страницу! 
   Вот уже почти 7 лет, я занимаюсь разработкой электронных устройств на микроконтроллерах. Сначала это было просто хобби, продолжение моего увлечения электроникой еще с детства. Разрабатывал и собирал всю электронику самостоятельно: от идеи до рабочей платы. Никогда не нравилось повторять чужие схемы из журналов или из интернета. Всегда доставляло удовольствие проектирование собственных устройств, с теми функциями, которые нужны мне, а не которые навязывает автор статьи. Все устройства собирал в основном для себя, иногда для знакомых и родственников. А c 2008 года я начал выполнять и индивидуальные заказы. И с тех пор это еще и дополнительный источник дохода.

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

  А сегодня я готов поделиться всем своим личным опытом создания и отладки устройств на микроконтроллерах. И я с гордостью хочу представить Вам мой авторский обучающий видеокурс по программированию микроконтроллеров!

Для кого этот курс?

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

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

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

Что Вы узнаете, изучив мой курс?

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

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

   Познакомитесь с популярными протоколами обмена: RS232, UART, I2C, SPI, 1-WIRE, Манчестерский код, кодирование без возврата к нулю.
   И обращаю внимание, что почти все протоколы будут реализованы программно, то есть в программе будет прописано, в какой момент времени какой уровень сигнала необходимо установить на выводах микроконтроллера, что бы передать либо логическую единицу, либо логический ноль.
   Благодаря программной реализации протоколов, у Вас появиться очень четкое понимание того, как организованы протоколы обмена данными на самом низком уровне и по какой логике происходит построение протоколов обмена!             Более того, Вам вполне по силам будет создать свой собственный протокол обмена!

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

   Для того, что бы лучше понимать работу микроконтроллера, я научу Вас программировать на самом низкоуровневом языке – на Assembler’е . Почему на ассемблере, а не на Си? Потому что Ассемблер, в отличие от более высокоуровнего языка Си,  дает намного более глубокое понимание работы микроконтроллера. Изучение языка ассемблера дает программисту одно очень важное преимущество — он глубже начинает понимать принцип работы программ, написанных на любых других языках.
   На этом языке мы вместе напишем множество программ, и разберем работу программных библиотек для работы с различными микросхемами и модулями, а так же изучим популярные протоколы обмена.
   И обращаю ваше внимание, что все программы и программные библиотеки, которые будут встречаться в этом курсе, написаны мной лично. Подобных библиотек Вы не найдете ни в интернете, ни в книгах!

Но самое главное, что Вы приобретете — это бесценный практический опыт! Потому что все что мы будем изучать, мы ТУТ ЖЕ ПОСЛЕ ИЗУЧЕНИЯ, БУДЕМ ПРОДЕЛЫВАТЬ НА ПРАКТИКЕ!

А какие преимущества у обучающего курса?

   Благодаря видео урокам, Вы будете отслеживать каждое мое действие, которое я буду сопровождать подробными комментариями, и Вам не составит труда все проделанное повторить уже самостоятельно. Эффективность обучения по видео урокам НА ПОРЯДОК превышает все другие формы обучения! Как будто, рядом с Вами сидит преподаватель и разъясняет, почему он делает все так, а не иначе.

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

   Материал в курсе, по большей части, ориентирован на практику программирования микроконтроллеров. То есть, почти вся теория в обязательном порядке будет закреплена на практике. А как известно, самый лучший способ понять теорию — это применить ее на практике.

   Такого объема информации на одном диске вы не найдете больше нигде. Здесь есть почти ВСЕ, что бы успешно не только начать осваивать программирование микроконтроллеров, но и значительно дальше других продвинуться в понимании того, как работает вся современная электроника.

Еще никогда изучение такой сложной темы, как микроконтроллеры не было таким простым!

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

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

Что значит уровня «средней квалификации»?

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

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

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

   Устройство, принимающее команды с обычного пульта дистанционного управления и осуществляющее управление различными устройствами (двигателями, освещением, нагревательными приборами и др.) по заранее заданным алгоритмам.

И еще раз повторюсь: Самое главное — это не то, что Вы сможете собрать подобную электронику на микроконтроллерах, а то, что Вы получите ОЧЕНЬ ГЛУБОКОЕ и ЧЁТКОЕ понимание того, как все это работает!

Благодаря глубокому пониманию работы мик​роконтроллеров и различных протоколов обмена данными Вы на порядок лучше будете разбираться в современной электронике, чем те, кто программирует на высокоуровневых языках типа Си, Pascal или вообще использует arduino.

А какие темы будут рассмотрены в курсе?

Всего на диске записано 109 видеоуроков общей продолжительностью 60 часов!

    Все темы я условно разбил на семь разделов. Вот краткое содержание этих разделов и скриншоты из некоторых видеоуроков:

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

   Краткое ознакомление с архитектурой и командами микроконтроллеров AVR. Разбор файла описаний микроконтроллера. Написание первой программы. Трансляция программы и получение файла прошивки.
   Разбор содержимого файла прошивки и коррекция работы программы при помощи редактирования отдельных байтов hex-файла.
   Подробный разбор среды программирования AVR Studio и среды отладки AVR Simulator. Обзор программы PROTEUS.

   Подробное изучение архитектуры и команд микроконтроллеров AVR. Регистр статуса. Стековая память. Понятие «срыва стека» и программные ошибки, приводящие к этому явлению. Прерывания микроконтроллера. Внешние и внутренние прерывания. Механизм сохранения адреса возврата в стековой памяти.
   Представление отрицательных двоичных чисел. Понятие дополнения до 2, дополнения до 1, дополнительного кода и обратного кода.
   Управление портами ввода-вывода. Считывание и запись байтов из памяти программ и памяти данных. Выражения языка ассемблера, макроопределения ассемблера и подключение библиотечных файлов.

   Байты конфигурационных ячеек. Выбор и настройка источника тактирования микроконтроллера. Конфигурирование FUSE-бит микроконтроллера на примере нескольких программаторов.
   Защита памяти программ и EEPROM памяти от считывания и перезаписи.
   Подключение внешних электронных компонентов к микроконтроллеру. Обзор наиболее интересных электронных компонентов и модулей. Элементы внешней «обвязки» микроконтроллера и их влияние на стабильность работы.
Основные правила трассировки печатных плат.

   Работа с EEPROM памятью микроконтроллера. Основные правила по предотвращению потери данных в EEPROM-памяти.
   Таймеры микроконтроллера. Работа таймера в режиме сброса по переполнению и сброса по совпадению. Прерывания таймера по совпадению и переполнению. Режим широтно-импульсной модуляции. Режим захвата.
   Понятие сторожевого таймера. Режимы работы сторожевого таймера. Модуль аналогового компаратора. Режимы работы аналогового компаратора и настройка прерываний.
   Понятие динамического режима индикации. Основные параметры динамической индикации и тонкости аппаратной реализации.

   Матричный способ опроса группы механических контактов.
   Модуль USART микроконтроллера. Конфигурирование модуля на режим асинхронной передачи данных. Связь микроконтроллера и компьютера. Обмен данными через USB.
   Виды энкодеров. Подключение инкрементного энкодера к микроконтроллеру.
   Жидкокристаллический символьный индикатор на базе контроллера HD44780. Подключение индикатора к микроконтроллеру. Программная библиотека для управления индикатором.
   Прием данных, передаваемых по инфракрасному каналу связи. Виды протоколов передачи. Универсальный алгоритм дешифрации принятых посылок.

   Шина SPI. Теория передачи данных по SPI в четырех режимах работы. Программная эмуляция шины. Flash-карты памяти формата SD и SDHC. Подключение карт памяти к микроконтроллеру. Чтение и запись данных в посекторном режиме.
   Шина I2C. Теория обмена данными по шине. Программная эмуляция протокола I2C. Микросхема часов реального времени. Считывание и запись байт данных. Вывод считанных данных на индикатор.
   Шина 1-WIRE. Теория обмена данными по шине 1-WIRE. Программная эмуляция работы шины. Микросхемы класса iButton. Считывание ID кода микросхем и вывод на индикатор. Микросхема температурного датчика. Команды транспортного и сетевого уровней. Запуск процесса преобразования температуры, считывание и преобразование байт данных. Программный подсчет контрольной суммы CRC-8. Понятие полиномного генератора. Программная реализация полиномного генератора.

Вот некоторые отзывы от тех, кто изучил мой курс


Некоторые из отзывов я специально просил оставить, а другие я взял из переписки через e-mail.


Если захотите оставить отзыв о курсе, то я его тоже опубликую.

«Не так давно решил расширить свои навыки и изучить МК. Довольно долго искал качественный самоучитель, но, скажу честно, осваивать с нуля эту сферу было не так легко, поскольку все самоучители написаны для людей, которым для полного понимания изложенного необходимо знать электронику на уровне не ниже «среднего» в интернете попал на страничку данного курса и почитав информацию решился (хотя в начале цена немного испугала). Если коротко, то ЭТО ПОТРЯСАЮЩЕ! Когда я просмотрел первые уроки, то был просто ошеломлен. Проделана гигантская работа! Информация по каждому разделу разжевывается так четко и подробно, что не понять просто нереально Кроме того, что подробнейшим образом рассмотрены все аспекты программирования МК автор не оставляет без внимания смежные темы, что я считаю одним из важнейших особенностей данного пособия Не пожалел ни копейки и до сих пор удивляюсь этому фантастическому по объему труду Советую всем кто интересуется данной тематикой — это безусловно лучшее пособие на данный момент! Максим оказывает качественную поддержку давая исчерпывающие ответы на все вопросы по электронной почте. Огромная благодарность
создателю!» 

Инженер-энергетик,

аспирант ГНУ «НИИ ВИЭСХ- Руцкой Андрей

“Уважаемый Максим! Никогда не думал что обучение может
приносить такое удовольствие. Я человек который в основном работал с периферией и цель моя была вовсе не программирование (в отличии от моего друга о котором я писал раньше). Но тот заряд, который я уже получил лишь пройдя 30% обучения превзошел мои ожидания и за это Вам огромное спасибо! Вы открыли мне глаза не то, что я раньше игнорировал и теперь понимаю что делал это зря. Хоть и сейчас придерживаюсь мнения что программирование это удел помешанных, очень умных и влюбленных в свое дело людей Вам частично удалось убедить меня что это очень интересно!
Замете — это только 30%. Вы доказали это не сложно, у Вас просто
талант учителя.»

Игорь, Украина.

Из переписки по е-mail

“Моя работа состоит в ремонте и обслуживании компьютеров и
периферийных устройств. Но меня давно — интересовали
микроконтроллеры, и несколько лет назад я реализовал несколько простых проектов. Когда после долгого перерыва понадобилось срочно решить простую задачу, все забуксовало. Я с крайним сожалением понял, что знания по программированию улетучились из моей головы. Потратить неизвестно сколько времени на повторное изучение или отказаться от проекта? Оба вариант никуда не годились! В первый раз у меня ушло несколько месяцев на изучение микроконтроллеров…

К счастью, мне посчастливилось приобрести курс Максима
«Программирование микроконтроллеров для начинающих». И я понял, что мне крупно повезло! Потратив около 30 часов на изучение части курса и повторение материала, я восполнил пробелы и восстановил четкую картину в своей голове. И примерно за столько же отладил программу и сделал макет проекта. Задача была решена быстро!

Надо прямо сказать, что программирование контроллеров — дело не из простых. Нужно не только подружить программу и «железо» микроконтроллера, но и добиться согласованной работы с периферией.
Это при том, что в книгах и даташитах могут быть ошибки и неточности!
Так что порог вхождения в эту область довольно высок.
К счастью, курс Максима сильно понижает этот порог и делает
программирование контроллеров гораздо более доступным. В курсе очень много информации из самых разных областей, связанных с микроконтроллерами. Кроме того, у Максима несомненный педагогический талант — объяснять сложные вещи просто. Это дорогого стоит! Есть немало «учителей», которые не столько объясняют, сколько гордятся своими знаниями. И, ко всему прочему, курсеще и недорогой.
Где еще такой найдешь? Аналогов ему действительно нет.

Спасибо за курс, Максим!“

Виктор Геронда, 

Россия.

“В процессе трудовой деятельности у нас возникла необходимость автоматизировать некоторые процессы. И если бы это был единичный случай, то никаких проблем бы не возникло. Можно было бы заказать схемку у профессионала и вопрос был бы решен. Но, к сожалению, одним случаем дело не ограничивалось, а постоянно заказывать все новые и новые разработки было не выгодно.
Мне когда-то приходилось сталкиваться с паянием схем, но дело было давно, и многое я уже подзабыл. Кроме того, мне никогда не приходилось сталкиваться с икроконтроллерами. Поэтому я полез в интернет и попытался разобраться во всем самостоятельно.
И чем больше я читал, тем страшнее становилось. Я начал понимать, что программирование микроконтроллеров — это тёмный лес. И тут мне повезло — я случайно наткнулся на этот курс.
Когда я прочитал аннотацию к курсу я понял, что это то, что мне
нужно, причём достаточно недорого. Весь курс стоил дешевле
стоимости одной разработки схемы контроллера, заказанной у
профессионалов! Курс был приобретен.
И оказалось, что объем учебных материалов и их качество превзошли все мои ожидания. Автор — профессионал высокого класса, очень подробно рассказывает о всех тонкостях работы с
микроконтроллерами. Благодаря ему я достаточно быстро разобрался в работе этих замечательных микросхем и за месяц сделал свой первый проект.
В курсе очень много дополнительных справочных материалов,
благодаря которым практически любой человек, у которого есть для этого желание, может стать профессиональным программистом микроконтроллеров и создателем на их основе различных схем автоматов для любого производства.

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

Максим, спасибо тебе большое

Александр Лаврентьев, 

Россия.

Сомневаетесь, нужен ли Вам этот курс?

   Без всякого стеснения могу сказать, что данный курс уникален, и аналогов ему нет. Запись всех видеоуроков у меня по времени заняло 1 год. В этот курс я вложил весь свой опыт и очень много сил, тщательно разжевывая каждую деталь, но при этом, стараясь не впадать в крайности и не зацикливаться на объяснении очевидных вещей.
   Отличительной особенностью этого видеокурса является очень глубокий подход к изучению работы микроконтроллеров на уровне их архитектуры и очень глубокое изучение протоколов обмена данными на уровне отдельных сигналов.
   Кроме того что значительная часть курса посвящена программной составляющей конструирования устройств на микроконтроллерах, так же немало времени уделяется и аппаратной составляющей: подбору электронных компонентов, составлению принципиальной схемы и правильной трассировке печатной платы.
   Конечно, при изучении такой сложной темы, как низкоуровневое программирование микроконтроллеров, не может не возникнуть вопросов.
   И поэтому каждый покупатель курса получает возможность обращаться ко мне со всеми возникающими вопросами по материалам видеокурса.
   Где Вы еще сможете получить бесплатные консультации по самому широкому кругу вопросов, связанных с программированием микроконтроллеров?

Для тех, кто «в теме»

   Мне иногда задают вопросы вроде такого: «Я знаком с микроконтроллерами AVR и умею писать программы на ассемблере для этих микроконтроллеров. Узнаю ли я что-нибудь нового из вашего курса?»
   Для того что бы уважаемый посетитель этой страницы смог самостоятельно ответить на этот вопрос, чуть ниже я привожу пример небольшой программы на ассемблере для микроконтроллеров AVR.
   Если Вы разбираетесь в том, как работает эта программа, то в плане понимания работы микроконтроллера, скорее всего, ничего нового не узнаете.

01  /*
02  Для МК tiny2313, mega8, mega88, mega48, mega16, mega32 и других,
03  где spl = 0x3D и ОЗУ начинается с 0x60
04  */
05
06  .cseg
07  .org  0x00
08            ldi R31,low(m0)
09            ldi R30,byte1((m0>>1) + 1)
10            sts 0x10,R30
11            eor R15,R15
12            lpm
13            sts 0x5F,R0
14            rjmp PC+(m0 — 8)                                ;Переход на строку 18
15  m1:   .dw 0x00,(main)+1,0xFF
16
17  .org  0x100
18  m0:    out 0x3D,R16
19            ldi R30,byte1((m1+1)*2)
20            ldi R31,byte2((-(m1+1)*2) — 1)
21            sbc R15,R31
22            sts 0x1F,R15
23            pop R16
24            pop R16
25            pop R16
26
27            lpm
28            sts 0x86,R0
29            adiw R30:R31,1
30            lpm
31            sts 0x85,R0
32            ret    ;Переход на строку 35
33
34  main: nop
35            inc R16
36  .db     «эПереход на main»                           ;Переход на строку 34
37  /*В последней строке в двойных кавычках прописать
38  русскими буквами «эПереход на main»*/

А можно ли посмотреть фрагменты из видеоуроков?

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

Нажимая кнопку OK, вы разрешаете использование файлов cookie

6 лучших плат микроконтроллеров для всех уровней

Микроконтроллеры в основном имеют похожую конструкцию. Они имеют ограниченную встроенную память, работают с низким энергопотреблением и оснащены набором контактов ввода-вывода общего назначения (GPIO), которые обычно программируются через USB-кабель.

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

Независимо от того, на каком уровне вы находитесь, один из этих микроконтроллеров должен хорошо работать для вас.

1. Лучший микроконтроллер для начинающих Arduino Uno R3

Если вас интересуют микроконтроллеры, вы почти наверняка слышали об Arduino. Они популяризировали хобби-оборудование с открытым исходным кодом с помощью своего набора плат для разработки и независимой среды разработки (IDE) для их кодирования.

Arduino Uno R3 — это стандартный Arduino, который можно найти в большинстве стартовых комплектов, и его проще всего использовать.Если бюджет является проблемой, обратите внимание, что Arduino — это оборудование с открытым исходным кодом. Таким образом, копии дизайна являются полностью законными. Если вы ищете клоны Arduino, вы найдете их по гораздо более низкой цене, чем официальные платы Arduino.

Погодите, это не похоже на плату микроконтроллера!

Что ж, у mBot Robot Kit в качестве мозга используется микроконтроллер. Благодаря своей конструкции он идеально подходит для обучения детей робототехнике без необходимости работать со сложным кодом.Код визуального блока, собранный в приложении Blocky, передается на плату через Bluetooth, чтобы повлиять на поведение робота.

Вы можете купить микроконтроллер отдельно от комплекта робота, но зачем вам это? Роботы самые лучшие!

Этот комплект охватывает все, от создания роботов до основных основ программирования. Нет ничего лучше для знакомства с микроконтроллерами молодой аудитории!

Плата STM32 F3 Discovery — это микроконтроллер на базе ARM Cortex-M4, предназначенный для экспериментов со всеми аспектами программирования оборудования.Плата оснащена встроенным датчиком движения, трехосным гироскопом, датчиком линейного ускорения и датчиком магнитного поля.

Также имеется восемь светодиодов, расположенных по кругу. Обратите внимание, что для этой платы требуется отдельный адаптер FTDI для связи с компьютерами через USB. Если вы не уверены, что это такое, то один из них был использован в нашем руководстве по сборке вашего собственного Arduino для связи с чипом ATMega328P.

Изучение программирования F3 Discovery — более глубокий процесс, чем у многих других микроконтроллеров.К счастью, существуют библиотеки, которые делают процесс более доступным, и многие учебники начинаются с основ. Помимо использования языка программирования C ++, доска является предметом книги «Открытие»; руководство по началу работы по внедрению языка программирования Rust.

4. Лучший микроконтроллер для носимых устройств — Adafruit Gemma M0

.

Благодаря микроконтроллерам, сочетающим расширенное управление светодиодами и другими компонентами с небольшими форм-факторами и низким энергопотреблением, неудивительно, что они используются в дизайне костюмов и косплея.Плата Gemma M0 от Adafruit представляет собой микроконтроллер размером с монету, идеально подходящий для подключения к светодиодам или другим компонентам с помощью токопроводящей нити. В качестве альтернативы вы можете использовать встроенный светодиод RGB DotStar.

Микросхема ATSAMD21E18 (попробуйте сказать, что торопитесь) является шагом вперед по сравнению с обычными бортовыми контроллерами для микроконтроллеров этого типа. Хотя вы можете использовать стандартный тип Arduino C ++, плата поставляется с предустановленной CircuitPython для программирования на Python и собственным USB-соединением, которого обычно не хватает на других платах этого типа.

5. Лучший микроконтроллер для PowerTeensy 3.2

Линия Teensy 3.2 считается лучшей по мощности в крошечном форм-факторе. 32-битный микропроцессор ARM Cortex работает кольцами почти на всех остальных платах. Помимо скорости, Teensy имеет интеграцию звука I2C и несколько высококачественных аналого-цифровых преобразователей (АЦП).

Каждый вывод на Teensy настраивается как прерывание, а платы работают с 64 КБ ОЗУ вместе с 256 КБ флэш-памяти.Все это совместимо с Arduino IDE с использованием библиотеки Teensyduino, и если 28 контактов Teensy 3.2 вам недостаточно, 48-контактные Teensy 3.5 и 3.6 доступны на веб-сайте PJRC.

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

Хорошим примером платы прямо на границе между потребителем и промышленностью является плата разработки Mbed LPC1768.Эта плата — скачок качества и инструментов, и цена это отражает. Mbed предоставляет онлайн-среду IDE для оборудования и библиотеки для выполнения задач с контактами GPIO и встроенными светодиодами.

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

Маленькие доски, большие планы

Этот список должен помочь вам принять обоснованное решение о том, какой микроконтроллер вам подходит.Однако он ни в коем случае не является исчерпывающим и пропускает замечательные платы, такие как Arduino, убивающая NodeMCU.

Какую бы плату вы ни выбрали, микроконтроллеры — идеальный способ сочетать электронику и кодирование. Любой из этих проектов для начинающих Arduino поможет вам разобраться в обоих!

Кредит изображения: Ha4ipiri / Depositphotos

Надеемся, вам понравятся предметы, которые мы рекомендуем и обсуждаем! MUO имеет филиал и спонсируемые партнерства, поэтому мы получаем долю дохода от некоторых ваших покупок.Этот не повлияет на цену, которую вы платите, и поможет нам предложить лучшие рекомендации по продуктам.

5 лучших оконных менеджеров для Linux

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

Читать далее

Об авторе Ян Бакли (Опубликовано 216 статей)

Ян Бакли — независимый журналист, музыкант, исполнитель и видеопродюсер, живущий в Берлине, Германия.Когда он не пишет или на сцене, он возится с электроникой или кодом своими руками в надежде стать безумным ученым.

Более От Яна Бакли
Подпишитесь на нашу рассылку новостей

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

Нажмите здесь, чтобы подписаться

Руководство по микроконтроллерам для начинающих

от Джона Уайлдера

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

Эта статья не пытается рассказать о каком-либо конкретном микроконтроллере / микропроцессоре, но представляет собой скорее учебник для объяснения общих концепций, применимых ко всем микроконтроллерам / микропроцессорам.

Во-первых, давайте … зададим себе пару вопросов. Первый вопрос —

Что такое микроконтроллер?
Микроконтроллер — это крошечный микрокомпьютер на микросхеме. Он имеет ЦП, ОЗУ (оперативное запоминающее устройство), регистры специальных функций, память ПЗУ программ, память ПЗУ данных, от одного до нескольких портов параллельного ввода / вывода (ввода / вывода) и может иметь множество встроенных периферийных устройств, включая но не ограничиваясь ими, аналого-цифровой преобразователь (АЦП), цифро-аналоговый преобразователь (ЦАП), последовательный UART, один или несколько таймеров, компараторы / источник опорного напряжения на кристалле, модуль захвата / сравнения / ШИМ (широтно-импульсная модуляция) , Главный синхронный последовательный порт для связи SPI (последовательный периферийный интерфейс) / I2C (меж интегральная схема), порт USB, порт Ethernet, встроенные генераторы, а также множество других периферийных устройств.

Что такое микропроцессор (подождите, вы имеете в виду, что разница действительно есть)?
Микропроцессор — это все, что есть микроконтроллер, но без программного ПЗУ на кристалле. Программный код находится вне кристалла в отдельной внешней микросхеме СППЗУ.

ПЗУ программ и ПЗУ данных
Встроенная память ПЗУ (постоянное запоминающее устройство) микроконтроллера подобна жесткому диску микроконтроллера. Имеет две перегородки. Один раздел зарезервирован для хранения программного кода, а другой раздел зарезервирован для постоянного хранения данных, которые используются микросхемой во время нормального выполнения программы.На данном микроконтроллере PIC, имеющем, скажем, 8 Кбайт программного пространства, программное пространство будет занимать адреса ПЗУ 0x0000 — 0x1FFF (или 0-8191 в десятичном виде). Пространство данных начнется с адреса ПЗУ программы 0x2100. Если бы пространство ПЗУ данных было 256 байтов, оно занимало бы адреса ПЗУ 0x2100–0x21FF (или 8448–8704 в десятичном виде).

ЦП
ЦП означает центральный процессор. По сути, это «мозг» микроконтроллера. Это то, что извлекает инструкции из памяти кода и выполняет полученные инструкции.

ОЗУ данных
ОЗУ данных (оперативное запоминающее устройство) — это пространство данных, которое используется для временного хранения постоянных и переменных значений, которые используются микроконтроллером во время нормального выполнения программы. Объем физического пространства ОЗУ на данном микроконтроллере варьируется от одного микроконтроллера к другому. ОЗУ данных на микроконтроллере организовано в несколько «регистров», каждый из которых имеет свой уникальный «адрес». Регистр RAM на 8-битном микроконтроллере может содержать всего 8 бит или один байт данных.Типичная спецификация пространства RAM может указывать, что оно составляет 256 x 8. Это означает, что в RAM всего 256 регистров, каждый из которых может содержать 8 бит.

Регистр — это просто место в памяти, в которое вы можете записывать или читать данные. Некоторые из нас называют регистры «местонахождением».

Регистры специальных функций
Регистры специальных функций (или просто SFR) в микроконтроллере аналогичны регистрам в ОЗУ данных. Вы можете записывать в них данные, а также читать из них данные.Они отличаются тем, что одни SFR напрямую управляют аппаратным обеспечением микроконтроллера, тогда как другие управляются аппаратным обеспечением микроконтроллера.

Каждый бит в SFR назначается функции. В SFR у вас есть биты управления и биты флагов. Управляющие биты подобны «переключателям», которые включают или выключают функцию в зависимости от того, записываете ли вы 1 или 0 в эту битовую позицию в SFR. Биты флагов похожи на «световые индикаторы», которые указывают, существует ли данное условие, в зависимости от того, равен ли бит флага 1 или 0.Биты управления напрямую управляют оборудованием. Биты флагов контролируются оборудованием. В любой данной программе мы обычно записываем в управляющие биты, пока читаем биты флагов (некоторые биты флагов должны быть очищены вручную путем записи в них, в зависимости от микроконтроллера… подробнее об этом позже).

Каждой аппаратной части микроконтроллера будет назначен как минимум 1 SFR. Некоторому оборудованию может быть назначено несколько SFR. Проконсультируйтесь с таблицей данных вашего микроконтроллера, чтобы узнать больше о его конкретной организации SFR.

Конфигурационные биты
Большинство микроконтроллеров имеют специальные биты, известные как «биты конфигурации». Эти биты настраивают специальные параметры микроконтроллера, включая, помимо прочего, —

.

* Тип осциллятора
* Сторожевой таймер Вкл. / Выкл.
* Таймер включения / выключения
* Вкл. / Выкл. Сброса при пониженном напряжении
* Вкл. / Выкл. Программирование низкого напряжения
* Вкл. / Выкл. Слежения за безопасностью часов
* Внутреннее / внешнее переключение Вкл / Выкл

В микроконтроллере PIC есть даже биты конфигурации для защиты программного кода и защиты кода данных.Эти биты предотвращают чтение программы или пространств данных внешним программным оборудованием, чтобы другие не могли украсть ваш код. На микросхеме Atmel AT89S (производной от 8051) это устанавливается так называемыми «битами блокировки».

Некоторые называют биты конфигурации «предохранительными битами». Это происходит из-за старых микропроцессоров, в которых были настоящие «плавкие предохранители» на микросхеме, которые перегорали, если были отключены определенные функции, управляемые битами плавких предохранителей. Эти предохранители были «программируемыми на один раз»… после того, как они перегорели, их невозможно было «разблокировать».Однако с появлением флэш-памяти, доступной на современных микроконтроллерах, на микросхеме больше нет буквальных «предохранителей». Но сам термин перенесен из-за того, что биты конфигурации по существу обеспечивают тот же контроль, что и биты предохранителя.

АЛУ (Арифметико-логический блок)
Этот аппаратный компонент по существу отвечает за все математические и логические операции, выполняемые микроконтроллером. На большинстве микроконтроллеров с ALU будет связано 3 флаговых бита —

.

* Нулевой бит — Этот бит флага устанавливается в 1 аппаратным обеспечением, когда математическая операция приводит к нулевому результату.Аппаратно сбрасывает его на 0 всякий раз, когда математическая операция дает ненулевой результат.

* Бит переноса / заимствования — этот бит флага работает как бит переноса для операций сложения, одновременно работая как флаг заимствования для операций вычитания. «Перенос» происходит, когда результат операции сложения приводит к значению, превышающему то, что регистр может хранить. 8-битный регистр может содержать максимальное значение 255 (FF в шестнадцатеричном виде или 11111111 в двоичном).

Если операция сложения приводит к результату больше 255, флаг переноса устанавливается в 1.Если операция сложения приводит к результату меньше 255, перенос не происходит, поэтому флаг переноса сбрасывается до 0.

Для операций вычитания вместо этого флаг переноса работает как флаг заимствования. Флаг заимствования работает наоборот, чем флаг переноса. Если операция вычитания приводит к отрицательному результату, флаг заимствования сбрасывается до 0. Если операция вычитания дает положительный результат, флаг заимствования устанавливается на 1.

* Бит переноса / заимствования цифр — Этот бит флага выполняет то же действие, что и флаг переноса / заимствования, но работает только для указания того, происходит ли перенос / заимствование только между битами 3 и 4.

Биты флага ALU можно прочитать в любое время, чтобы узнать, были ли результаты математических операций нулевыми, положительными / отрицательными, больше / меньше и т. Д. И т. Д.

Нулевой бит — это удобный флаговый бит, который позволяет нам сравнивать два значения, чтобы увидеть, равны ли они / не равны. Если мы возьмем два числа и вычтем их, результат будет равен нулю, если они равны, и ненулевым, если не равны. Итак, чтобы сравнить два значения, чтобы увидеть, равны ли они / не равны, мы вычитаем их, затем читаем / проверяем нулевой бит, чтобы узнать, равен ли бит 1 или 0.Если нулевой бит = 1, результат вычитания равен нулю, что означает, что два значения равны. Если нулевой бит = 0, результат вычитания не равен нулю, что означает, что два значения не равны.

Бит переноса / заимствования — это удобный флаг, который позволяет нам сравнивать два значения, чтобы увидеть, больше или меньше одно значение, чем другое значение. Пример… у нас есть два значения: VALUE1 и VALUE2. В коде выполняем эту операцию —

VALUE1 — VALUE2 = VALUE3

После выполнения операции вычитания мы считываем / проверяем высокое / низкое состояние бита переноса / заимствования.

Если VALUE2 больше VALUE1, результат вычитания будет отрицательным, что сбросит бит переноса / заимствования в 0. Если VALUE2 меньше VALUE1, результат вычитания будет положительным, что установит перенос / одолжить бит до 1.

Обратитесь к таблице данных, чтобы узнать, какой SFR содержит эти биты. На микроконтроллерах PIC биты флага ALU находятся в STATUS SFR. В MCS-51 они находятся в PSW SFR (слове состояния программы).

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

Когда микроконтроллер перезагружается, счетчик программы устанавливается на 0x0000. ЦП получит инструкцию, которая находится по адресу программного ПЗУ 0x0000. После получения этой инструкции счетчик программ автоматически увеличивается до значения 0x0001. Счетчик программ непрерывно автоматически увеличивается на значение 1, что заставляет ЦП последовательно обращаться к содержимому каждой ячейки регистра в программном ПЗУ.Это продолжается до тех пор, пока ЦП не выберет и не выполнит инструкцию, изменяющую значение счетчика программ. Такими инструкциями, которые делают это, являются инструкции перехода (ajmp и ljmp на MCS-51, goto на PIC), вызовы подпрограмм (acall и lcall на MCS-51, вызов на PIC) и любые инструкции, которые добавляют или вычитают значение к или от счетчик программ.

Стек
Стек на микроконтроллере в основном используется во время вызовов подпрограмм и переходов к обработчику прерывания.Это буфер «последним вошел — первым ушел», который используется для хранения адресов возврата. Во время вызова подпрограммы текущий адрес программного счетчика «помещается» в стек с добавлением к нему +1 смещения, затем программный счетчик модифицируется значением адреса, в котором находится вызываемая подпрограмма. Это заставляет счетчик программы переходить к коду подпрограммы для выполнения подпрограммы.

В конце подпрограммы будет инструкция «возврата» (возврат на MCS-51, возврат на PIC). После выполнения инструкции возврата стек «выталкивается», и последнее значение адреса ПЗУ, которое было помещено в стек, выталкивается из стека и возвращается обратно в счетчик программ.Это заставляет счетчик программ вернуться к инструкции, которая находится после инструкции, которая вызвала подпрограмму (отсюда необходимость смещения +1 в то время, когда адрес ПК помещается в стек), и выполнение программы продолжается с того места, где оно было остановлено. перед вызовом подпрограммы.

Некоторые микроконтроллеры имеют «программный стек» (MCS-51). Программный стек использует часть внутреннего ОЗУ микроконтроллера в качестве пространства стека. Другие микроконтроллеры имеют аппаратный стек (PIC).В аппаратном стеке стек представляет собой собственное выделенное пространство, отдельное от всех остальных пространств памяти на кристалле.

На некоторых микроконтроллерах стек доступен для записи. Это позволяет нам использовать стек для временного резервного копирования критических регистров во время вызовов подпрограмм и выполнения обработчика прерываний. Перед выполнением подпрограммы или обработчика прерывания содержимое регистров для резервного копирования помещается в стек. Затем, непосредственно перед возвратом из подпрограммы или обработчика прерывания, содержимое, которое мы поместили в стек в начале подпрограммы, извлекается из стека по одному, а затем восстанавливается в исходные местоположения в обратном порядке по сравнению с тем, как они были помещены в стек (помните… Последним пришел — первым ушел).

Хорошим примером этого может быть резервное копирование аккумулятора и регистров PSW на MCS-51 во время выполнения процедуры обработчика прерывания —

Код (текст):

push ACC; резервное копирование аккумулятора в стек
push PSW; резервное копирование слова состояния программы в стек

; здесь выполнить код обработчика прерывания

pop PSW; восстановить слово состояния программы
pop ACC; восстановить аккумулятор
reti; вернуться к основному коду из прерывания

Как видите, мы сначала помещаем содержимое аккумулятора в стек, а затем помещаем содержимое PSW в стек после него.Затем выполняется код обработчика прерывания.

После выполнения кода обработчика прерывания PSW сначала извлекается из стека, затем аккумулятор извлекается из стека после него… в порядке, обратном тому, как они были вытолкнуты.

Типичный SFR
Типичный SFR настроен, как показано ниже.

Код (текст):

| ПОРТ 1 SFR |
———————————————————
| 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
| P1.7 | P1.6 | P1.5 | P1.4 | P1.3 | P1.2 | P1.1 | P1.0 |
| 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |

Это SFR защелки порта на микроконтроллере MCS-51 для параллельного порта 1. Каждый порт MCS-51 является 8-битным параллельным портом, и каждый бит в SFR порта назначен каждому контакту порта. P1.0 будет контактом 0 порта 1, P1.1 будет контактом 1 порта 1, P1.2 будет контактом 2 порта 1 и т. Д. И т. Д.

Как показано, у нас есть все нули, записанные в каждый бит в SFR защелки порта 1.Это переведет все контакты порта 1 в состояние низкого уровня (0 вольт). Если бы мы записали 1 в любой из битов SFR порта, это установит контакт, связанный с позицией бита, в которую мы записываем «1», в высокое состояние (+ 5V).

Пример, давайте запишем значение 01010101 в SFR порта 1 —

Код (текст):

| ПОРТ 1 SFR |
———————————————————
| 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
| P1.7 | P1.6 | P1.5 | P1.4 | P1.3 | P1.2 | P1.1 | P1.0 |
| 0 | 1 | 0 | 1 | 0 | 1 | 0 | 1 |

Как показано, это переведет контакты P1.0, P1.2, P1.4 и P1.6 в состояние высокого уровня, а контакты P1.1, P1.3, P1.5 и P1.7 — в состояние низкого уровня.

Несколько слов о технических характеристиках … и почему они так важны
Не все микроконтроллеры созданы равными. Каждый из них разработан с использованием определенного аппаратного обеспечения на кристалле. Все микроконтроллеры разных производителей имеют разную архитектуру.Вы обнаружите, что микроконтроллеры PIC сильно отличаются от микроконтроллеров MCS-51, так же как MCS-51 сильно отличается от, скажем, Motorola 65xx в отношении того, как реализованы SFR, как организована RAM данных, набор команд, конфигурационное слово, как параллельные порты работают и т.д. и т.п.

ЕДИНСТВЕННЫЙ способ точно узнать, как работать с вашим микроконтроллером и его оборудованием, — это ознакомиться с его таблицей данных. В таблице данных объясняется каждый SFR, каждая часть встроенного оборудования, абсолютные максимальные электрические характеристики, организация памяти программ / данных, как подключены параллельные порты и как они работают, сводка набора инструкций (для тех из вас, кто кодирует на ассемблере). язык) и т. д.Практически все, что вам, как программисту, нужно знать о своем микроконтроллере, находится в его техническом описании.

Большинство из них находятся в свободном доступе в Интернете с помощью простого поиска в Google (я еще не нашел ни одного, которого нет). Заявление о том, что вы не смогли найти таблицу, не является приемлемым оправданием, когда дело доходит до этого. ЕДИНСТВЕННАЯ причина, по которой кто-либо отказывается просматривать таблицу, — это либо то, что он слишком ленив, либо он не понимает их, но не хочет, чтобы другие знали, что они этого не делают.Я скажу прямо сейчас … на большинство вопросов форума, касающихся микроконтроллеров, можно было бы ответить самостоятельно, если бы человек нашел время, чтобы найти ответ в таблице данных.

Таблицы данных являются обязательными. Без них вы не сможете написать собственный код.

Об авторе
Джон Уайлдер — внештатный инженер-электронщик и энтузиаст электроники более 20 лет. Он четыре года проработал в ВМС США в качестве специалиста по авиационной электронике.Джон также играет на гитаре с 13 лет и начал объединять электронику и музыку с 15 лет. Джон построил свой первый ламповый усилитель в 17 лет. «Музыкальная электроника», — говорит Джон, — это его любовь и страсть.

Джон также является частым участником и страстным членом инженерного сообщества Electro-Tech-Online. В Electro-Tech-Online вы можете задавать вопросы и получать ответы от своих коллег-инженеров по всему, от микроконтроллеров, возобновляемых источников энергии и автомобильной электроники до моделирования схем и проектирования.Кроме того, существуют форумы для микроконтроллеров 8051/8951, AVR, ARM, Arduino, Oshonsoft Project, а также репозиторий кода, где участники обмениваются фрагментами кода.

Следуйте за Джоном в Twitter на @PICmcuguy.

Что такое микроконтроллер для начинающих и почему?

Во-первых, похоже, что у вас есть два важных навыка программирования для работы со встроенными системами, даже если вы не являетесь самопровозглашенным программистом встраиваемых систем. C и сборка жизненно важны, и вы их получили.Значит, вы уже преодолели одно препятствие.

Резонансы

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

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

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

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

Итак, вы спросите: * «Что такое микроконтроллер для новичков?» То, что вы написали о курятниках, помогает немного сузить мои мысли.Но не так уж и много. Мы говорим о стационарных конструкциях? Или это мобильные тракторы-курятины? Более одной структуры? (Вам нужно несколько «каналов» информации?) Собираетесь ли вы производить инкубацию яиц и вам нужно следить за температурой ванны? Я собираю информацию о статусе дверей. Но относятся ли какие-либо из этих деталей к тому, когда вам нужно быстро бежать, чтобы разобраться в ситуации? Или все это просто «сбор данных», которые будут обработаны в удобное время?

Кто-нибудь, кому вы можете позвонить

Вышеупомянутое — лишь первые резонансы, которые звучат в моем мозгу от вашего удара молотком идеи.Но учитывая, что для вас лучше? Я думаю, вам лучше обеспечить безопасность того, что другие, как вы знаете, используют и где вы можете задать им вопросы. Обычно оказывается, что самый простой в использовании микроконтроллер — это тот, где у вас есть друг, которому вы можете позвонить, и о котором вы затем можете задавать вопросы и получать нужные ответы на месте. Я не думаю, что какой-либо другой микро мог бы с этим конкурировать. Даже относительно сложные микропрограммы сделать легко, если у вас есть кто-то, кому вы можете позвонить и который поможет вам с этим справиться.

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

Сводка

Не хватает этого? Что ж, тогда это зависит от того, чувствуете ли вы, что будете писать все «стеки» программного обеспечения, или ожидаете ли вы использовать много существующего библиотечного кода. Это восходит к тому, что я писал ранее, о том, как определить свои собственные наборы навыков и сопоставить их с задачами проекта, которые необходимо решить.

Но есть еще несколько вещей, которые следует учитывать.

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

Какие расстояния есть? Есть ли у вас подземные трубопроводы или доступ к ним? (Мои трубы спроектированы так, чтобы включать «зачистку» на каждом таком-то расстоянии, и я сделал их достаточно большими. Я также поддерживаю внутри шпагат, который я могу использовать для протягивания новых проводов.) должен быть беспроводной? Если да, то исследовали ли вы, какие диапазоны и модули разрешены на указанных расстояниях? Можете ли вы использовать эти технологии с простым кодом? Или они требуют настолько сложных «стеков протоколов», что вы НЕ хотите писать их сами? И опять же, поддерживают ли они несколько каналов связи, нужны ли они вам?

Короче не знаю.Это один из тех «вопросов мнения» (или «слишком расплывчатых»), которые часто закрываются на этом сайте. Так что я остановлюсь здесь. Кроме того, это все время, которое у меня есть. С наилучшими пожеланиями!

Arduino VS Автономный микроконтроллер для начинающих

В интересах производителей микросхем предоставлять библиотеки для своих продуктов, библиотеки, которые скрывают детали (и большую часть опыта). Делая это так же, как писать программу для Windows, Linux или Mac, вы просто выполняете вызовы API. Если вам нужен именно такой опыт, то один ничем не хуже другого, конечно, Arduino очень популярен, но есть и mbed.

AVR — не первый микроконтроллер, который я бы выбрал, если вы хотите погрузиться глубже, я бы порекомендовал msp430 или что-то на основе Cortex-M, документация TI — одна из лучших (Microchip на нижнем конце), ST и NXP — вполне нормально. У Ti есть стартовые платы для msp430, cortex-ms и их dsps, в парке мячей или намного меньше, чем у Arduino, но очень способных в некоторых случаях, более способных, чем у Arduino. ST предлагает платы серии Nucleo, которые находятся между Arduino и mbed, возможно, поддерживаются в обоих мирах.Очень легко запрограммировать, просто перетащите свой двоичный файл в виртуальный USB-накопитель, предоставленный отладчиком на стороне платы, и по очень конкурентоспособной цене, вы можете получить хороший за 10 долларов.

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

Если вас интересуют только вызовы api и вы не хотите знать, что происходит, возьмите arduino и mbed и используйте эти среды. Даже если вы хотите копнуть глубже, вы все равно должны испытать несколько высокоуровневых сред, включая то, что предлагают поставщики микросхем, вы можете / должны иметь возможность использовать их в этой форме на профессиональном уровне.Точно так же, поскольку у этих библиотек есть проблемы в различных формах, хорошо также запачкать руки и понять, как загружаются чипы и как их настраивать на уровне регистров, а также некоторые основы набора инструкций, всем им есть что предложить, msp430, cortex-m, avr, pic, чем больше, тем лучше, есть имитаторы набора команд, которые вы можете попробовать бесплатно, чтобы почувствовать чип, поскольку существует высокая частота отказов (вы не можете видеть, что происходит, когда ваша программа зависает , труднее отлаживать, может и будет кирпичная фишка, бывает даже с многолетним опытом, но стоят они дешево).

Скажем, с пусковой панелью msp430 и одной из ядерных плат с перемычками на интерфейсе SWD, вы можете затем собрать свои собственные платы или купить действительно недорогие на ebay из Азии, а не то, что вам нужны эти отладочные заголовки и usb за 2 доллара. uart поможет вам получить доступ к загрузчикам некоторых продуктов этих поставщиков. Вы также можете получить образцы частей у поставщиков микросхем (что означает, что несколько частей бесплатно) и некоторые недорогие tssop или другие коммутационные платы, снова подключив, скажем, верхнюю часть ядра, панель запуска или другую плату для разработчиков.

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

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

Как правильно выбрать микроконтроллер для вашего конкретного аппаратного продукта? Эта статья покажет вам все факторы, которые нужно учитывать при выборе самого лучшего микроконтроллера.

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

Поддержка выбранной платформы также очень важна — не только со стороны производителя, но и со стороны сообщества в целом. Также помогает, если у выбранного микроконтроллера есть легкодоступная плата для разработки.

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

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

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

Им нужен источник тактовой частоты, который обычно обеспечивается либо внутренним генератором резистора-конденсатора (RC), либо использованием внешнего кварцевого резонатора для более критичных по времени приложений.У них есть несколько цифровых портов ввода-вывода и как минимум один таймер / счетчик.

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

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

Микроконтроллеры для встраиваемых систем в основном делятся на три категории в зависимости от ширины их шин данных: 8-битные, 16-битные и 32-битные. Есть и другие, но самые популярные.

В общем, 8-разрядные микроконтроллеры предназначены для приложений нижнего уровня, 32-разрядные — для приложений более высокого уровня, а 16-разрядные — для приложений среднего уровня.

Безусловно, большинство продуктов, над которыми я работаю, как правило, включают 32-битные микроконтроллеры, но 8- или 16-битные микроконтроллеры могут быть хорошим выбором для недорогих продуктов.

8-битные микроконтроллеры

Если приложение не предъявляет очень высоких требований к вычислительной мощности и имеет относительно небольшой размер, то имеет смысл рассмотреть 8-битный микроконтроллер.

Для справки: большинство Arduinos основано на 8-битных микроконтроллерах. Итак, если вы создали свой ранний прототип с использованием Arduino, вы можете использовать 8-битный микроконтроллер в своем конечном продукте.

Не оставляйте без внимания цену, хотя и направляйте ваше решение, и во многих случаях 32-битные микроконтроллеры могут быть дешевле 8-битных чипов.

Например, Atmega328p — это 8-битный микроконтроллер, использующий Arduino Uno. При объемах порядка 10 тыс. Штук он стоит немногим более 1 доллара. Он работает на частоте 20 МГц и включает 32 КБ флэш-памяти и 2 КБ ОЗУ.

С другой стороны, вы можете приобрести 32-битные микроконтроллеры, работающие на частоте 48 МГц, с аналогичной памятью всего за 60 центов. Вероятно, это связано с тем, что популярность 32-разрядных микроконтроллеров снижает их стоимость.

При этом доступны даже более дешевые 8-битные микроконтроллеры, которые стоят менее 25 центов при аналогичных объемах.

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

8-битные микроконтроллеры бывают всех размеров от небольших 6-контактных устройств до микросхем с 64-контактными контактами. Они имеют размеры флэш-памяти от 512 байт до 256 КБ, размеры SRAM от 32 до 8 КБ или более и EEPROM от 0 до 4 КБ или более. Минимальная система может быть такой же простой, как одна микросхема с байпасным конденсатором на шине питания.

Три самых популярных линейки 8-битных микроконтроллеров — это серия 8051, серия PIC от Microchip и серия AVR от Atmel, теперь часть Microchip.

Серия 8051

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

Хотя они доступны как отдельные устройства, 8051 в настоящее время в основном используются в качестве ядер IP (интеллектуальной собственности), которые встроены в микросхемы специализированных микросхем для конкретных приложений, таких как некоторые беспроводные радиоприемопередатчики.

Очень редко 8051 может быть правильным выбором в качестве основного микроконтроллера для вашего продукта.

Серия PIC

Микроконтроллеры

PIC довольно популярны и имеют широкую поддержку как Microchip, так и сторонних производителей.

Microchip предоставляет свою интегрированную среду разработки (IDE) MPLAB ® X, которая включает в себя компилятор C бесплатно. Также бесплатно в качестве подключаемого модуля IDE доступен конфигуратор кода MPLAB, который генерирует C-код для встроенных периферийных устройств.

Затем его можно интегрировать в код приложения. Существуют модели PIC с комбинациями интерфейсов USART, SPI, I 2 C, ADC, USB, LIN, CAN и другими. Microchip также предлагает несколько инструментов разработки, включая MPLAB PICkit 4, ICD 4 и Real ICE.

Также доступны более качественные коммерческие компиляторы с лучшей оптимизацией кода. Вот краткое справочное руководство по микроконтроллерам PIC в формате PDF.

Серия AVR

AVR — еще одна серия очень популярных 8-битных микроконтроллеров.Хотя они находятся в том же пространстве, что и описанные выше PIC, и имеют сопоставимые характеристики, у них есть одна большая претензия на славу: Arduino.

Рисунок 1. Большинство плат Arduino основаны на 8-битных микроконтроллерах AVR

Все оригинальные Arduinos, такие как Uno, Leonardo и Mega, используют микроконтроллеры AVR. Из-за очень широкого диапазона доступных библиотек для Arduinos, AVR заслуживают серьезного рассмотрения для 8-битных приложений, даже если только для подтверждения концептуальных прототипов.

Поскольку библиотеки Arduino написаны на C ++, их можно легко включить в любое приложение, написанное на C / C ++.

Инструменты разработки программного обеспечения включают AVR studio или, если используется Arduino, обычно используются Arduino IDE и Platform IO. Компилятор, используемый в этих IDE, — это AVR GCC, бесплатный, очень хорошо поддерживаемый и поддерживаемый компилятор C / C ++.

Инструменты разработки оборудования

включают Atmel ICE и PICkit 4. Кроме того, по-прежнему широко доступны зрелые инструменты, такие как STK600 и AVR Dragon.Вот ссылка на краткое справочное руководство в формате PDF для микроконтроллеров AVR.

16-битные микроконтроллеры

16-разрядные микроконтроллеры

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

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

Легко найти устройства, которые имеют как АЦП, так и ЦАП, или устройства с емкостными сенсорными датчиками, драйверами сегментированных ЖК-дисплеев и Ethernet.

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

Хотя 16-битные микроконтроллеры можно найти у различных производителей, таких как Microchip (их dsPIC33 — популярный выбор), NXP, Infineon или Cypress, серия TI MSP430 будет представлена ​​здесь как типичный пример этого сегмента микроконтроллеров.

TI MSP430 серии

MSP430 — это серия 16-разрядных микроконтроллеров с очень низким энергопотреблением, которые доступны во многих вариантах. Они варьируются от моделей общего назначения до очень специализированных.

Одна интересная особенность специализированных вариантов этих микроконтроллеров заключается в том, что они фактически разветвляются на две крайности: очень специализированные, очень недорогие модели и высокопроизводительные модели с интерфейсами аналоговых датчиков и цифровой обработкой сигналов (DSP).

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

Например, нужен интерфейс SPI-UART, расширитель ввода-вывода или мост UART-UART? Все это есть, и все это менее чем за 0,3 доллара за этот чип.

Наконец, конечно, MSP430 поддерживается рядом недорогих инструментов и наборов для разработки.

В таблице 1 ниже показаны дополнительные функции, доступные в некоторых основных версиях.

MSP430FR2x MSP430FR4x MSP430FR5x MSP430FR6x
Программная память До 32 КБ до 16 КБ До 256 КБ До 128 КБ
Количество контактов от 16 до 64 в различных упаковках от 48 до 64 в различных упаковках от 24 до 100 в различных упаковках от 56 до 100 в различных упаковках
Периферийные устройства обычно не доступны в 8-битных контроллерах ЦАП, PGA, трансимпедансные и операционные усилители Логика ИК-модуляции DMA, AES DMA, AES
Драйверы сегментов ЖК-дисплея До 256 до 320

Таблица 1 — Обзор основных функций MSP430

32-битные микроконтроллеры

32-разрядные микроконтроллеры

— это мощные устройства с функциями микропроцессора.Некоторые из расширенных функций включают конвейерную обработку инструкций, прогнозирование ветвлений, вложенные векторные прерывания (NVI), блоки с плавающей запятой (FPU), защиту памяти и встроенные отладчики.

ПРИМЕЧАНИЕ: Обязательно загрузите бесплатное руководство в формате PDF 15 шагов для разработки нового электронного оборудования .

Конвейерная обработка инструкций означает, что ядро ​​процессора предварительно выбирает последующие инструкции, а предсказание ветвления предварительно выбирает следующие инструкции для обоих результатов условия if-else, тем самым ускоряя выполнение кода.

NVI обеспечивает приоритеты прерываний, при которых одно прерывание может вытеснить прерывание с более низким приоритетом.

FPU

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

Защита памяти гарантирует, что код приложения не сможет случайно перезаписать критические разделы, выделенные, например, для операционной системы.

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

Кроме того, их чистая вычислительная мощность означает, что они могут легко поддерживать операционные системы реального времени (RTOS), которые, в свою очередь, обеспечивают возможности многозадачности.

Несмотря на то, что на рынке представлено множество 32-битных микроконтроллеров, в этой заметке основное внимание будет уделено устройствам на базе ARM Cortex M, с особым упоминанием ESP32 от Espressif.

ARM Holdings фактически разрабатывает только IP-адреса процессорных ядер, которые они затем лицензируют различным поставщикам полупроводников, которые включают их вместе с некоторыми периферийными устройствами в свои собственные кремниевые микросхемы.Многие производители микросхем предлагают микроконтроллеры на базе архитектуры Cortex-M.

Два известных производителя чипов на базе ARM — это Atmel со своей линейкой устройств SAM и STMicroelectronics со своей линейкой продуктов STM32.

Устройства SAM заслуживают упоминания здесь из-за их использования в некоторых Arduino-совместимых платах. Однако в целом устройства STM32 предлагают больше вариантов, и им следует уделять первоочередное внимание при проектировании встроенного 32-разрядного микроконтроллера.

Микроконтроллеры STM32

Ядра

ARM Cortex M бывают разных версий.Самыми популярными из них являются M0 / M0 +, M1, M3, M4 и M7, каждый из которых предлагает все более высокую производительность. Микроконтроллеры STM32 содержат ядра M0 / M0 +, M3, M4 или M7.

На рис. 1 показано семейство микроконтроллеров на базе ARM Cortex M STM32 и их предполагаемые сегменты приложений.


Рисунок 2 — Семейство микроконтроллеров STM32

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

Например, на рисунке 2 показаны основные варианты, доступные в категории «мейнстрим», и их относительная кривая производительности. Обратите внимание, что внутри каждого семейства существует множество вариантов с различными комбинациями периферийных устройств и объемом памяти.

Фактически, в настоящее время существует более трехсот микроконтроллеров STM32, доступных в этой категории.


Рисунок 3 — Семейство микроконтроллеров в категории STM32 Mainstream

Поддержка оборудования STM32: Семейство STM32 поддерживается широким спектром аппаратных средств, предоставляемых как ST Microelectronics, так и сторонними производителями.

Недорогой внутрисхемный отладчик / программатор — STLink V2. Он сделан ST и доступен в таких местах, как Digi-Key; однако также доступны очень недорогие клоны.

ST Microelectronics также предлагает большой выбор плат для разработки семейств Nucleo и Discovery.

Оба содержат интерфейс отладки STLink. Все, что требуется, — это компьютер с USB-портом, на котором запущено соответствующее программное обеспечение для оценки выбранного микроконтроллера.

Платы

Discovery включают в себя дополнительные внешние периферийные устройства, такие как датчики MEM и емкостные сенсорные панели.Однако у Nucleos есть заголовки, совместимые с щитами Arduino.

Рисунок 4 — Макетная плата ST Discovery для микроконтроллера STM32F407

Перед тем, как покинуть этот раздел, стоит упомянуть еще об одной очень недорогой плате для разработки. Эта плата, обычно известная как Blue Pill, оснащена чипом на базе STM32F103 Cortex M3 и стоит менее 2 долларов США из некоторых источников.

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

Хотя процесс обеспечения совместимости с Arduino немного сложен, есть несколько мест, где продаются платы, совместимые с Arduino. Просто выполните поиск по запросу «STM32duino».

Чтобы узнать, как разработать собственную плату микроконтроллера на базе STM32, обязательно просмотрите это руководство и ознакомьтесь с этим углубленным платным курсом.

Поддержка программного обеспечения STM32: STMicroelectronics предоставляет версию пакета разработки ARM Mbed для всей линейки продуктов STM32. Сюда входят IDE, компилятор и обширный набор библиотек.

Для разработчиков, которые предпочитают использовать другие компиляторы, ST предоставляет свой STMCube. Это программа-генератор кода, которая производит коды инициализации для периферийных устройств STM32.

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

ESP32

ESP32 — это микроконтроллер от Espressif Systems. Как показано на рисунке 3, он имеет все функции типичного 32-разрядного микроконтроллера.

Рисунок 5 — Модуль Espressif ESP32

Однако, что отличает этот конкретный микроконтроллер от других, так это наличие в чипе оборудования Wi-Fi и Bluetooth.

Это включает не только стеки протоколов, но и сами радиоприемопередатчики. ESP32 также доступен в виде небольшого предварительно сертифицированного модуля со встроенной антенной.

Для приложений, требующих подключения по Wi-Fi или Bluetooth, ESP32 заслуживает серьезного внимания.Цена ESP32 (как дискретного чипа, так и модуля) очень доступная, особенно с учетом количества функций и производительности, заложенных в этот чип.

Рисунок 6 — Функциональная блок-схема ESP32

Заключение

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

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

Выбирая микроконтроллер, вы обычно выбираете тот, который дает вашему продукту пространство для роста. Например, если вы определили, что вам требуется 16 контактов GPIO, вы не хотите выбирать микроконтроллер только с 16 контактами GPIO.

Что произойдет, если вы решите добавить новую кнопку в будущем, и вам понадобится еще один вывод GPIO? Если ваш микроконтроллер не дает вам возможности для роста, вы можете обнаружить, что кажущиеся простыми обновления конструкции в будущем потребуют масштабной модернизации, поскольку необходим новый микроконтроллер.

С другой стороны, вы не хотите выбирать больше производительности или функций, чем вы когда-либо предполагали.

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

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

Наконец, не забудьте загрузить бесплатно PDF : Ultimate Guide to Develop and Sell Your New Electronic Hardware Product . Вы также будете получать мой еженедельный информационный бюллетень, в котором я делюсь премиальным контентом, недоступным в моем блоге.

Другой контент, который вам может понравиться:

Learn Микроконтроллер | Полное руководство для начинающих

Learn Микроконтроллер: Микроконтроллер — это компактная интегральная схема, которая предназначена для конкретной операции во встроенной системе.Кроме того, это типичный для Microcontroller Programming , который включает в себя память, процессор, а также вывод / ввод на одном кристалле.

Как работает микроконтроллер?

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

Особенности микроконтроллера

Процессор микроконтроллера может изменять приложения. Он будет выбирать диапазон от простых 4-битных, 8-битных или 16-битных процессоров до более сложных 32-битных или 64-битных процессоров. В то же время микроконтроллер будет использовать энергозависимые типы памяти, такие как оперативная память, а также энергонезависимые типы памяти, которые включают в себя стираемую программируемую постоянную память, а также EEPROM.Он напрямую взаимодействует с датчиками, а также с другими компонентами.

Для этого процессоры микроконтроллеров будут основаны на комплексе вычислений набора команд, иначе это уменьшит вычисление набора команд (RISC). CISC будет проще реализовать, и он более эффективно использует память. У него будет снижение производительности из-за большего количества тактов, необходимых для выполнения инструкций.

Некоторые вспомогательные элементы микроконтроллера

Системная шина: В этой системной шине используется тип соединительного провода, который соединяется со всеми компонентами микроконтроллера вместе.

Цифро-аналоговый преобразователь (ЦАП): ЦАП выполняет обратную функцию АЦП и позволяет процессору в этом центре микроконтроллера передавать сигналы внешним аналоговым компонентам.

Аналого-цифровой преобразователь (АЦП) — В частности, АЦП — это тип схемы, которая преобразует аналоговые сигналы в цифровые. Он обращается к процессору в центре своего микроконтроллера для взаимодействия с внешними аналоговыми устройствами, такими как датчики.

Разница между микроконтроллерами и микропроцессорами

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

Руководство по микроконтроллерам для начинающих «Adafruit Industries — производители, хакеры, художники, дизайнеры и инженеры!

Очень удобное руководство от jenfoxbot обсуждает многие из десятков микроконтроллеров, доступных для людей, интересующихся интерактивной электроникой. Она начинает с вопроса «Что такое микроконтроллер?»

Микроконтроллер — это «простой компьютер», который выполняет одну программу в цикле.Они предназначены для выполнения одной конкретной задачи.

Затем помогает понять различия между микроконтроллерами и Raspberry Pi и другими компьютерами.

Наконец, она обсуждает 10 наиболее распространенных плат, включая Adafruit Circuit Playground Express, Adafruit Flora и Gemma.

Ознакомьтесь с этим Руководством, чтобы узнать больше.

(Ред .: Не рекомендую надолго прикреплять доски к коже, может быть, пришить одну из удобных для шитья к костюму или использовать сумку для переноски ??)

Прекратите макетирование и пайку — немедленно приступайте к изготовлению! Площадка Circuit Playground от Adafruit забита светодиодами, датчиками, кнопками, зажимами из кожи аллигатора и многим другим.Создавайте проекты с помощью Circuit Playground за несколько минут с помощью сайта программирования MakeCode с перетаскиванием, изучайте информатику с помощью класса CS Discoveries на code.org, переходите в CircuitPython, чтобы изучать Python и оборудование вместе, TinyGO или даже использовать Arduino IDE. Circuit Playground Express — это новейшая и лучшая плата Circuit Playground с поддержкой CircuitPython, MakeCode и Arduino. Он имеет мощный процессор, 10 NeoPixels, мини-динамик, инфракрасный прием и передачу, две кнопки, переключатель, 14 зажимов из кожи аллигатора и множество датчиков: емкостное прикосновение, ИК-приближение, температуру, свет, движение и звук.Вас ждет целый мир электроники и программирования, и он умещается на ладони.

Присоединяйтесь к 30 000+ создателям на каналах Discord Adafruit и станьте частью сообщества! http://adafru.it/discord

Хотите поделиться замечательным проектом? Выставка Electronics Show and Tell проходит каждую среду в 19:00 по восточному времени! Чтобы присоединиться, перейдите на YouTube и посмотрите чат в прямом эфире шоу — мы разместим ссылку там.

Присоединяйтесь к нам каждую среду вечером в 20:00 по восточноевропейскому времени на «Спроси инженера»!

Подпишитесь на Adafruit в Instagram, чтобы узнавать о совершенно секретных новых продуктах, о кулуарах и многом другом https: // www.

Оставить комментарий

Ваш адрес email не будет опубликован.