С чего начать знакомство микроконтролерами

AVR для начинающих.Уроки программирования AVR. | preminfranop.ga

Микроконтроллеры семейства AVR. Урок 0.Знакомство с микроконтроллерами. Начать работу с ними достаточно просто. С чего начать знакомство с программированием МК Микроконтроллеры мне будут нужны по работе ради развития моих инженерных. Почему-то именно среди программистов микроконтроллеров большой процент Но начинать с svn сейчас, пожалуй, уже не стоит:).

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

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

Пора определиться с задачей.

С чего начать? программирование микроконтроллеров

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

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

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

Так же есть SRAM — оперативная память. Ядро — часть микроконтроллера, осуществляющая выполнение одного потока команд. В нашем МК тип ядра — Cortex-M4.

Ядро МК можно сравнить с процессором в ПК. Оно умеет только выполнять команды и передавать данные другим блокам в этом сравнении не учитываются процессоры с интегрированными графическими ускорителями. При этом производитель МК не разрабатывает ядро. Ядро покупается у компании ARM Limited. Главное отличие между различными МК — в периферии. Периферийные блоки предназначены для решения различных задач, от считывания значения напряжения с аналогового входа МК до передачи данных внешним устройствам по шине SPI.

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

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

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

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

Запись данных по адресу в памяти Предположим, что читая описание периферийного блока, мы поняли, что для его корректной работы необходимо записать в него число 0x3B. Если вы сразу не знаете как это сделать, попробую описать цепочку рассуждений для получения правильной команды. Значение 0x есть не что иное, как значение указателя на ячейку памяти. Нужно именно это и указать в нашей программе, тоесть сделать преобразование типов согласно синтаксису языка C: Теперь нужно в этот элемент записать необходимое значение.

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

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

Язык си, среда IAR. Всё доступно, было бы желание. Можно конечно же начать с азмов и авр или там 51 серии, но когда дойдёте до хотелок типа юсб или изернета - вы поймёте что выросли из пелёнок и надо будет начинать многое заново. Мною был проведен эксперимент: Результат — через 5 минут он сам нашел все нужные значения, абсолютно без моего участия, без знания английского.

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

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

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

Каждый раз задавайте себе эти вопросы, это очень хорошо помогает продвигаться в обучении. Например, изучите интерфейсы 1wire, i2c, spi, uart, а потом подумайте чем они отличаются, можно ли было сделать лучше, это поможет осознать почему все именно так, а не. Так же вы будете осознавать, когда и какой лучше применить. Не ограничивайтесь в технологиях. Важно что этот совет имеет очень тонкую грань. Формально у меня не было целей изучать ПЛИСины, но и пройти мимо было никак.

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

Знакомство с микроконтроллерами, с чего начать? — preminfranop.ga

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

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

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

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

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

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

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

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