Теперь, когда мы уже ознакомлены с некоторыми возможностями и функциями микроконтроллеров, естественно, возникает логичный вопрос: что нужно для программирования микроконтроллеров? Какие необходимы программы и устройства, где их взять?
Для того чтобы микроконтроллер мог решать задачи и выполнять определенные функции, его нужно запрограммировать, т. е. записать в него программу или же код программы.
Структура и порядок написания программы
Первым делом, прежде чем приступить к написанию любой программы, а точнее кода программы, следует четко представлять, какие функции будет выполнять микроконтроллер. Поэтому сначала нужно определить конечную цель программы. Когда она определена и полностью понятна, тогда составляется алгоритм работы программы. Алгоритм – это последовательность выполнения команд. Применение алгоритмов позволяет более четко структурировать процесс написания кода, а при написании сложных программ часто позволяет сократить время, затрачиваемое на их разработку и отладку.
Следующим этапом после составления алгоритма является непосредственное написание кода программы. Программы для микроконтроллеров пишутся на языке Си или Ассемблере. Только Ассемблер больше относится к набору инструкций, нежели к языку программирования и является языком низкого уровня.
Мы будем писать программы на Си, который относится к языку высокого уровня. Программы на Си пишутся гораздо быстрее по сравнению с аналогичными на Ассемблере. К тому же все сложные программы пишутся преимущественно на Си.
Здесь мы не будем сравнивать преимущества и недостатки написания программ на Ассемблере и Си. Со временем, приобретя некоторый опыт в программировании МК, вы сами для себя сделаете полезные выводы.
Сам код программы можно писать в любом стандартном текстовом редакторе, например в Блокноте. Однако на практике пользуются более удобными редакторами, о которых будет сказано далее.
Компиляция программы
Написанный нами код на Си еще вовсе не понятен микроконтроллеру, поскольку МК понимает команды только в двоичной (или шестнадцатеричной) системе, которая представляет собой набор нулей и единиц. Поэтому Си-шный код нужно преобразовать в нули и единицы. Для этого применяется специальная программа, называемая компилятор, а сам процесс преобразования кода называется компиляция.
Далее откомпилированный готовый код нужно поместить в микроконтроллер, а точнее записать его в память микроконтроллера или, проще говоря, прошить микроконтроллер.
Для прошивки МК применяется устройство, называемое
Существует широкий выбор программаторов и отладочных плат, однако нас вполне устроит самый простой программатор USBASP, который в Китае стоит не более 3 $.
После того, как микроконтроллер прошит, выполняется отладка и тестирование программы на реальном устройстве или, как еще говорят, на «железе».
Теперь давайте подытожим этапы программирования микроконтроллеров.
При написании простых программ можно обойтись без второго пункта, т. е. без составления алгоритма на бумаге, его достаточно держать в голове.
Следует заметить, что отладку и тестирование программы также выполняют до прошивки МК.
Необходимый набор программ
Существует множество полезных и удобных программ для программирования МК. Они бывают как платные, так и бесплатные. Среди них можно выделить три основных:
1) Atmel Studio
2) CodeVisionAVR
3) WinAVR
Все эти программы относятся к
Следует обратить внимание на 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
Еще статьи по данной теме
Вы хотите узнать, как получить работу по проектированию электроники космического корабля? Мне надавно пришло предложение поинтервьироваться на позицию FPGA designer для Blue Origin (см. выше). Лично мне такая позиция не нужна (у меня уже есть позиция ASIC designer-а в другой компании), но я отметил, что технические требования к претендентам в Blue Origin точно совпадают с содержанием семинара для школьников и младших студентов, который пройдет 15-17 сентября на выставке ChipEXPO в Сколково, с поддержкой от РОСНАНО. Хотя разумеется на семинаре мы коснемся технологий Verilog и FPGA только на самом начальном уровне: базовые концепции и простые, но уже интересные, примеры. Чтобы устроится после этого в Blue Origin, вам все-же потребуется несколько лет учебы и работы.
Из-за короновируса семинар будет удаленный, поэтому принять участие смогут не только школьники и студенты Москвы, но и всей России, Украины, Казахстана, Калифорнии и других стран и регионов. Физически проводить лекции и удаленно помогать участникам будут преподаватели и инженеры МИЭТ, ВШЭ МИЭМ, МФТИ, Черниговского Политеха, Самарского университета, IVA Technologies и fpga-systems.ru.
Для участия сначала, еще до семинара, нужно пройти три части теоретического курса от РОСНАНО, под общим названием «Как работают создатели умных наночипов»: «От транзистора до микросхемы», «Логическая сторона цифровой схемотехники», «Физическая сторона цифровой схемотехники». Этот курс необходим, чтобы вы понимали, что вы делаете, по время практического семинара. По получению сертификата окончания теоретического онлайн-курса, вы можете зайти в офис РОСНАНО в Москве и получить бесплатную плату для практического семинара (если они останутся, преимущество имеют школьники). С этой платой вы можете работать дома, до, во время и после семинара в Сколково.
Как получить плату, подготовится к семинару и что на нем будет:
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 лет? Практика других людей показывает, что возраст вообще не помеха. Многие почему то не учитывают то, что есть целый пласт работы, которую молодые в силу своих амбиций не хотят делать. Поэтому работодатели предпочитают брать тех, кто будет ее тащить. Это ваш шанс зацепиться, а дальше все зависит только от вас.
И последний совет. Многие радиолюбители необщительные, сердитые и раздражительные — считайте это спецификой работы. Излучайте добро и позитив, будьте хорошим человеком.
(далее по тексту — МК) и на какие подводные камни налетел. Сразу скажу — статья не претендует на эксклюзивность, так как любой человек работающий с МК проходил через то, что прошёл я. Прошу строго не судить, а прочитать как историю.
Вместо вступления
Впервые интерес к МК у меня возник, когда я учился в 10 классе. На тот момент был 2009 год. Я умел немного программировать на ПК в QBasic и Visual Basic — школьная программа, но так сложилась жизнь, что я особо не разбирался в программировании, да и отсутствие знающих людей по части электроники и МК рядом сделали своё дело — для меня это была новая ниша. Хотя я с детства ковырялся с платами и микросхемами найденными на помойках, но как оно работало я толком не понимал — толком никто не мог объяснить. Как работает транзистор нормально я узнал только спустя пару лет после описанных событий. Когда я выбирал первый МК то смотрел характеристики на сайте ЧИП-ДИП. Скажу честно — для меня это было как иероглифы. Так что не стоит этого бояться. И да, про Arduino тогда никто понятия не имел.
Как всё началось
Начал ковыряться в яндексах и гуглах. Понимал, что сам контроллер — половина дела, нужна ещё и программа. А как сказано во вступлении — с программированием у меня было не очень. В конце концов попал на какой-то сайт. Как стало позднее ясно, я с этим сайтом реально «попал». Создатель сайта написал ещё и учебник по программированию, я на радостях скачал учебник и первое что там увидел — «В качестве образца для работы я использовал PIC16F84A ». Собственно так я и выбрал свой первый МК. Теперь вопрос — почему я именно «попал». А попал я из-за того, что создатель этого учебника и сайта предлагал программировать МК на АССЕМБЛЕРЕ. Его не все практикующие проггеры то знают, а тут новичок… Контроллер я уже заказал, и только потом начал читать учебник, к сожалению.
Как я выходил из положения
После того, как я понял, что ничего не понял, я забросил МК на пару лет, но параллельно всё-таки шарился на форумах типа Схем.нет и прочих, и ко мне постепенно приходило понимание вопроса. Решил учиться кстати на модели PIC16F877A.
Итак, что нужно знать новичку:
Микроконтроллер — это маленький компьютер, в нём есть и Арифметико-логическое устройство — процессор по сути дела, и оперативная память и некое подобие жесткого диска — память программ и данных, но выполнено это всё в одной микросхеме. Соответственно в зависимости от модели и производителя у него следующие характеристики (ориентировочно):
- Рабочие частоты от единиц до ~100 Мгц, я лично использую в своих устройствах как правило частоты 20 Мгц, именно МЕГАгерц, а не ГИГАгерц. Частота задаётся внешним источником тактирования — кварцевым или керамическим резонатором.
- Объём ОЗУ — единицы и десятки Килобайт
- Объём памяти под данные и программу — до нескольких десятков Килобайт. При желании можно расширить память для данных с помощью микросхем памяти. Для того чтобы использовать эти микросхемы для расширения памяти под программу — новичку стоит забыть, не всякий профессионал может это правильно сделать, да и не каждый микроконтроллер позволяет изменять свою прошивку во время работы.
- Рабочее напряжение от 1 до 5 вольт в зависимости от модели и производителя.
Микроконтроллер рассчитан на работу на плате, скажем так, в конкретной «железке», на плате, в устройстве. Так что не стоит думать, что на нём можно поиграть в CS 🙂
Языки программирования
Начал выбирать язык программирования и среду в которой можно программировать. Так как я хоть как-то знал Basic, то и задумался, что было бы хорошо прогать на нём. Да, он не очень совершенный и ещё куча недостатков, но для начала подходил как нельзя кстати. Мне повезло, оказалось, что есть язык PIC-Basic. По нему есть учебник, автор Чак Хелибайк и переведённое на русский руководство, собственно до всего доходил дальше по учебнику и руководству. Среда работает из-под ДОС, но можно прикрутить CodeStudio и всё будет работать из-под Windows.
Программатор
Следующая проблема, стоявшая у меня на пути — чем записать программу в чип. Понятное дело, что нужен программатор, я решил экономить, попробовал собрать несколько схем из этих ваших интернетов. Одной схемы недостаточно, нужна ещё программа которая используя программатор (саму железку) занесёт код в память. Все мои опыты окончились неудачами, по причине малого опыта. Решил я больше не смотреть на то, как от чипов идёт дым и заказал PICKit3, после этого не знал проблем, поигрался пару дней с ним и всё заработало.
- В настоящее время есть адаптированные языки программирования для МК, тот же Бэйсик, СИ и прочие.
- После написания программы она компилируется в машинный код — файлик с расширением HEX, его-то и надо прошивать в память МК.
- Для того, чтобы «прошить МК» — записать в него выполняемый код нужно две вещи:
1) плата-программатор, которая является промежуточным устройством между разъёмом компьютера и самим чипом
2) Программа-программатор, которая будет знать как работать с программатором, собранным по конкретной схеме.
То есть нужно чтобы программа на ПК знала какая схема подключена к ПК чтоб правильно прошить чип. В моём случае это заводское решение — вместе с программатором PicKit идет диск с нужными программами. - Памяти в МК ограниченное количество, это надо учитывать, иногда приходится выкраивать каждый байт прошивки, лишь бы влезть в объём памяти чипа. Так же следует понимать, что в МК нет никакой операционной системы, и Ваша прошивка — единственные данные которые знает МК.
Несколько слов про периферию
Для связи с внешним миром и удобства работы и разработки в МК встраивают различные периферийные схемы, например АЦП — аналогово-цифровой преобразователь, так что можно без лишней обвязки измерять напряжение подаваемое на вывод МК, но оно должно быть не выше чем напряжение питания, иначе чип сгорит. Используя делитель напряжения можно сделать вольтметр, например. Периферия, количество встроенных функций и их характеристики тоже зависят от модели, как правило чем дороже модель — тем богаче комплектация. Так же следует не забывать, что у контроллера ограниченное число ножек, к которым можно подключиться.
Например у PIC16F877А их 40 штук, причем 7 штук вылетают сразу, т.к. используются для подачи питания, подключения резонатора и управления аварийным сбросом. Так же надо внимательно смотреть документацию на чип. Например тот же АЦП — в PIC16F877А он может измерять напряжение только на 8 конкретных ножках чипа, на других он это делать не может. То есть под каждую встроенную функцию отводятся конкретные выводы и поменять их нельзя.
Суть сей басни такова
Освоить МК реально даже самому и с нуля, но есть места где не очень понятно. Если с программированием никогда не сталкивались, то сначала выучите хотя-бы азы программирования и напишите «Hello World» на компьютере. После этого будет проще. Если не хотите особо заморачиваться — Arduino Ваше всё. МК расчитаны на использование в «железках» — блоки управления, платы, контроллеры итд итп, это не полноценный компьютер, а контроллер. И ожидать от него следует соответственно. Благо сейчас полно примеров на ютубе, и я надеюсь, что мой опыт начинания с нуля будет не таким горьким и моя статья кому-нибудь, да поможет.
материалы в категории
Программирование AVR при помощи PONY PROG
Итак, что такое микроконтроллер мы в общих чертах разобрались (смотрим Программирование для начинающих. часть1 ), теперь нам нужен программатор.
Самый простой программатор для AVR микроконтроллеров можно изготовить по вот такой схеме:
Называется он STK-200. В общем-то вполне и подошел-бы программатор PONY PROG, но у него есть один очень существенный минус- он не дает запрограммировать некоторые фьюзы, которые иногда еще называют опасными (например RSTDSBL, DWEN, SPIEN). Если случайно запрограммировать такой опасный фьюз, то вы отключите возможность пользоваться ISP программатором, МК заблокируется, для восстановления МК нужен будет параллельный программатор (высоковольтный).
А вот для управления программатором STK-200 можно использовать программу от PONY PROG- об этом чуть ниже.
Есть еще вариант программаторов так называемый «5 проводков»- напрямую от LPT порта компьютера, но пользоваться программаторами типа «5 проводков» не рекомендуется.
Есть облегченный вариант программатора STK-200, который так-же построен на нескольких проводках, собирать его я так же не рекомендую, по той причине, что таким программатором очень легко спалить LPT порт, для сравнения — COM порт спалить в разы труднее. Да и потом, программируя «5ти проводками» можно случайно замкнуть эти провода между собой, спалить МК или опять же порт. Использование буферного повторителя в микросхеме улучшает крутизну фронтов сигнала, а так же бережет LPT порт, от случайных КЗ и перенапряжений
Вернемся к схеме программатора STK-200: в нем применена всего-ли одна микросхема 74HC244 (аналог у нее КР1533АП5).
В схеме присутствуют 3 светодиода: питание, чтение, запись. Длина соединяющих проводов должна быть как можно короче.
Чуть ниже прилагаются фотографии готового программатора STK-200.
На фото, на плате программатора присутствует кварц и конденсаторы. Кварц нужно ставить на 4 мГц, конденсаторы на 5-15 пФ, два штырька рядом со светодиодами на плате, используются для подачи питания, 5 вольт.
Если вы будете собирать переходник, то питание подается с платы переходника, т.к. там стоит «Кренка» на 5 Вольт, она защитит микроконтроллер и схему от переполюсовки или превышения напряжения.
К программатору дополнительно нужно будет изготовить плату, на которой будут размещаться панельки под разные МК, в принципе, можно просто запаивать проводки к нужными выводам МК, как вам удобнее.
Ниже в архиве прикреплены файлы для изготовления программатора- схема, печатная плата программатора и переходника для ATmega8/48/168, ATtiny2313.
Для того чтобы проверить работает ли наш программатор, подключаем его в порт LPT, кликаем правой кнопкой мыши на значке «Мой компьютер», в появившемся списке выбираем «диспетчере устройств», откроется окошко, кликаем обновить конфигурацию оборудования и на программаторе моргнут светодиоды чтения/записи. Кстати, питание берется от внешнего источника, а не с LPT порта, будьте внимательны.
Главным преимуществом параллельного программатора является способность восстанавливать некоторые неправильно установленные биты. После этого интерфейс ISP отключается, и при программировании последовательным программатором в таких случаях выдается сообщение об ошибке.
Выбор программы для прошивки микроконтроллера
Популярными программами для прошивки AVR микроконтроллеров являются PonyProg и CodeVision AVR. Я пользуюсь Code Vision AVR (далее CVAVR), но рассмотрим мы обе программы. В принципе, можете пользоваться любыми другими программами, только запомните одно очень важное замечание: в разных программах фьюзы могут выставляться по разному, т.е. зеркально.
В первую очередь подключаем программатор в нужный нам порт, только сначала ставим микроконтроллер в панельку. Питание подавайте после того, как программатор будет подключен к порту.
Для того, чтобы запрограммировать микроконтроллер нам нужны файлы прошивки, файл с расширением .hex, в некоторых проектах используется еще файл EEPROM .eep. (электрически изменяемая память данных, в нем хранятся различного рода константы).
И не забываем про фьюзы, если они выставляются, обычно в статьях всегда прикрепляют картинку или пишут какие фьюзы выставлять.
Прошивка микроконтроллера с помощью PonyProg
Конечно сначала надо скачать и установить саму программу. Она есть здесь.
Скачали, установили, запускаем. Появилось вот такое окошко (еще и звук при запуске будет в виде лошадиного ржача…)
Затем- в списке устройств нужно выбрать наш МК: кликаем меню «Устройство», затем выбираем AVRmicro -> ATmega8.
Потом, конечно-же нам нужен сам файл прошивки, для этого кликаем Файл -> Открыть файл программы (FLASH)… Откроется окошко, где нам нужно выбрать наш файл прошивки с расширением .hex.
не забываем в списке выбрать нужное нам расширение файла, иначе файл прошивки не обнаружится
После того как мы этот файл открыли, в окошке появятся куча всяких непонятных цифр и букв. Это так выглядит прошива в 16-тиричном коде.
Ужас, конечно, на первый взгляд, но пусть это вас не пугает: все это написано не нами, менять там ничего не надо и если сама прошивка рабочая, то можно даже не вдаваться в подробности что там да как…
Теперь- нам точно так-же нужно выбрать файл прошивки EEPROM с расширением .eep, если конечно он нужен и прилагается.
Если вы еще не подключили программатор и не подали на него питание, сделайте это. Не забудьте вставить МК в панельку, не перепутайте положение в панельке, обратите внимание на насечку или кружок на корпусе МК, оттуда и начинается отсчет ножек.
Кликаем Установки -> Настройка оборудования. Все настройки выставляем как на рисунке ниже, затем нажимаем кнопку «Проверка» – должно выйти окошко «Тест ОК»
Если вдруг тест настроек PONY на прошел и выскочило окошко с надписью «Тест ОШИБКА»
Тогда нам надо проверить конфигурацию порта LTP.
Кликаем правой кнопкой мыши на значке «Мой компьютер» и выбираем «Диспетчер устройств» или можно зайти в Панель управления -> Система -> Оборудование -> Диспетчер устройств.
в списке находим Порты (COM и LPT ), кликаем правой кнопкой мыши на нем и нажимаем «Обновить конфигурацию оборудования»
Затем закрываем окно, и возвращаемся к PonyProg, заново запускаем тест, нажимаем «Проверка», должно выйти окошко с надписью «Тест ОК».
Если все в порядке, то нажимаем «ОК», далее переходим в меню Установки -> Калибровка, нажимаем Yes.
Выйдет сообщение об успешно проведенной калибровке, нажимаем ОК
Сейчас нам нужно будет выставить фьюзы, если в вашей конструкции фьюзы не выставляются, переходите к следующему пункту. Кликаем Команды -> Security and Configuration Bits… откроется окошко для установки фьюзов
Теперь все готово, и можно прошить микроконтроллер, нажимаем Команды -> Записать все. Если вы еще не передумали, то в окошке которое вышло, нажимаем «Yes», и начнется процесс записи и проверки.
Если все прошло успешно, но в конце-концов должно появиться сообщение
Все, теперь можно вынимать МК из программатора и проверить наше устройство, если вы все сделали все как я расписал, все будет работать.
Если по какой то причине устройство не заработало:
1. Возможно допущены ошибки при сборке программатора, перепроверьте все и попробуйте еще раз перепрошить МК.
2. Возможно сама прошивка «битая»
Если вдруг вам понадобилось перезаписать микроконтроллер, то его в общем-то даже и стирать не надо: при записи другой прошивки предыдущая сначала сотрется.
В следующей статье Программирование для начинающих. часть3 мы будем рассматривать прошивку микроконтроллеров с помощью программы CodeVision AVR, ну а во вложении, как и было сказано выше, чертежи для программатора в формате lay. Это специальный файл для программы LAYOUT, которую можно скачать здесь
Файл | Описание | Размер файла: |
---|---|---|
stk200.rar | 21 Кб |
Средства программирования PIC-контроллеров / Хабр
Введение
PIC-контроллеры остаются популярными в тех случаях, когда требуется создать недорогую компактную систему с низким энергопотреблением, не предъявляющую высоких требований по ее управлению. Эти контроллеры позволяют заменить аппаратную логику гибкими программными средствами, которые взаимодействуют с внешними устройствами через хорошие порты.
Миниатюрные PIC контроллеры хороши для построения преобразователей интерфейсов последовательной передачи данных, для реализации функций «прием – обработка – передача данных» и несложных регуляторов систем автоматического управления.
Компания Microchip распространяет MPLAB — бесплатную интегрированную среду редактирования и отладки программ, которая записывает бинарные файлы в микроконтроллеры PIC через программаторы.
Взаимодействие MPLAB и Matlab/Simulink позволяет разрабатывать программы для PIC-контроллеров в среде Simulink — графического моделирования и анализа динамических систем. В этой работе рассматриваются средства программирования PIC контроллеров: MPLAB, Matlab/Simulink и программатор PIC-KIT3 в следующих разделах.
• Характеристики миниатюрного PIC контроллера PIC12F629
• Интегрированная среда разработки MPLAB IDE
• Подключение Matlab/Simulink к MPLAB
• Подключение программатора PIC-KIT3
Характеристики миниатюрного PIC-контроллера
Семейство РIС12ххх содержит контроллеры в миниатюрном 8–выводном корпусе со встроенным тактовым генератором. Контроллеры имеют RISC–архитектуру и обеспечивают выполнение большинства команд процессора за один машинный цикл.
Для примера, ниже даны характеристики недорогого компактного 8-разрядного контроллера PIC12F629 с многофункциональными портами, малым потреблением и широким диапазоном питания [1].
• Архитектура: RISC
• Напряжение питания VDD: от 2,0В до 5,5В (< 6,5В)
• Потребление:
— <1,0 мА @ 5,5В, 4МГц
— 20 мкА (тип) @ 32 кГц, 2,0В
— <1,0 мкА (тип) в режиме SLEEP@2,0В
• Рассеиваемая мощность: 0,8Вт
• Многофункциональные каналы ввода/вывода: 6/5
• Максимальный выходной ток портов GPIO: 125мА
• Ток через программируемые внутренние подтягивающие резисторы портов: ≥50 (250) ≤400 мкА @ 5,0В
• Разрядность контроллера: 8
• Тактовая частота от внешнего генератора: 20 МГц
Длительность машинного цикла: 200 нс
• Тактовая частота от внутреннего RC генератора: 4 МГц ±1%
Длительность машинного цикла: 1мкс
• FLASH память программ: 1К
Число циклов стирание/запись: ≥1000
• ОЗУ память данных: 64
• EEPROM память данных: 128
Число циклов стирание/запись: ≥10K (-40оС ≤TA≤ +125 оС)
• Аппаратные регистры специального назначения: 16
• Список команд: 35 инструкций, все команды выполняются за один машинный цикл,
кроме команд перехода, выполняемых за 2 цикла
• Аппаратный стек: 8 уровней
• Таймер/счетчик ТМR0: 8-разрядный с предделителем
• Таймер/счетчик ТМR1: 16-разрядный с предделителем
Дополнительные особенности:
• Сброс по включению питания (POR)
• Таймер сброса (PWRTтаймер ожидания запуска генератора (OST
• Сброс по снижению напряжения питания (BOD)
• Сторожевой таймер WDT
• Мультиплексируемый вывод -MCLR
• Система прерываний по изменению уровня сигнала на входах
• Индивидуально программируемые для каждого входа подтягивающие резисторы
• Программируемая защита входа
• Режим пониженного энергопотребления SLEEP
• Выбор режима работы тактового генератора
• Внутрисхемное программирование ICSP с использованием двух выводов
• Четыре пользовательские ID ячейки
Предельная рабочая температура для Е исполнения (расширенный диапазон) от -40оС до +125 оС;
Температура хранения от -65оС до +150 оС.
КМОП технология контроллера обеспечивает полностью статический режим работы, при котором остановка тактового генератора не приводит к потере логических состояний внутренних узлов.
Микроконтроллер PIC12F629 имеет 6-разрядный порт ввода/вывода GPIO. Один вывод GP3 порта GPIO работает только на вход, остальные выводы можно сконфигурировать для работы как на вход так и на выход. Каждый вывод GPIO имеет индивидуальный бит разрешения прерываний по изменению уровня сигнала на входах и бит включения внутреннего подтягивающего резистора.
Интегрированная среда разработки MPLAB IDE
MPLAB IDE — бесплатная интегрированная среда разработки ПО для микроконтроллеров PIC включает средства для создания, редактирования, отладки, трансляции и компоновки программ, записи машинного кода в микроконтроллеры через программаторы.
Загрузка MPLAB IDE
Бесплатные версии MPLAB (включая MPLAB 8.92) хранятся на сайте компании Microchip в разделе «DOWNLOAD ARCHIVE».
Создание проекта
Пример создания проекта программ PIC контроллера в среде MPLAB включает следующие шаги [2].
1. Вызов менеджера проекта.
2. Выбор типа PIC микроконтроллера.
3. Выбор компилятора, например, Microchip MPASM для ассемблера.
4. Выбор пути к каталогу проекта (клавиша Browse…) и ввод имени проекта.
5. Подключение файлов к проекту в окне Project Wizard → Step Four можно не выполнять. Это можно сделать позднее, внутри активного проекта. Клавиша Next открывает следующее окно.
6. Завершение создания проекта (клавиша Finish).
В результате создания проекта FirstPrMPLAB интерфейс MPLAB принимает вид, показанный на Рис. 1.
Рис. 1. Интерфейс среды MPLAB v8.92 и шаблон проекта.
Создание файла программы
Программу можно создать при помощи любого текстового редактора. В MPLAB имеется встроенный редактор, который обеспечивает ряд преимуществ, например, оперативный лексический анализ исходного текста, в результате которого в тексте цветом выделяются зарезервированные слова, константы, комментарии, имена, определенные пользователем.
Создание программы в MPLAB можно выполнить в следующей последовательности.
1. Открыть редактор программ: меню → File → New. Изначально программе присвоено имя Untitled.
2. Набрать или скопировать программу, например, на ассемблере.
3. Сохранить программу под другим именем (меню → File → Save As), например, FirstPrMPLAB.asm.
Рис. 2. Пример простейшей программы (на ассемблере) вывода сигналов через порты контроллера GP0, GP1, GP2, GP4, GP5 на максимальной частоте.
Запись ‘1’ в разряде регистра TRISIO переводит соответствующий выходной буфер в 3-е состояние, в этом случае порт GP может работать только на вход. Установка нуля в TRISIO настраивает работу порта GP на выход.
Примечание. По спецификации PIC12F629 порт GP3 микроконтроллера работает только на вход (соответствующий бит регистра TRISIO не сбрасывается – всегда находится в ‘1’).
Регистры TRISIO и GPIO находятся в разных банках области памяти. Переключение банков выполняется 5-м битом регистра STATUS.
Любая программа на ассемблере начинается директивой org и заканчивается директивой end. Переход goto Metka обеспечивает циклическое выполнение программы.
В программе (Рис. 2) используются следующие обозначения.
Директива LIST — назначение типа контроллера
Директива __CONFIG — установка значений битов конфигурации контроллера
Директива equ — присвоение числового значения
Директива org 0 — начало выполнения программы с адреса 0
Команда bsf — устанавливает бит указанного регистра в 1
Команда bсf — сбрасывает бит указанного регистра в 0
Команда movlw — записывает константу в регистр W
Команда movwf — копирует содержимое регистра W в указанный регистр
Команда goto — обеспечивает переход без условия на строку с меткой
Директива end — конец программы
Установка требуемой конфигурации микроконтроллера
Конфигурация микроконтроллера PIC12F629 зависит от настроек слова конфигурации (2007h), которые можно задать в программе через директиву __CONFIG.
Непосредственно или через окно MPLAB: меню → Configure → Configuration Bits:
Где:
Бит 2-0 — FOSC2:FOSC0. Выбор тактового генератора
111 — Внешний RC генератор. Подключается к выводу GP5. GP4 работает как CLKOUT
110 — Внешний RC генератор. Подключается к выводу GP5. GP4 работает как ввод/вывод
101 — Внутренний RC генератор 4МГц. GP5 работает как ввод/вывод. GP4 — как CLKOUT
100 — Внутренний RC генератор 4МГц. GP5 и GP4 работают как ввод/вывод
011 — EC генератор. GP4 работает как ввод/вывод. GP5 — как CLKIN
010 — HC генератор. Резонатор подключается к GP4 и GP5
001 — XT генератор. Резонатор подключается к GP4 и GP5
000 — LP генератор. Резонатор подключается к GP4 и GP5Бит 3 — WDTE: настройка сторожевого таймера (Watchdog Timer)
1 — WDTE включен
0 — WDTE выключенСторожевой таймер предохраняет микроконтроллер от зависания – перезапускает программу через определенный интервал времени если таймер не был сброшен. Период таймера устанавливается в регистре OPTION_REG. Обнуление сторожевого таймера вызывается командой CLRWDT.
Бит 4 — PWRTE: Разрешение работы таймера включения питания:
1 — PWRT выключен
0 — PWRT включенТаймер задерживает микроконтроллер в состоянии сброса при подаче питания VDD.
Бит 5 — MCLR: Выбор режима работы вывода GP3/-MCLR
1 — работает как -MCLR
0 — работает как порт ввода-вывода GP3Бит 6 — BODEN: Разрешение сброса по снижению напряжения питания (как правило < 2.0В)
1 — разрешен сброс BOR
0 — запрещен сброс BOR автоматически включается таймерПри разрешении сброса BOR автоматически включается таймер PWRT
Бит 7 — .CP: Бит защиты памяти программ от чтения программатором
1 Защита выключена
0 Защита включенаПри выключения защиты вся память программ стирается
Бит 8 — .CPD: Бит защиты EPROM памяти данных
1 Защита выключена
0 Защита включенаПосле выключения защиты вся информация будет стерта
Бит 11-9 — Не используются: Читается как ‘1’.
Бит 13-12 — BG1:BG0. Биты калибровки сброса по снижению питания
00 — нижний предел калибровки
11 — верхний предел калибровки
Добавление программы к проекту
Пример добавления программы к проекту показан на (Рис. 3).
Рис. 3. Добавление программы FirstPrMPLAB.asm к проекту FirstPrMPLAB.mcp
Сохранить материалы проекта можно командой: меню → File → Save Workspace.
Компиляция
Чтобы создать бинарный файл с расширением hex для прошивки микроконтроллера необходимо откомпилировать проект. Запуск компиляции выполняется командой меню → Project → Build All. Результаты компиляции можно увидеть в окне Output (Рис. 1). Если в программе нет ошибок, то компилятор выдаёт сообщение об успешной компиляции: BUILD SUCCEEDED, загрузочный HEX файл можно найти в рабочем каталоге:
Отладка программы
Отладку программы в среде MPLAB IDE можно выполнить при помощи аппаратного эмулятора MPLAB REAL ICE или программного симулятора MPLAB SIM. Запуск последнего выполняется как показано на Рис. 4.
Рис. 4. Подключение к симулятору MPLAB SIM для отладки программы.
После запуска отладчика в окне Output (Рис. 1) появляется закладка MPLAB SIM, куда MPLAB выводит текущую информацию отладчика. Команды отладчика (Рис. 5) после запуска становятся активными.
Рис. 5. Команды отладчика.
Команды отладчика:
• Run — Непрерывное выполнение программы до точки останова (Breakpoint) если таковая установлена.
• Halt — Остановка программы на текущем шаге выполнения.
• Animate — Анимация непрерывного выполнения программы.
• Step Into — Выполнение по шагам (вызовы Call выполняются за один шаг).
• Step Over — Выполнение по шагам включая команды вызовов Call.
• Reset — Начальная установка программы. Переход указателя на первую команду.
• Breakpoints — Отображение списка точек останова. Обработка списка.
При выполнении программы по шагам текущий шаг выделяется стрелкой (Рис. 6). Непрерывное выполнение программы останавливается командой Halt или достижением программой точки останова. Точка останова устанавливается/снимается в строке программы двойным щелчком.
Пример программы на ассемблере, которая с максимальной скоростью меняет состояние портов контроллера показан на Рис. 6 (справа). Программа передаёт в регистр портов GPIO данные b’10101010’ и b’01010101’. Поскольку в регистре GPIO передачу данных в порты контроллера выполняют не все разряды, а только 0,1,2,4 и 5, то состояние регистра GPIO (Рис. 6, слева) отличается значениями: b’00100010’ и b’00010101’.
Рис. 6. Состояние регистров специального назначения контроллера на момент выполнения программы (слева) и выполняемая по шагам программа (справа).
В процессе отладки можно наблюдать за состоянием регистров, переменных, памяти в соответствующих окнах, открываемых в разделе View основного меню. В процессе отладки можно вносить изменения в код программы, содержимое регистров, памяти, изменять значения переменных. После изменения кода необходимо перекомпилировать программу. Изменение содержимого регистров, памяти и значения переменных (окна раздела View: Special Function Register, File Register, EEPROM, Watch) не требует перекомпиляции.
Входные сигналы портов модели микроконтоллера можно задать в разделе Debugger → Stimulus. Устанавливаемые состояния сигналов портов привязываются к времени (тактам) отладки.
Иногда результаты выполнения программы в режиме отладки не соответствуют выполнению этой же программы в реальном контроллере, так, например, отладчик программы (Рис. 6) без инструкций movlw 0x07 и movwf cmcon показывает, что выходы GP0 и GP1 регистра GPIO не изменяются — находятся в нулевом состоянии, содержимое регистра GPIO попеременно равно 0x14 и 0х20. Однако, контроллер, выполняющий программу без указанных инструкций, показывает на осциллографе циклическую работу всех пяти выходов: 0x15 и 0х22, включая GP0 и GP1 (см. Рис. 7).
Осциллограммы контроллера, выполняющего циклы программы Рис. 6 (Metka… goto Metka) показаны на Рис. 7.
Рис. 7. Осциллограммы выхода GP0 (слева) и GP1 (справа) микроконтроллера PIC12F629, работающего от внутреннего 4МГц RC генератора. Программа (Рис. 6) формирует сигналы максимальной частоты на всех выходах контроллера. За период сигналов 5.3 мкс выполняется 5 команд (6 машинных циклов), амплитуда GP0 сигнала на осциллограмме равна 4.6В, измеренное программатором питание контроллера 4.75В.
Прошивка микроконтроллера
Для записи программы в микроконтроллер (прошивки контроллера) необходимо микроконтроллер подключить к интегрированной среде MPLAB IDE через программатор. Организация подключения показана ниже в разделе «Подключение программатора PIC-KIT3».
Примечание. В контроллер PIC12F629 записана заводская калибровочная константа настройки частоты внутреннего тактового генератора. При необходимости её можно прочитать и восстановить средствами MPLAB с использованием программатора.
Команды для работы с программатором и изменения его настроек находятся в меню MPLAB Programmer. Тип программатора в MPLAB выбирается в разделе: меню → Programmer → Select Programmer.
Рис. 8. Выбор программатора для подключения к среде MPLAB.
Прошивка микроконтроллера через программатор запускается командой: меню → Programmer → Program. Сообщение об успешной прошивке показано на Рис. 9.
Рис. 9. Запуск прошивки микроконтроллера и вид сообщения об успешной прошивке.
Примечание: Во время прошивки микроконтроллера у программатора PIC-KIT3 мигает желтый светодиод.
Подключение MATLAB/SIMULINK к MPLAB
В системе моделирования динамических систем Simulink (приложение к Matlab) на языке графического программирования [7] можно разрабатывать программы для семейства PIC контроллеров имеющих АЦП/ЦАП, счетчики, таймеры, ШИМ, DMA, интерфейсы UART, SPI, CAN, I2C и др.
Пример Simulink программы PIC контроллера показан на Рис. 10.
Рис. 10. Пример программы на языке графического программирования для PIC контроллера выполненной в среде моделирования динамических систем Simulink.
Взаимодействие средств разработки и компиляции программ для PIC контроллеров в Simulink показано на Рис. 11 [6].
Рис. 11. Структура средств построения адекватной модели PIC контроллера на языке графического программирования.
Для построения среды разработки необходимы следующие компоненты Matlab:
• Simulink
• Real-Time Workshop Embedded Coder
• Real-Time Workshop
И Cи компилятор компании Microchip:
• C30 для контроллеров PIC24, dsPIC30 и PIC33
• или C32 для контроллеров серии PIC32
Установка компонентов Matlab
На сайте имеются Simulink библиотеки (dsPIC Toolbox) для PIC контроллеров и версий Matlab c R2006a по R2012a:
Для скачивания библиотеки необходимо зарегистрироваться. Программы поддерживают работу 100 микроконтроллеров из серий PIC 16MC, 24F, 30F, 32MC, 33F, 56GP, 64MC, 128MC, 128GP.
Бесплатные версии работают с Simulink моделями PIC контроллеров имеющих до 7 портов ввода-вывода.
Для установки dsPIC Toolbox — библиотеки блоков PIC контроллеров для Matlab/Simulink необходимо [4]:
• Скачать dsPIC Toolbox для требуемой версии Matlab.
• Распаковать zip файл в папке, в которой будут установлены Simulink блоки.
• Запустить Matlab.
• Настроить текущий каталог Matlab на папку с распакованным файлом.
• Открыть и запустить файл install_dsPIC_R2012a.m, например, кнопкой меню или клавишей клавиатуры.
Библиотеки dsPIC и примеры Simulink моделей устанавливаются в текущую папку Matlab (Рис. 12). Установленные блоки для моделирования PIC контроллеров доступны в разделе Embedded Target for Microchip dsPIC библиотеки Simulink (Рис. 13).
Рис. 12. Содержимое текущего каталога после выполнения install_dsPIC_R2012a.m.
Рис. 13. Блоки, установленной библиотеки «Embedded Target for Microchip dsPIC».
Для совместной компиляции Simulink модели средствами Matlab и MPLAB необходимо прописать в переменной окружения path Matlab с высшим приоритетом путь к каталогу MPLAB с файлами MplabOpenModel.m, MplabGetBuildinfo.m и getHardwareConfigs.m:
>> path('c:\Program Files (x86)\Microchip\MPLAB IDE\Tools\MATLAB\',path)
Установка Си компилятора MPLAB
Компиляторы MPLAB находятся на сайте Microchip (Download Archive → MPLAB C Compiler for PIC24 and dsPIC DSCs). Для установки демонстрационной версии компилятора С30 необходимо его скачать по ссылке PIC24/dsPIC v3.25 (Рис. 14) и запустить принятый файл mplabc30-v3.25-comboUpgrade.exe.
Рис. 14. Версии Си компилятора (слева) и режимы его установки (справа).
Примечание. Работа выполнена с версией v3.25 компилятора С30 для PIC24/dsPIC. Проверка показала, что следующая версия v3.30 не поддерживает совместную компиляцию моделей Matlab R2012a (dsPIC Toolbox) без ошибок.
Установочный exe файл создаёт в разделе c:\Program Files (x86)\Microchip\ новый каталог mplabc30 с файлами:
Рис. 15. Каталоги компилятора C30 MPLAB.
Последовательность Simulink программирования для PIC контроллеров
1. Создайте рабочий каталог и скопируйте в него *.mdl примеры из раздела example (см. Рис. 12).
2. Загрузите Matlab. Настройте его на рабочий каталог.
3. Включите в переменную окружения path Matlab с высшим приоритетом путь к MPLAB — каталогу c:\Program Files (x86)\Microchip\MPLAB IDE\Tools\MATLAB\:
>> path('c:\Program Files (x86)\Microchip\MPLAB IDE\Tools\MATLAB\',path)
Примечание: Использование команды >>path без аргументов приводит к отображению списка путей переменной path в окне команд (Command Window). Удалить путь из переменной path можно командой rmpath, например:
>>rmpath(' c:\Program Files\Microchip\MPLAB IDE\Tools\MATLAB\')
4. Создайте Simulink модель для PIC контроллера, используя блоки библиотеки «Embedded Target for Microchip dsPIC» (Рис. 13), или загрузите готовую модель, например, Servo_ADC.mdl.
Тип контроллера, для которого разрабатывается Simulink модель, выбирается из списка в блоке Master > PIC (Рис. 16, Рис. 10), который должен быть включен в состав модели.
Рис. 16. Выбор типа контроллера в блоке Master модели.
5. Проверьте настройки конфигурации модели: Меню → Simulation → Configuration Parameters <Ctrl+E>. В строке ввода System target file раздела Code Generation должен быть указан компилятор S-функций dspic.tlc (Рис. 17). Выбор dspic.tlc настраивает все остальные параметры конфигурации модели, включая шаг и метод интегрирования.
Рис. 17. Выбор компилятора S-функций dspic.tlc для моделей PIC-контроллеров в разделе «основное меню → Simulation → Configuration Parameters → Code Generation».
6. Откомпилируйте модель tmp_Servo_ADC.mdl. Запуск компилятора показан на Рис. 18.
Рис. 18. Запуск компилятора Simulink модели.
В результате успешной компиляции (сообщение: ### Successful completion of build procedure for model: Servo_ADC) в текущем каталоге создаются HEX файл для прошивки PIC контроллера и MCP проект среды MPLAB (Рис. 19).
Рис. 19. Результаты компиляции модели.
Запуск модели в Matlab/Simulink выполняется в окне модели кнопкой, условное время моделирования устанавливается в строке:
Управление компиляцией Simulink моделей из среды MPLAB
Управление компиляцией Simulink модели можно выполнять командами раздела Matlab/Simulink среды MPLAB, например, в следующем порядке.
1. Разработайте модель PIC контроллера в Matlab/Simulink. Сохраните модель.
2. Запустите MPLAB.
3. Выберите MPLAB меню → Tools → Matlab/Simulink и новый раздел появится в составе меню.
4. В разделе Matlab/Simulink откройте Simulink модель, например, Servo_ADC, командой «Matlab/Simulink → Specify Simulink Model Name → Open → File name → Servo_ADC.mdl → Open». Команда Open запускает Matlab и открывает модель.
5. Откомпилируйте модель и создайте MCP проект командами Generate Codes или Generate Codes and Import Files. Перевод MDL модели в MCP проект выполняется TLC компилятором Matlab.
В результате создаётся проект MPLAB:
со скриптами модели на языке Си.
6. Откройте проект: меню → Project → Open → Servo_ADC.mcp (Рис. 20).
Рис. 20. Структура MCP проекта Simulink модели Servo_ADC.mdl в среде MPLAB.
Проект Simulink модели готов для редактирования, отладки и компиляции в машинные коды контроллера средствами MPLAB.
Подключение программатора PIC-KIT3
Узнать какие программаторы записывают бинарный код в конкретный микроконтроллер можно в разделе меню → Configure → Select Device среды MPLAB 8.92. Например, программатор PIC-KIT3 не поддерживает контроллер PIC12C508A (Рис. 21, левый рисунок), но работает с контроллером PIC12F629 (Рис. 21, правый рисунок).
Рис. 21. Перечень программаторов для прошивки микроконтроллера.
Информацию об установленном драйвере программатора PIC-KIT3 можно запросить у менеджера устройств ОС Windows (Рис. 22).
Рис. 22. Информация об установленном драйвере программатора PIC-KIT3.
Схема подключения микроконтроллера PIC12F629 к программатору PIC-KIT3 показана на Рис. 23.
Рис. 23. Схема подключения микроконтроллера PIC12F629 к программатору PIC-KIT3.
Вывод PGM программатора для прошивки контроллеров PIC12F629 не используется. Наличие вывода PGM для разных типов PIC контроллеров показано на Рис. 24. Вывод PGM рекомендуется «притягивать» к общему проводу (GND), через резистор, номиналом 1К [3].
Рис. 24. Выводы PGM PIC контроллеров.
Индикация светодиодов программатора Olimex PIC-KIT3 показана в ниже:
Желтый — Красный — Состояние программатора
Вкл — Выкл — Подключен к USB линии
Вкл — Вкл — Взаимодействие с MPLAB
Мигает — Включен постоянно — Прошивка микроконтроллера
Не следует подключать питание микроконтроллера VDD (Рис. 23) к программатору, если контроллер запитывается от своего источника питания.
При питании микроконтроллера от программатора на линии VDD необходимо установить рабочее напряжение, например, 5В программой MPLAB (Menu → Programmer → Settings → Power), как показано на Рис. 25.
Примечание. При отсутствии напряжения на линии VDD MPLAB IDE выдает сообщение об ошибке: PK3Err0045: You must connect to a target device to use
Рис. 25. Установка напряжения VDD на программаторе PIC-KIT3 программой MPLAB IDE v8.92.
Если программатор не может установить требуемое напряжение, например, 5В при его питании от USB, в которой напряжение меньше 5В, MPLAB IDE выдает сообщение об ошибке: PK3Err0035: Failed to get Device ID. В этом случае, сначала необходимо измерить напряжение программатора — считать его в закладке меню → Programmer → Settings → Status, а затем установить напряжение (не больше измеренного) в закладке меню → Programmer → Settings → Power.
Рис. 26. Измерение (слева) и установка (справа) VDD напряжения программатора PIC-KIT3 программой MPLAB IDE v8.92.
Пример MPLAB сообщения успешного подключения микроконтроллера к программатору по команде меню → Programmer → Reconnect показан на Рис. 27.
Рис. 27. Сообщение MPLAB об успешном подключении микроконтроллера к программатору.
Можно программировать не только отдельный PIC контроллер, но и контроллер, находящийся в составе рабочего устройства. Для программирования PIC контроллера в составе устройства необходимо предусмотреть установку перемычек и токоограничивающих резисторов как показано на Рис. 28 [3].
Рис. 28. Подключение микроконтроллера в составе электронного устройства к программатору.
Заключение
Малоразрядные PIC-контроллеры имеют широкий диапазон питания, низкое потребление и малые габариты. Они программируются на языках низкого уровня. Разработка программ на языке графического программирования Simulink с использованием многочисленных библиотек значительно сокращает время разработки и отладки в сравнении с программированием на уровне ассемблера. Разработанные для PIC-контроллеров Simulink структуры можно использовать и для компьютерного моделирования динамических систем с участием контроллеров. Однако, из-за избыточности кода такой подход применим только для семейств PIC контроллеров с достаточными ресурсами.
Автором данного программатора является немец Thomas Fichl, страничка его разработки со схемами, файлами печатных плат и драйверами.
Раз решено было собрать миниатюрный программатор, то перерисовал схему под микроконтроллер Atmega8 в корпусе TQFP32 (распиновка микроконтроллера отличается от распиновки в корпусе DIP):
Перемычка J1 применяется, в случае если необходимо прошить микроконтроллер с тактовой частотой ниже 1,5МГц. Кстати, эту перемычку вообще можно исключить, посадив 25 ногу МК на землю. Тогда программатор будет всегда работать на пониженной частоте. Лично для себя отметил, что программирование на пониженной скорости на доли секунды дольше, и поэтому теперь перемычку не дёргаю, а постоянно шью с ней.
Стабилитроны D1 и D2 служат для согласования уровней между программатором и USB шиной, без них работать будет, но далеко не на всех компьютерах.
Светодиод blue показывает наличие готовности к программированию схемы, red загорается во время программирования. Контакты для программирования выведены на разъем IDC-06, распиновка соответствует стандарту ATMEL для 6-ти пинового ISP разъема:
На этот разъем выведены контакты для питания программируемых устройств, здесь оно берется напрямую с USB порта компьютера, поэтому нужно быть внимательным и не допускать кз. Этот же разъем применяется и для программирования управляющего микроконтроллера, для этого достаточно соединить выводы Reset на разъеме и на мк (см. красный пунктир на схеме). В авторской схеме это делается джампером, но я не стал загромождать плату и убрал его. Для единичной прошивки хватит и простой проволочной перемычки. Плата получилась двухсторонняя, размерами 45х18 мм.
Разъем для программирования и перемычка для снижения скорости работы программатора вынесены на торец устройства, это очень удобно
Прошивка управляющего микроконтроллера
Итак, после сборки устройства осталось самое важное — прошить управляющий микроконтроллер. Для этих целей хорошо подходят друзья у которых остались компьютеры с LPT портом 🙂 Простейший программатор на пяти проводках для AVR
Микроконтроллер можно прошивать с разъема программирования, соединив выводы Reset микроконтроллера (29 нога) и разъема. Прошивка существует для моделей Atmega48, Atmega8 и Atmega88. Желательно использовать один из двух последних камней, так как поддержка версии под Atmega48 прекращена и последняя версия прошивки датируется 2009 годом. А версии под 8-й и 88-й камни постоянно обновляются, и автор вроде как планирует добавить в функционал внутрисхемный отладчик. Прошивку берем на странице немца. Для заливки управляющей программы в микроконтроллер я использовал программу PonyProg. При программировании необходимо завести кристалл на работу от внешнего источника тактирования на 12 МГц. Скрин программы с настройками fuse перемычек в PonyProg:
После прошивки должен загореться светодиод подключенный к 23 ноге микроконтроллера. Это будет верный признак того, что программатор прошит удачно и готов к работе.
Установка драйвера
Установка велась на машину с системой Windows 7 и никаких проблем не возникло. При первом подключении к компьютеру выйдет сообщение об обнаружении нового устройства, с предложением установки драйвера. Выбираем установку из указанного места:
Выбираем папку где лежат дрова и жмем Далее
Мигом появится окно с предупреждением о том, что устанавливаемый драйвер не имеет цифровой подписи у мелкомягких:
Забиваем на предупреждение и продолжаем установку, после небольшой паузы появится окно, сообщающее об успешном окончании операции установки драйвера
Все, теперь программатор готов к работе.
Khazama AVR Programmer
Для работы c программатором я выбрал прошивальщик Khazama AVR Programmer. Замечательная программка, с минималистичным интерфейсом.
Она работает со всеми ходовыми микроконтроллерами AVR, позволяет прошивать flash и eeprom, смотреть содержимое памяти, стирать чип, а также менять конфигурацию фьюз-битов. В общем, вполне стандартный набор. Настройка фьюзов осуществляется выбором источника тактирования из выпадающего списка, таким образом, вероятность залочить кристалл по ошибке резко снижается. Фьюзы можно менять и расстановкой галок в нижнем поле, при этом нельзя расставить галки на несуществующую конфигурацию, и это тоже большой плюс в плане безопасности.
Запись фьюзов в память мк, как можно догадаться, осуществляется при нажатии кнопки Write All. Кнопка Save сохраняет текущую конфигурацию, а Load возвращает сохраненную. Правда я так и не смог придумать практического применения этих кнопок. Кнопка Default предназначена для записи стандартной конфигурации фьюзов, такой, с какой микроконтроллеры идут с завода (обычно это 1МГц от внутреннего RC).
В общем, за все время пользования этим программатором, он показал себя с наилучшей стороны в плане стабильности и скорости работы. Он без проблем заработал как на древнем стационарном пк так и на новом ноутбуке.
Скачать файл печатной платы в SprintLayout можно по этой ссылке
Ну вроде все, если возникнут вопросы, постараюсь ответить.
Если вы не знакомы с 3D-печатью и видите ключевое слово Marlin, встречающееся на форумах, в социальных сетях и везде, возможно, вы задаетесь вопросом: а что это? Marlin — это БЕСПЛАТНАЯ прошивка с открытым исходным кодом, которая была запущена в 2011 году для 3D-печати. В Marlin Firmware удивительно то, что оно поддерживается, обновляется и улучшается сообществом разработчиков на Github. Это невероятно, и прошивка улучшается и развивается динамически, так как многие люди вносят свой вклад ежедневно.Поэтому, если вы хотите обновить прошивку вашего 3D-принтера, но никогда не устали или не знаете, как это сделать, вот руководство для начинающих marlin, которое поможет вам в этом.
Arduino IDE
Marlin сконфигурирован с использованием бесплатного программного обеспечения Arduino для разработки, являющегося платформой электронного прототипирования с открытым исходным кодом. Вы можете скачать последнюю версию программного обеспечения здесь.
Последняя версия
https://www.arduino.cc/en/Main/Software
Установите программное обеспечение на свой компьютер.
Есть несколько библиотек (драйверов), которые я хотел бы установить, чтобы устранить возможные ошибки компиляции. Думайте о них как о драйверах для компьютерной части, она расскажет программному обеспечению, как взаимодействовать с оборудованием. Это для некоторых различных экранов.
Для этого откройте программное обеспечение Arduino и перейдите в Sketch -> Включить библиотеки -> Управление библиотеками…
Откроется менеджер библиотеки Arduino.
Две библиотеки, которые я рекомендую установить:
Введите имя библиотеки в окне поиска и нажмите кнопку «Установить».После установки двух библиотек вы готовы открыть Marlin и начать настройку прошивки для работы с вашим 3D-принтером.
Загрузка прошивки Marlin
Сначала загрузите прошивку Marlin здесь: https://github.com/MarlinFirmware/Marlin
Загрузите ZIP-файл, нажав зеленую кнопку в правом верхнем углу.
Откройте файл Marlin-1.1.x.zip и извлеките папку, где вы хотите сохранить файл.
Переименуйте папку из Marlin-1.1.x к номеру стабильной сборки, который можно найти на странице загрузки github, показанной ниже.
В приведенном выше примере имя новой папки будет Marlin-1.1.4, это поможет вам отслеживать вашу версию и обновления, а также будет представлять собой рекомендации.
Настройка прошивки Marlin
Пример конфигурации
Прежде чем перейти к файлу Marlin.ino, есть несколько предварительно настроенных файлов, которые часто упускаются из виду при запуске с Marlin.
См. Папку \ Marlin-1.1.4 \ Marlin \ example_configurations в вашем каталоге. Здесь вы увидите список примеров конфигураций. Давайте представим, что мы настраиваем Delta Kossel Mini. Перейдите в папку с примером конфигурации \ example_configurations \ delta \ kossel_mini
Здесь вы можете увидеть 2 файла, которые были предварительно настроены для этого 3D-принтера;
Выберите и скопируйте эти 2 файла в основной каталог (\ Marlin-1.1.4 \ Marlin \) и перезапишите существующие файлы.
Это всего лишь пример, и его следует выполнять только в том случае, если вы знаете, что это ваша модель 3D-принтера.
Открытие файла Marlin.ino
В главном каталоге Marlin /Marlin-1.14/Marlin прокрутите вниз и найдите файл с именем Marlin.ino
Вы можете либо дважды щелкнуть по файлу, чтобы открыть файл, либо открыть программное обеспечение Arduino IDE и открыть его оттуда.
Теперь вы должны увидеть кучу текста и множество вкладок.
Настройки платы Arduino
Первое, что вам нужно сделать, это установить правильную плату, процессор и порт для материнской платы вашего 3D-принтера.Наиболее распространенный тип платы использует процессор Mega 2560, такой как RAMPS, RAMBO и другие чипы на базе Arduino.
Для настройки этих параметров перейдите в Инструменты -> Плата -> и выберите Arduino / Genuino Mega или Mega 2560
Убедитесь, что процессор ATmega2560 также выбран.
Далее вам нужно будет указать порт, к которому ваш 3D-принтер подключен к вашему компьютеру. Предполагая, что ваш 3D-принтер подключен к вашему компьютеру, вы можете найти этот порт в диспетчере устройств вашего компьютера.
Для ПК с Windows вы можете искать и открывать Диспетчер устройств и искать в раскрывающемся меню портов;
На изображении выше мы видим, что мой принтер подключен к COM4, поэтому в разделе Порт я выберу COM4
Если вы не уверены, какой из них является вашим 3D-принтером, просто отключите ваш 3D-принтер и посмотрите, какой порт исчезает. Затем подключите его снова, и вы знаете, что теперь это ваш номер порта.
Конфигурация
ч файл
Теперь мы можем наконец приступить к настройке marlin для вашего 3D-принтера. Вы заметите несколько вкладок вверху, основной из которых мы будем работать как новичок, это файл Configuration.h. Так что нажмите на эту вкладку, и мы начнем в нее.
@ информация по разделу
Обратите внимание, что это для начинающих, поэтому я просто коснусь основы некоторых основных пунктов для настройки и ознакомлю вас с макетом прошивки.Поэтому я буду выделять конкретные линии и области, которые являются только основами.
Прокрутите вниз до строки 113
Здесь нам нужно установить скорость передачи данных, с которой мы будем соединяться с основной платой. Это важно, поэтому обязательно ознакомьтесь с таблицей данных вашей материнской платы или зайдите в Google. в этом примере мы будем держать скорость передачи 250000
Линия 121 — #define MOTHERBOARD
Здесь нам нужно сообщить прошивке, какую MainBoard мы будем использовать.
По умолчанию в микропрограмме используется плата RAMPS 1.4, и для ее изменения необходимо знать «код» платы, которую вы будете использовать на своем 3D-принтере.
Чтобы найти это, найдите маленькую стрелку раскрывающегося списка в правой части вкладок и нажмите на board.h
Здесь вы увидите список плат и «кодов», скажем, мы будем использовать материнскую плату RAMBO. Выделите BOARD_RAMBO и скопируйте этот «код»
Теперь вернитесь к Конфигурации.Перейдите на вкладку h и вставьте этот код в поле BOARD_RAMPS_14_EFB по умолчанию.
Теперь вы правильно установили материнскую плату в Marlin.
, строка 126 — #define CUSTOM_MACHINE_NAME
Здесь вы можете выбрать название для вашего 3D-принтера. На изображении ниже я установил имя принтера как RAMBO Printer.
Убедитесь, что вы удалили обратную косую черту a.k.a comments « // », удаление комментариев активирует строку в прошивке.
Строка 136 — # определить EXTRUDERS
Здесь укажите количество экструдеров или отсеков, которые есть у вашего принтера. В этом руководстве мы будем использовать 1.
@ температура в секции
Строка 270 — #define TEMP_SENSOR
Здесь вам необходимо указать прошивке, какие термисторы используется в вашем 3D-принтере и сколько у вас есть. В приведенном ниже примере мы будем использовать самый распространенный термистор 100 КБ с «кодом» 1 из списка в приведенных выше строках в разделе «Настройки температуры».
На изображении выше я ввел «код» для 1 отеля и для кровати с подогревом.
@section Homing
Строка 475 — #define ENDSTOP_INVERTING
Этот раздел для вашего EndStop также известен как концевой выключатель. Изменяйте эти настройки только в том случае, если у вас возникли проблемы с подключением
Иногда концевой выключатель необходимо перевернуть, чтобы он был нормально разомкнут и замкнут при срабатывании. Обычно это требуется только для линий MIN, поскольку большинство принтеров не имеют переключателей MAX.Переключите эти настройки со значениями true или false, чтобы изменить способ переключения переключателей.
@section motion
Строка 512 — #define DEFAULT_AXIS_STEPS_PER_UNIT
Это действительно важная линия, и вы должны потратить время на то, чтобы научиться правильно калибровать этот параметр.
Я рекомендую посмотреть эти видео-пояснения от Dustin Corbin
Как откалибровать шаги 3D-принтера по MM
Как откалибровать экструдер для 3D-принтера в соответствии с MM
@ сечение зондов
Строка 610 — #define FIX_MOUNTED_PROBE
Для простоты предположим, что вы будете использовать фиксированный датчик и будете вручную регулировать поверхность печати.
Снимите комментарий «//», чтобы включить
Это сообщает микропрограмме, что у вас есть исправление endtop в статическом месте для команды Z-homing.
Я расскажу о выравнивании автоматической укладки и других функциях, связанных с датчиками, в другой статье.
@ секционная машина
Строка 729 — #define INVERT_DIR
В этом разделе вы можете контролировать направление вращения ваших шаговых двигателей. Измените их на true и false, чтобы изменить направление движения каждого двигателя.
То же самое можно сделать для двигателя экструдера в экструдере @section, где INVERT_E0 следует изменить, если у вас есть 1 экструдер.
@section Homing
Строка 759 — Пределы хода после возврата в исходное положение
Эти настройки сообщают принтеру, где находится каретка после команды возврата в исходное положение и куда она может перемещаться. Чтобы найти эти настройки, выполните команду home, а затем измерьте, как далеко ваше сопло hotend находится от печатной платы, и измерьте, как далеко оно может зайти.
Вот пример измерений от центра горловины сопла до зоны сборки. Единицы в мм всегда.
А вот пример того, как будут выглядеть измененные настройки.
В то время как в направлении оси X Hotend находится за пределами области сборки, ось Y расположена внутри области сборки, поэтому значения будут следующими.
X_MIN = -5
Y_MIN = 10
X_MAX = 205
Y-MAX = 210-10 = 200
@section lcd
Линия 1206 — #define SDSUPPORT
Если на вашей плате есть слот для SD-карты, удалите комментарий, чтобы включить эту функцию.
Линия 1277 — #define SPEAKER
Не комментируйте это, если у вашего ЖК-дисплея или платы есть встроенный динамик / зуммер
Линия 1290 и ниже — ТИП КОНТРОЛЛЕРА
На выбор предлагается множество различных контроллеров LCD и TFT.
Найдите вашу модель отображения и Un-Comment в этом примере мы будем использовать RepRapDiscount FULL GRAPHIC Smart Controller
Установка предыдущих библиотек, о которых мы говорили в начале этого руководства, поможет предотвратить ошибки компиляции и обязательно выберет только один дисплей.
Скомпилируйте прошивку Marlin
Теперь мы установили минимальную информацию, необходимую для запуска Marlin на вашей материнской плате.
Но прежде чем просто попытаться загрузить его, сначала проверьте правильность настроек, нажав на флажок в левом верхнем углу программного обеспечения.
Это скомпилирует эскиз и убедится, что оно готово для загрузки на чип вашей материнской платы.
Если все правильно, вы увидите готовую компиляцию.сообщение в нижнем командном окне.
Если вы получаете ошибки, сделайте все возможное, чтобы сообщить об ошибке в Google, или попробуйте применить другие настройки, чтобы устранить проблему.
В этом примере ошибки я включил 2 ЖК-дисплея, которые конфликтуют друг с другом;
После того, как вы успешно скомпилировали версию Marlin, нажмите кнопку загрузки и прошейте свою доску новой прошивкой!
Если вы не хотите читать это руководство, есть отличный видеоурок Томаса Санладерера, который я настоятельно рекомендую посмотреть.
Как настроить прошивку Marlin
Я надеюсь, что вы нашли это руководство полезным, и оно поможет вам начать работу с прошивкой Marlin. Если вы нашли эту статью интересной, пожалуйста, поделитесь и прокомментируйте ниже. Не стесняйтесь размещать любые свои вопросы и идеи по поводу прошивки Marlin. Удачной печати!
Ищете Марлин 2.0? Проверьте этот новый пост!
Marlin 2.0 Руководство по прошивке 3D-принтера
,Микроконтроллеры— Руководство для начинающих
Microcontroller. Руководство для начинающих. Введение в интерфейс ЖК-дисплея Crystal Display)
Микроконтроллер — замечательный инженерный проект, и он может делать много вещей (с помощью некоторого отличного программирования), но это все еще непрозрачный черный ящик. Если вы хотите, чтобы оно делилось информацией или показывало, что оно пытается сделать, вам нужно подключить (интерфейс) устройства вывода.Устройство вывода — это то, что позволяет отображать информацию из микроконтроллер. То есть устройство вывода позволяет микроконтроллеру «выводить» информацию на «устройство». Мы уже работали с другим устройством вывода, называемым светодиодом (Light Emitting Diode), который испускает свет при программировании это сделать так. Мы подробно рассмотрим взаимодействие и программирование ЖК-дисплея (жидкокристаллический дисплей).
ЖК-дисплей является гораздо более информативным устройством вывода, чем один светодиод.ЖК-дисплей является дисплей, который может легко показывать символы на своем экране. LCDs ассортимент по размеру, цене и конфигурация, от пары строк до больших дисплеев. Некоторые даже очень специально разработан для одного приложения, имея только эту способность отображать установленную графику. Мы будем использовать ЖК-дисплей, который имеет возможность отображать четыре (4) строки символов, длина строки которых составляет 20 символов. Этого вполне достаточно показать совсем немного информации.Еще один популярный ЖК-дисплей имеет 2 строки и 16 символов за строку
В этом видеоуроке мы рассмотрим, как ЖК-дисплей получает информацию и управление, и требования, чтобы убедиться, что информация отправляется на ЖК-дисплей в пути что он может надлежащим образом принять информацию. Итак, что все это значит?
Во-первых, мы имеем несоответствие скорости между ЖК-дисплеем и микроконтроллером. Микроконтроллер намного быстрее, чем ЖК-дисплей, поэтому программа микроконтроллера должна быть полностью осведомленным об этом и компенсировать время, в течение которого ЖК-дисплей занят работой о вещах, которые ты сказал это только что. К счастью, ЖК-дисплей может сообщить нам об этом заняты положение дел. Итак, мы создадим функцию ожидания, пока ЖК-дисплей не будет занят. Для ЖК-дисплей для приема информации от микроконтроллера или для предоставления информации, мы должны включать и выключать его разрешающий контакт, пока информация для LCD принять.
Так сейчас самое время поговорить о выводах на ЖК-дисплее. Самый основной из контакты — это контакты питания для дисплея, чтобы он мог функционировать в первом место. Имеется вывод VDD на 5 вольт и вывод VSS для заземления. Есть пин V0 для регулировки контрастности ЖК-дисплея. Некоторые ЖК-дисплеи даже имеют светодиодную подсветку и как правило, последние два пина.
Так же, как и микроконтроллер, ЖК-дисплей имеет ряд из 8 контактов, которые служат его портом.Контакты, которые служат его портом, это D0, D1, D2, D3, D4, D5, D6 и D7. Эти булавки обычно используются для передачи информации на ЖК-дисплей, но также могут быть установлены для передачи информация возвращается в микроконтроллер. Я знаю, вы, вероятно, думаете, «но Патрик (это я) сказал мне, что это устройство вывода?!? «. Ну, конечно, это так, но время от времени ему нужно будет информировать вас о своем состоянии (если он занят или нет). Через эти контакты можно передавать два типа информации: данные для отображения на ЖК-экран или управляющая информация, которая используется для выполнения таких задач, как очистка экран, управление положением курсора, включение или выключение дисплея и т. д.Эти контакты данных подключаются к контактам нужного порта микроконтроллера. Например, если вы хотите, чтобы ЖК-дисплей был подключен к PORTB, D0 был бы подключен к контакту 0 порта B и: D1-порт B, контакт 1, D2-портB, контакт 2, D3-портB, контакт 3, D4-порт B, контакт 4, D5-PortB Pin5, D6-PortB Pin6 и D7-PortB Pin7. Таким образом, есть пин-код согласованность, и если вы передаете символ в виде шестнадцатеричного числа, LCD примет это правильно.Если нет, то будут неожиданные результаты, если только Вы используете уникальную форму байтовой структуры, но не позволяйте этому мешать.
На ЖК-дисплее имеются другие контакты, которые помогают ЖК-дисплею принимать информацию , и сообщает ЖК-дисплею о получении символа или элемента управления , или контролирует чтение или запись (вход или выход) функция контактов . Просто чтобы уточнить, чтение / запись ориентирован на микроконтроллер: режим чтения «LCD» — это процесс передачи информации от ЖК-дисплея к микроконтроллеру (порт микроконтроллера установлен как вход или чтение или слушаю).; ЖК-режим «записи» передает информацию с микроконтроллера на ЖК-дисплей (микроконтроллер установлен для вывода или записи).
Вывод на ЖК-дисплее, отвечающий за состояние чтения и записи, помечен как R / W. Пин-код на ЖК-дисплее, который отвечает за то, является ли отправленная информация символом или контроль, это вывод RS (выбор регистра). И булавка, которая помогает ЖК принять Информация называется контактом EN (Включить).
Есть три основных вещи, которые вы хотите сделать с ЖК-дисплеем для правильного функционирования (более сложные функции могут быть выполнены с этими тремя основными процедурами): (1) убедиться, что ЖК-дисплей не занят; (2) Управление курсором ЖКД или функцией отображения; и (3) записать символ на ЖК-дисплей для его отображения. Каждый из них потребует свой собственный процесс:
(1) Проверка, занят ли ЖК-дисплей (Если вы пытаетесь отобразить символ на ЖК-дисплее во время ЖК-дисплей занят, тогда ЖК-дисплей просто проигнорирует символ и не будет отображаться).
- Мы настроили порт для приема данных на микроконтроллере (направление данных в качестве входных данных).
- переводим LCD в режим чтения (RW включен).
- переводим ЖК в командный режим (RS выключен).
- И теперь порт волшебным образом содержит данные с ЖК-дисплея (вывод D7 будет включен, если ЖК-дисплей занят и выключен, если он не занят).
(2) Отправить команду на ЖК-дисплей
- Проверяем, занят ли ЖК-дисплей (Выполните шаги, описанные в пункте 1 выше).
- Мы устанавливаем направление порта в качестве вывода, чтобы мы могли отправлять информацию на ЖК-дисплей.
- Мы выключаем RW, чтобы мы могли писать.
- Отключаем RS для командного режима.
- Мы запускаем линии данных с помощью команды, которую мы хотим (просто делая порт равным на номер, который ассоциируется с конкретной командой).
- Включаем, а затем выключаем.
- ЖК-дисплей волшебным образом выполнит команду.
(3) Отправить символ на ЖК-дисплей: это то же самое, что отправить команду, кроме RS включен, и порт будет соответствовать символу, соответствующему коду ASCII.
Итак, мы на самом деле просто включаем и выключаем контакты, как мы это делали со светодиодами из прошлые уроки. Это так просто. Единственный улов в том, что они должны быть сделано в правильной последовательности.
,*** Новый эксклюзивный учебник ***
Получите знания первым. Узнайте подробно, как общаться и программировать I2C / TWI (двухпроводной интерфейс). С этим видео вы станете экспертом и сможете создавать свои собственные библиотеки.
Учебное пособие по микроконтроллерудля начинающих
Если вы новичок и хотите получить знания о микроконтроллерах, вы можете найти что этот учебник идеально подходит.Этот учебник исследует различные использование и особенности популярного микроконтроллера AVR Atmega32. Обучающие шоу реальные программы пишутся и объясняются при разработке схем. Базовый и средний Концепции и использование программирования также предоставляются по пути. Через много Например, вы можете быть экспертом по встроенным системам в кратчайшие сроки.
Микроконтроллер — Введение
Изучите основные функции микроконтроллера AVR Atmega32 и некоторую информацию об использовании каждого контакта.Программирование чипа (получение программы на чипе) также кратко объяснено.
MCU Программист 1
Мы пачкаем руки и создаем удобный маленький интерфейс для ключа программиста к соответствующим контактам микроконтроллера.
MCU Programmer 2
Драйвер для программатора, который используется для передачи кода на микроконтроллер, установлен.Процесс установки совместим с операционной системой Windows 7, а также с предыдущими версиями Windows.
MCU WinAVR Установить
Драйвер и интерфейс готовы, но для написания программ и передачи их в микроконтроллер необходима среда программирования. В этом руководстве мы создали среду программирования AVR-GCC, которая называется winavr.
MCU добавить светодиод и проверить
Узнайте больше, чем вы, возможно, хотели бы знать о светодиоде (светоизлучающем диоде) и о том, как подключить его к микроконтроллеру.
Первая программа MCU
Напишите первую программу для микроконтроллера, которая будет что-то делать со светодиодом, и перенесите ее на микроконтроллер.Это настоящий тест, чтобы увидеть, все ли предварительные настройки работают.
MCU светодиод мигает
Мы углубимся в программирование микроконтроллеров и заставим светодиод мигать.
Установка Atmel Studio 6
Узнайте, как установить Atmel Studio 6 и настроить функции программирования микроконтроллера.
MCU Добавить кнопку
В этом уроке мы добавляем возможность взаимодействия человека с микроконтроллером. Добавлена кнопка для изменения скорости мигания на светодиоде.
Кнопка Debouncing
Очень важный вопрос, который должен быть решен с помощью кнопок и как они взаимодействуют с микроконтроллером.
Программное обеспечение Debounce
Мы продолжаем работу с кнопкой «debouncing», но на этот раз у нас есть программа микроконтроллера, которая выполняет функцию «debouncing» в программном обеспечении.
Кнопка игры
Теперь мы выводим светодиоды и кнопки на совершенно новый уровень и создаем игру с помощью микроконтроллера.
Создание библиотеки кнопок
Абстрагирование кода кнопки и программного обеспечения в библиотеку, делающее программирование основного микроконтроллера более компактным.
Таймеры Счетчики Базовые
тик, тук, тик тук.Узнайте, как микроконтроллер считает и раз. Узнайте, как запрограммировать микроконтроллер для управления таймером и счетчиком.
Введение в прерывания
Это где перерывы хорошие манеры и даже желательно. Мы прерываем подпрограммы из событий в микроконтроллере и создаем программы микроконтроллера для обработки событий.
Интерфейс LCD
Отличный способ увидеть, что происходит, жидкокристаллические дисплеи обеспечивают информативный способ вывода данных с микроконтроллера.
Первая ЖК-программа
Мы знаем все, что нужно знать о внутреннем функционировании ЖК-дисплея и о том, как нам нужно взаимодействовать с ним через микроконтроллер. В этом уроке мы подключаемся и пишем первую программу для микроконтроллеров, которая отображает некоторые символы на ЖК-дисплее.
ЖК-дисплей и струны
В предыдущем уроке по первой программе для ЖК-дисплея мы могли отображать только отдельные символы.Конечно, это было хорошее начало и относительно простая реализация, но мы можем добиться большего. На этот раз мы запрограммируем микроконтроллер для отображения строк (один или несколько символов) одновременно.
Цифры на ЖК-дисплее
Отображение чисел на ЖК-дисплее, вероятно, является наиболее полезным способом использования ЖК-дисплея и просмотра того, что происходит в микроконтроллере. Этот урок покажет, как преобразовать целую переменную или любое другое число в строку, чтобы мы могли отобразить ее на ЖК-дисплее.
Разделение ЖК-кода
Пришло время снять загромождение кода main.c и получить все функции LCD в их собственную библиотеку, чтобы main.c был более читабельным. Это сделает программирование для микроконтроллера намного веселее.
Функция для отображения целых чисел
Создайте новую функцию в библиотеке MrLCD для отображения целого числа и в указанном месте.Программирование для микроконтроллера будет немного более читабельным, и общее количество строк кода для основной программы микроконтроллера будет уменьшено.
Источники энергии
Вы задаетесь вопросом, как включить микроконтроллер без помощи USB-порта компьютера? В этом руководстве показано использование батарей, настенного адаптера или порта USB для питания микроконтроллера.
Изготовление разъемов
Проверьте этот удобный способ подключения периферийных устройств к микроконтроллеру с помощью заголовков.
потенциометры
Вы действительно знаете, как работает потенциометр? Вы знаете, как сделать это супер крутой делитель напряжения? Узнайте, как использовать потенциометр для получения переменного напряжения, чтобы его можно было использовать в АЦП (аналого-цифровой преобразователь) на микроконтроллере.
Введение в АЦП
Узнайте, как работает АЦП (аналого-цифровой преобразователь), и несколько советов о том, как сохранить аналоговый сигнал и свой микроконтроллер.
ADC — Первая программа
Давайте напишем нашу первую программу АЦП и пусть микроконтроллер будет считывать напряжение с потенциометра.
АЦП и 10-бит
Увеличьте разрешение АЦП микроконтроллера, захватив 10-битный результат (результат, который будет в диапазоне 0-1023).
Акселерометры / АЦП
Познакомьтесь с акселерометрами и узнайте, как конкретная разновидность связана с микроконтроллером.
Измерить шум АЦП
Вы постоянно получаете шум АЦП, и это сводит вас с ума? Из этого туториала вы узнаете, как измерить этот шум, и увидите падение измерений при применении методов шумоподавления к сигналу и микроконтроллеру.
АЦП несколько каналов
Итак, одного датчика или устройства, подключенного к АЦП микроконтроллера, недостаточно? Что ж, посмотрим, как использовать другие каналы АЦП.
Введение в Хобби Сервос
Приведите в движение сервоприводы и будьте готовы научиться взаимодействовать между этими устройствами и микроконтроллерами.
Введение в ШИМ
Изучите детали ШИМ (широтно-импульсная модуляция) и посмотрите, что нам нужно знать, чтобы мы могли начать вывод ШИМ-сигналов с микроконтроллера на различные устройства.
Управление сервоприводом с помощью ШИМ
Теперь, когда мы поняли некоторые концепции ШИМ, давайте управлять сервоприводом с микроконтроллера! Мы погрузимся в суть настоящего понимания ШИМ и того, как ШИМ сможет контролировать рупор хобби-сервопривода.
UART и USART Подробности
Использование микроконтроллера для связи с функциями UART и USART.
UART One Way Comm.
Использование UART для связи от передающего микроконтроллера к принимающему микроконтроллеру.
Программирование I2C (Эксклюзив)
Получите подробные инструкции о том, как кодировать I2C / TWI (двухпроводной интерфейс) с помощью микроконтроллера Atmega 324p.В этом эксклюзивном видео мы будем общаться с акселератором ADXL.
,Начало работы с микроконтроллером 8051
Если вы ищете руководство для начинающих по « Как начать с микроконтроллера 8051 », здесь, в этой статье, я покажу вам, как работать с микроконтроллером 8051 практически. Я не буду вдаваться в подробности «Что такое микроконтроллер 8051» или «Как написать c-программу» и т. Д., Но цель этой статьи — рассказать об аппаратном и программном обеспечении, которое необходимо для работы с микроконтроллером, и о том, как использовать их.
Но прежде чем углубляться в детали, мы можем кратко подвести итог о микроконтроллере 8051.Это 40-контактное устройство, и имеет 4 порта, каждый порт состоит из 8 контактов, значит 4X8 = 32 контакта. Эти контакты используются для ввода / вывода, некоторые контакты имеют две функции, такие как таймер, прерывания и т. Д. Среди этих 32 контактов два контакта предназначены для питания и заземления (контакты 40 и 20), два контакта для подключения кварцевого генератора (контакт 18). , 19), 3 контакта для подключения внешней памяти (контакты 29, 30, 31) и один контакт для функции сброса (контакт 9).
Имеет два типа памяти RAM и флэш-память (EEPROM), они имеют разные размеры в зависимости от микроконтроллера, например, RAM составляет 256 байт, а флэш-память 8K для AT89S52.Изучив эту статью, вы можете перейти к разделу «Взаимодействие светодиодов с микроконтроллером 8051», чтобы получить представление о микроконтроллере 8051.
IDE для программирования
Я предполагаю, что вы знакомы с основными электронными компонентами, проводами, макетом, аккумулятором и т. Д., Поэтому я непосредственно направляюсь к микроконтроллеру 8051.
Теперь сначала нам нужна программа на C для запуска микроконтроллера, чтобы мы могли ее запрограммировать, и она будет работать в соответствии с программой.Таким образом, нам нужен IDE (интегрированная среда разработки) для написания и компиляции программы, есть много редактора доступен, но неоспоримо лучший IDE является «Keil uVision IDE». В Keil Uvision вы можете писать, компилировать, отлаживать и запускать программы. Есть шаги, чтобы использовать Keil Uvision:
- Загрузите последнюю версию keil uvision4 и установите программу.
- Перейдите в Проект и выберите «Новый проект uVision», дайте ему имя и сохраните его. С левой стороны вы найдете структуру папок «Целевая группа 1» и «Исходная группа 1».
- Щелкните правой кнопкой мыши на цели 1, выберите «Параметры для целевой цели 1», щелкните вкладку «Вывод» и установите флажок «Создать HEX-файл», затем нажмите кнопку «ОК».
- Щелкните меню «Файл» и выберите «Создать», напишите программу c и сохраните ее с расширением .c, например «led_blinking.c» (обычно в той же папке, в которой мы создаем проект uVision)
- Щелкните правой кнопкой мыши «Исходная группа 1», выберите «Добавить файлы в исходную группу 1», выберите файл программы c и нажмите «Добавить», затем нажмите «Закрыть».
- Теперь перейдите в меню «Проект» и нажмите «Перестроить все целевые файлы» или нажмите кнопку, как показано на рисунке выше. В окне вывода вы можете проверить наличие ошибок и предупреждений. Он также создает файл HEX в той же папке, что и файл программы c. Нам нужен этот HEX-файл для программирования микросхемы 8051, как описано в следующем разделе.
Итак, в конце этого раздела у нас есть HEX-файл программы c, который мы хотим запустить через микроконтроллер 8051.
Сжигание микроконтроллера 8051
Это также называется « Программирование микроконтроллера » или «передача программы в микроконтроллер».Здесь следует отметить, что микроконтроллер не понимает язык c-программы или язык высокого уровня, поэтому нам нужен HEX-файл. HEX файл на языке машинного уровня, который понимает микроконтроллер. Для этого мы проверили «Создать HEX-файл» на шаге 3 выше, чтобы сгенерировать HEX-файл. Теперь у нас есть HEX файл и 8051 чип, но как его перенести? Для этого нам понадобится аппаратное обеспечение, которое называется «Burner» или «Programmer» .
На рынке доступно много типов горелки , и мы можем также построить это, вы можете найти много учебников в Интернете на тему «Создание горелки 8051».Но если вы новичок, я рекомендую вам покупать, а не строить. Они доступны на рынке по разумной цене (от 5 до 10 долларов). ISP ( In System Programming ) — это простой и лучший способ программирования микроконтроллера. В программаторе ISP вам не нужно каждый раз вынимать микроконтроллер из макета для его программирования.
Очень легко подключиться к микроконтроллеру 8051, просто подключите линию MOSI (ввод данных) к MOSI 8051, линию MISO (вывод данных) к MISO и т. Д., Как показано на схеме ниже.Он может быть подключен через кабель ISP. И подключите USB-кабель к компьютеру.
Итак, после всех подключений, как мы передадим код в микроконтроллер? Для этого нам понадобится программа Burner , которая будет записывать флэш-память на 8051 чип. Есть много доступных программ, таких как Flash magic, ProgISP и т. Д. Я рекомендую ProgISP, ниже приведен снимок программного обеспечения ProgISP. Вот шаги, чтобы сжечь:
- Скачайте ProgISP и установите драйверы, запустите.EXE-файл.
- Установите флажки в соответствии с диаграммой.
- Выберите свой чип из выпадающего списка «Select Chip»,
- В меню «Файл» выберите «Загрузить Flash», выберите файл HEX, нажмите «Открыть», .
- И, наконец, нажмите кнопку Авто в ProgISP. Это сожжет вашу программу в чип.
Помните, что значок PROGISP должен быть активным, если он неактивный или серый, это означает, что драйверы не были установлены должным образом или есть какая-то проблема.
У вас могут возникнуть проблемы с установкой драйвера в Windows 7, Vista и 8, вы можете найти решение здесь.Или вы можете использовать другое программное обеспечение для записи микроконтроллера 8051.
Что дальше?
Как только вы начнете работать с микроконтроллером 8051, начните работать над некоторыми проектами микроконтроллеров 8051. Вот несколько экспериментов для начинающих:
— светодиодный интерфейс с микроконтроллером 8051
— 7-сегментный дисплей, взаимодействующий с 8051
— ЖК-интерфейс с 8051
,