Программирование микроконтроллеров: Программирование микроконтроллеров — Учимся программировать микроконтроллеры / Хабр

Содержание

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

1) Atmel Studio

2) CodeVisionAVR

3) WinAVR

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

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

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

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

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

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

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

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

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

1) Atmel Studio

2) Datasheet на ATmega8

3) Proteus

4) AVRDUDE

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

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

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

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

1) Atmel Studio

2) Datasheet на ATmega8

3) Proteus

Скачать AVRDUDE

Скачать datasheet ATmega8

Скачать Atmel Studio

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

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

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

Что такое микроконтроллер?

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

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

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

Программирование микроконтроллеров. Компоненты

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

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

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

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

Принципы программирования микроконтроллеров

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

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

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

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

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

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

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

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

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

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

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

  • низкого уровня
  • высокого уровня

Языком низкого уровня является Ассемблер. Здесь каждому оператору соответствуют не более одной машинной команды. Такой язык программирования очень громоздкий и нелегко понимается для человека. Тем не менее, альтернативы ему на данный момент практически нет, например, когда в процессе программирования микроконтроллера имеются ограниченные ресурсы, такие как 8-ми битные модели с ограниченным объемом памяти. Также данный язык обеспечивает достаточно большое быстродействие и компактность программного кода, что зачастую является немаловажным фактором.

К языкам высокого уровня можно отнести такие языки программирования микроконтроллеров, как PL/M, C/C++, Java, Pascal, Basic и другие. При работе с такими языками происходит увеличение производительности за счет замены одного оператора несколькими машинными командами. Языки программирования высокого уровня требуют больших затрат памяти, так как объем такой программы достаточно большой. Преимущество их использования, это возможность работы программы на различных микропроцессорах, при использовании программ-трансляторов.

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

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

Наиболее популярными средами программирования микроконтроллеров являются: FlowCode(практически единственная среда, позволяющая программировать сразу несколько видов микроконтроллеров PIC, AVR, ARM),AlgorithmBuilder (графическая среда программирования AVR микроконтроллеров),CodeVisionAVR, IAR Systems, CodeComposerStudio (CCS), Energia, Virtualbreadboard, FlashMagic, MPLAB, WinAVR, AtmelStudio.

Цифровая электроника и программирование микроконтроллеров (Ардуино)

Цифровая электроника и программирование микроконтроллеров (Ардуино)

— 13-17 лет — 2 год(а)
Цифровая электроника и программирование микроконтроллеров (Ардуино)

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

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

В результате прохождения курса, ребята научатся:  cобирать на макетной плате и программировать несложные электронные устройства на основе контроллера Ардуино и распространенных датчиков. Самостоятельно находить и изучать документацию на незнакомые внешние устройства (модули). Находить, устанавливать и использовать библиотеки программ для работы с конкретным устройством. Используя знания, полученные на курсе 3D-конструирования, создавать и изготавливать корпуса и механические узлы для электронных изделий.  Используя знания, полученные на курсе «Робототехники»,  создавать на базе контроллера Ардуино роботов для участия в соревнованиях.  Проектировать и изготавливать несложные печатные платы для  электронных самоделок. Объяснять и обосновывать использованные технические и программные решения. Уметь разработать и изготовить электронную игрушку, электронную «начинку» для моделей, изготавливаемых в рамках других технических объединений.

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

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

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

Рекомендуется: до прохождения данного курса, обучающимся очень полезно (но не обязательно) знать основы программирования на любом текстовом или графическом языке (хотя бы на уровне понимания, что такое переменная, массив, циклы и условные операторы).  Параллельно с этим курсом или после него, пройти традиционный курс программирования на ПК, на любом текстовом языке программирования, например «Школа программирования в среде Delphi»

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

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

Рекомендуетсядо, после или параллельно с данным курсом, пройти курс «Основы радиоэлектроники».

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

Рекомендуетсядо или параллельно с данным курсом, пройти курс «Основы радиоэлектроники» либо обучаться пайке самостоятельно.

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

Рекомендуется: до или параллельно с данным курсом, пройти курс «Инженерное 3D-моделирование и прототипирование».

Робототехника: в рамках данного курса изучается использование всех основных видов датчиков и актуаторов (приводов), используемых в образовательной робототехнике. Однако задачи и алгоритмы, характерные для образовательной/соревновательной робототехники (регуляторы, следование по линии, захват и перемещение объектов, прохождение лабиринта) подробно не рассматриваются.  При наличии предварительной подготовки по робототехнике, обучающийся должен быть в состоянии самостоятельно создать и запрограммировать робота для участия в соревновании.  Такие проекты приветствуются, но не входят в обязательную программу курса.

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

 

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

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

Термин программирование микроконтроллеров обозначает процесс записи (программирования) информации в постоянное запоминающее устройство (ПЗУ) микроконтроллера. Помимо программирования микроконтроллеров, в практике встречается программирование микросхем  памяти и программирование логических матриц.  Как правило, программирование микроконтроллеров и микросхем памяти производится при помощи специальных устройств – программаторов. Хороший программатор позволяет не только программировать (записывать), но и считывать информацию, а в ряде случаев, производить и другие действия (стирание, защита от чтения, защита от программирования и т.п.).

Используя различные признаки, все многообразие устройств со встроенным ПЗУ можно систематизировать следующим образом:

1.  

По функциональному назначению

1.1.   Микросхемы памяти;

1.2.   Микроконтроллеры с внутренним ПЗУ;

1.3.   Микросхемы программируемой логики (программируемые матрицы).

2.  

По возможности программирования

2.1.   Однократно программируемые — устройства допускающие единственный цикл программирования;

2.2.   Многократно программируемые (перепрограммируемые) — устройства допускающие множество циклов программирования (перепрограммирования). 

3.  

По допустимым способам программирования

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

3.2.   Микрocхeмы, поддерживающие режим внутрисхемного программирования (“ISP mode”), и программируемые непосредственно в плате пользователя.
Подобные микрocхeмы предполагают выполнение необходимой операции (программирование, стирание, чтение, верификация и т.п.) непосредственно в плате пользователя. Все действия по программированию производятся с помощью внешнего программатора, определенным образом подключенного к плате пользователя. При этом плата пользователя должна быть разработана с учетом специфических требований данного режима.

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

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

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

Некоторые программируемые микроконтроллеры не имеют отдельного режима «стирание». Для них стирание прежней информации в памяти происходит в теневом режиме, при каждом новом цикле программирования микроконтроллера; 

Некоторые программируемые микроконтроллеры поддерживают различные режимы ограничения доступа. Выбор режима ограничения доступа производится при программировании микроконтроллера. В зависимости от выбранного режима, либо все ПЗУ микроконтроллера, либо его определенные части могут быть:

  1. — защищены от возможности записи/дозаписи;
  2. — защищены от возможности считывания содержимого извне. При попытке считать информацию, защищенный микроконтроллер будет выдавать либо «мусор», либо «все 0», либо «все 1».

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

  1. PROM (Programmable Read-Only Memory) — программируемая пользователем энергонезависимая память (ПЗУ).
  2. EPROM (Erasable Programmable Read-Only Memory) — перепрограммируемое ПЗУ. Стирание содержимого производится при помощи ультрафиолетовых лучей, после облучения подобное ПЗУ готово к новому циклу записи информации (программированию). Устаревший тип памяти.
  3. EEPROM (Electrically Erasable Programmable Read-Only Memory) — электрически стираемое перепрограммируемое ПЗУ. Память такого типа может стираться и заполняться данными многократно, от несколько десятков тысяч раз до миллиона.
  4. FLASH (Flash Memory) — одна из технологических разновидностей энергонезависимой перезаписываемой памяти.
  5. NVRAM (Non-volatile memory) — «неразрушающаяся» память, представляющая собой ОЗУ со встроенным источником электропитания. По своей функциональности для пользователя – аналогична традиционному ПЗУ.
  6. PLD (Programmable Logic Device) — Программируемая логическая интегральная схема. (ПЛИС).
  7. MCU (Microcontroller Unit) – микроконтроллер.

main

main

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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


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


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

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

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

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

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

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

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

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

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

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

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

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

Россия.

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

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

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

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

Россия.

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

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

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

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

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

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

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

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

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

Продолжительность курса

Курс «Программирование микроконтроллеров» читается для студентов 2 курса в течение осеннего и весеннего семестров. Занятия проводятся один раз в неделю в течение 4 академических часов (5 и 6 пары).

Учебная нагрузка — 60 часов/семестр.

Оборудование

Обучение производится на микроконтроллерах STM32F429.

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

STM32F429I-DISCOVERY

Программа курса (осенний семестр)
Базовая часть
Тема 1. Введение. Программирование микроконтроллеров на языке С

Теория. Микроконтроллеры. Функции и применение микроконтроллеров. Основные параметры микроконтроллеров. Архитектура микроконтроллеров. Семейства микроконтроллеров ARM и их назначение. Устройство микроконтроллеров. Ядра Cortex-M0/M3/M4F. Периферийные блоки микроконтроллеров: ввод-вывод общего назначения, тактирование, таймеры, прерывания.

Язык С для микроконтроллеров ARM. Особенности разработки программ для микроконтроллеров по сравнению с программированием для ПК. Ввод и вывод. Адресация. Двоичное и шестнадцатеричное счисления. Среда программирования IAR EWARM. Возможности отладки программ.

Практика. Создание и настройка проекта в среде IAR. Создание прошивки, осуществляющей работу с блоком ввода-вывода общего назначения. Работа с технической документацией (поиск адресов аппаратных регистров, работа с принципиальной схемой тестовой платы).

Тема 2. Прерывания

Теория. Прерывания. Виды прерываний. Контроллер прерываний NVIC в ядре Cortex-M. Вектора прерываний. Приоритеты. Флаги прерываний в контроллерах STM. Рекомендации по написанию обработчиков прерываний.

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

Тема 3. Таймеры

Теория. Таймеры. Виды таймеров. Режимы работы таймеров. Измерение малых промежутков времени. Система тактирования микроконтроллера и методы её настройки.

Практика. Разработка программы для периодического вывода сигналов с использованием таймера и делителей частоты. Измерение параметров сигналов с помощью цифрового осциллографа.

Тема 4. Широтно-импульсная модуляция

Теория. Широтно-импульсная модуляция. Применение ШИМ для управления электронными устройствами. Особенности реализации ШИМ на микроконтроллере. Сглаживание. Специальные режимы работы таймеров.

Практика. Разработка программы для генерации ШИМ сигнала с заданными параметрами.

Тема 5. Цифро-аналоговые и аналого-цифровые преобразования

Теория. АЦП и ЦАП.  Частота дискретизации и разрядность. Основные виды АЦП (АЦП прямого преобразования, АЦП последовательного приближения, сигма-дельта АЦП) и их характеристики. Режимы запуска АЦП. Дифференциальный режим измерения. Алгоритмы усреднения измеряемых величин: скользящее среднее и экспоненциальное усреднение. Библиотека для работы с периферийными блоками HAL Driver.

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

Тема 6. Обмен данными

Теория. Последовательные и параллельные интерфейсы. UART. Принцип работы шины UART, протокол передачи данных. События блока UART на микроконтроллерах STM32. Протоколы SPI и I2C, их принципы работы. Концепция ведущий-ведомые.

Практика. Разработка прошивки для микроконтроллера, осуществляющей приём и отправку данных по UART. Освоение программного обеспечения для работы с COM-портами на ПК.

Тема 7. Флеш-память

Теория. Принцип работы ячейки флеш-памяти (транзистор с плавающим затвором, чтение и запись данных). NOR и NAND конструкции флеш-памяти. Многоуровневые ячейки. Особенности работы с флеш-памятью из программ.

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

Дополнительные темы (читаются по усмотрению преподавателя)
Тема Д1. Дисплеи

Теория. Виды дисплеев. Электронно-лучевые трубки (принцип работы, развёртка). Жидкокристаллические дисплеи (принцип действия ЖК ячейки, устройство мониторов, адресация). Кодирование цветов, битность изображения. Плазменные дисплеи. Светодиодные дисплеи. Проекторы (3LCD, LC0S, DLP). Резистивные и ёмкостные сенсорные дисплеи. Перспективные виды дисплеев (OLED, интерференционные дисплеи, SED, PixelSense).

Практика. Написание программы, осуществляющей вывод графических примитивов и текста на TFT-LCD дисплей тестовой платы. Освоение высокоуровневых библиотек для работы с периферийными блоками и внешними устройствами.

Тема Д2. Система тактирования микроконтроллера

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

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

Тема Д3. USB

Теория. Краткая история внедрения шины USB. Физический уровень (кабели и разъёмы, состояния шины, кодирование данных). Пакетный уровень (структура и виды пакетов). Транзакционный уровень (адреса, конечные точки). Логический уровень (виды каналов, передача данных по периодам). Дескрипторы и классы устройств. Краткий обзор спецификаций USB.

Практика. Передача данных с ПК на контроллер по USB c использованием CDC класса.

Тема Д4. Операционные системы реального времени

Теория. Операционные системы мягкого и жёсткого реального времени, а также их особенности. Диспетчеризация задач. Синхронизация задач. Операционная система FreeRTOS. Некоторые функции для управления задачами во FreeRTOS.

Практика. Настройка FreeRTOS и создание многозадачной программы для управления светодиодами.

Программа курса (весенний семестр)
  • Тематические лекции
  • Дополнительные разделы программирования микроконтроллеров
  • Выполнение курсовой работы по программированию

Отчетность

Осенний семестр — зачет

Весенний семестр — зачет с оценкой

— В конце осеннего семестра в течение 4 занятий выполняется зачетная работа.

Примеры тем зачетных работ:

  • Измерение частоты внешнего сигнала с выводом результата на дисплей.
  • Генерация ШИМ сигнала с регулировкой частоты и скважности.
  • Измерение ёмкости конденсатора путём анализа формы отклика RC-цепи на периодический сигнал.
  • Измерение индуктивности  путём анализа формы отклика RL-цепи на периодический сигнал.
  • Генерация гармонического сигнала путём модуляции одиночными импульсами.
  • Измерение расстояния между акустическим излучателем и микрофоном с помощью измерения задержки распространения звука.
  • Измерение скорости звука импульсным методом
  • Стабилизация напряжения в RC цепи с обратной связью. Напряжение задаётся с компьютера и выводится на дисплей.

— В течение весеннего семестра выполняется курсовая работа.

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

Курсовые работы прошлых лет можно посмотреть здесь.

Литература

  • Конспекты первых 2 лекций: лекция 1, лекция 2.
  • Мартин М. Инсайдерское руководство по STM32
  • Брайан Керниган, Деннис Ритчи «Язык программирования С»
  • Майоров С.А., Кириллов В.В., Приблуда А.А. «Введение в микро-ЭВМ»
  • Тревор Мартин, «Микроконтроллеры фирмы STMicroelectronics на базе ядра Cortex-M3. Серия STM32»
  • Фрунзе А.В. «Микроконтроллеры это же просто» (Том1, Том2, Том3)
  • К. Хамахер, З. Вранешич, С. Заки «Организация ЭВМ»
  • Paul Scherz. Practical electronics for inventors.

Учебные материалы на базе оборудования компании АО «ПКК Миландр»

Алалуев Р. В., Основы программирования 32-разрядных микроконтроллеров 1986ВЕ91Т компании «Миландр»: руководство к выполнению лабораторных работ, г. Тула, 2017

Благодаров А.В. Программирование микроконтроллеров семейства 1986ВЕ9х компании Миландр: учебное пособие (на базе 1986ВЕ92У), г. Рязань, 2016

Благодаров А.В., Владимиров Л.Л. Программирование микроконтроллеров: методическое пособие на основе отечественных микросхем семейства 1986ВЕ9х разработки и производства компании «Миландр», г. Зеленоград, 2016

Васильев А.Е. Встраиваемые системы автоматики и вычислительной техники. Микроконтроллеры, г. Санкт-Петербург, 2018

Васильев А.С., Лашманов О.Ю., Пантюшин А.В. Основы программирования микроконтроллеров: учебное пособие (на базе 1986ВЕ91Т), г. Санкт-Петербург, 2016

Гордеев Д.В., Микроконтроллеры серии 1986ВЕ9x:от простого к сложному, г. Владимир, 2013

Евдокимов А.П., Владимиров Л.Л. Программирование микроконтроллера K1986ВЕ92QI компании «Миландр», г. Волгоград, 2018

Карпенков А.С., Проектирование микропроцессорных систем: учебно-методическое пособие к выполнению лабораторных работ (на базе 1986ВЕ93У), г. Ковров, 2015

Левицкий Д.О. Практикум для лабораторных работ по курсу «Программирование микроконтроллеров» (на базе 1886ВЕ61У), г. Зеленоград, 2015

Недяк С.П., Шаропин Ю.Б. Лабораторный практикум по микроконтроллерам семейства Cortex-M: методическое пособие по проведению работ на отладочных платах фирмы «Миландр» (на базе 1986ВЕ91Т), г. Томск, 2017

Огородников И.Н. Микропроцессорная техника: введение в Cortex-M3: учебное пособие (на базе 1986ВЕ92У), г. Екатеринбург, 2015

Пуговкин А.В., Куан И.А., Ахметов Н.К., Бойченко А.В. Методическое пособие по программированию микроконтроллеров, г. Томск, 2016

Рубанов В.Г., Кижук А.С., Бушуев Д.А., Кариков Е.Б., Добринский Е.П. Лабораторный практикум по микроконтроллерам семейства CORTEX-M3: учебное пособие (на базе 1986ВЕ93У), г. Белгород, 2016

Строганова С.М., Теодорович Н.Н. Методические указания к выполнению лабораторных работ по микроконтроллерам семейства 1986BE9Х компании Миландр (на базе 1986ВЕ91Т), Технологичский университет, г. Королев, 2016

Торгаев С.Н., Мусоров И.С., Солдатов А.А., Сорокин П.В. Программирование микроконтроллеров с ядром Cortex-M3 в задачах диагностики и контроля (на базе 1986ВЕ92У), г. Томск, 2017

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

— сборка электронных схем

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

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

Итак, давайте разберемся.

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

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

Основы программирования микроконтроллеров

Микроконтроллер сам не знает, что делать. Ваша работа — сказать ему, что вы хотите.

Итак, вам необходимо:

  • написать программный код на вашем компьютере
  • скомпилируйте код с помощью компилятора для микроконтроллера, который вы используете
  • загрузите скомпилированную версию вашей программы на свой микроконтроллер

Программирование Arduino немного проще, если вы хотите начать действительно просто.

Напишите свой программный код

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

Неважно, какое программное обеспечение вы используете для написания кода. Вы даже можете использовать Блокнот для этого шага. Мне нравится использовать действительно простой редактор. Но тот, который поддерживает подсветку синтаксиса, немного упрощает кодирование. Для Windows мне больше всего нравится Notepad ++

.

Скомпилируйте код для своего микроконтроллера

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

Используйте компилятор, который поддерживает ваш микроконтроллер, и скомпилируйте ваш код в машинный код для вашего чипа. Популярным компилятором для микроконтроллеров Atmel AVR является avr-gcc.

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

Загрузите скомпилированный файл (ы) на свой микроконтроллер

Обычно необходимо загрузить один программный файл и файл для EEPROM и / или flash.

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

А вам нужна программа для закачки файла (ов). Для микросхем AVR вы можете использовать AVRDUDE.

Следующий шаг

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

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

ресурсов для прототипирования: основы новых языков для программирования микроконтроллеров

Спецификации микроконтроллеров

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

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

Какой язык лучше? Четкого ответа нет, потому что это зависит от приложения, над которым вы работаете. Чтобы помочь вам спланировать свое развитие, вот подробное исследование различных языков, доступных для использования микроконтроллером, а также ресурсы для дальнейшего изучения.Вы также можете ознакомиться с нашей предыдущей статьей о языках для встраиваемых систем, которая охватывает Rust, Python, VHDL и Verilog.

C и сборка

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

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

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

Подробнее:

MicroPython

Python — это многофункциональный интерпретируемый язык, известный своей простотой, ясностью и универсальной адаптируемостью.Эти особенности также делают язык слишком большим для микропроцессоров. Однако с помощью кампании на Kickstarter в 2013 году физик Дэмиен Джордж смог адаптировать Python в уменьшенную версию MicroPython, которая подходит для использования на микроконтроллере.

Код

MicroPython является открытым исходным кодом по лицензии MIT. Язык работает на «голом железе» микропроцессора с использованием небольшого подмножества стандартной библиотеки Python. Он может работать, используя только 256 Кбайт пространства и 16 Кбайт ОЗУ, но он спроектирован так, чтобы быть максимально совместимым с обычным Python, насколько это возможно.

Схема PyBoard, официальной платы микроконтроллера MicroPython. Изображение предоставлено MicroPython

Первоначально разработанный для работы в системах на базе ARM, включая BBC micro: bit, Adafruit Circuit Playground Express и MicroPython PyBoard, он также был доступен для других процессоров, включая ESP8266 и ESP32.

MicroPython отлично подходит для создания прототипов сложных проектов. Например, на ESP8266 создание проектов IoT можно выполнить с помощью нескольких простых вызовов функций, чтобы подключить проект MicroPython к локальной точке Wi-Fi и начать потоковую передачу информации брокеру MQTT.

Узнать больше:

Blockly

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

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

Скриншот интерактивной демонстрации Blockly, любезно предоставленной Google for Education

После создания блока пользователи могут экспортировать свой код Blockly на нескольких языках, включая JavaScript, Python, PHP, Lua и Dart. Одним из преимуществ системы Blockly является то, что почти невозможно возникновение ошибок (не ошибок или ошибок, а просто старых ошибок), поскольку блоки требуют определенных подключений и не позволяют подключаться несовместимым блокам.

Хотя этот метод программирования доступен на многих платформах, включая Micro Bit и Adafruit Circuit Playground Express, он не предназначен для использования в конечном коммерческом продукте. Тем не менее, это очень полезно на этапах прототипирования, особенно если требуется проверка концепции и изучение специфики устройства может занять слишком много времени (например, регистров, битов конфигурации и конфигурации IDE).

Узнать больше:

Arduino C ++

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

Отличия Arduino C ++ от обычного C ++ включают общие процедуры для микроконтроллеров, поскольку функции стандартной библиотеки C ++ не могут работать с их ограниченной мощностью и памятью.

Плата Arduino Uno. Изображение любезно предоставлено Arduino.

Использование этой уменьшенной версии C ++ делает этот язык очень доступным, поскольку многие дизайнеры уже знакомы с обычным C ++. Фактически, с помощью компилятора код может быть написан на C ++, а затем преобразован в код, который может использоваться Arduino.

Преимущество использования Arduino C ++ заключается в том, что он подходит для коммерческих сред, работает быстрее, чем более крупные языки, такие как Python, и отличается высокой переносимостью. Компиляция кода на ядре ARM изначально для Uno автоматически выполняется библиотекой с использованием общих функций.

Подробнее:

BASIC

BASIC — это язык, который впервые появился в 60-х годах и пережил свой расцвет с появлением персональных компьютеров в 80-х годах. BASIC (аббревиатура от All-Purpose Symbolic Instruction Code для начинающих) по-прежнему используется по сей день из-за своей простоты и интерпретируемого характера, что позволяет дизайнеру больше сосредоточиться на аппаратном обеспечении, а не на программном обеспечении.

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

Изображение любезно предоставлено Чарльзом Р. Хэмптоном.

Два примера использования BASIC в микроконтроллерах — это BASIC Stamp (производится Parallax) и PICAXE, которые производятся PICAXE и используют микроконтроллеры Microchip PIC.BASIC — хороший язык для создания прототипов и даже разработки оборудования, но его следует избегать в коммерческих продуктах из-за его низкой скорости и энергопотребления.

Подробнее:

Заключение

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

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

Как программировать / записывать микроконтроллер

Как программировать микроконтроллер PIC18 на C. Пошаговое руководство (графические изображения)

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

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

В этом руководстве мы запрограммируем или напишем простой код для микроконтроллера PIC18 на языке C, где «C» — широко используемый компьютерный язык, и это единственный поддерживаемый язык (помимо ассемблера) в настоящее время для 8-битных и 16-битные микроконтроллеры PIC.

PIC10, PIC12, PIC16, PIC18 представляют собой 8-битные микроконтроллеры.

PIC24, dsPIC30, dsPIC33 — это серия 16-битных MCU

PIC32 — это серия 32-битных микроконтроллеров.

Как записать закодированную программу на микроконтроллер?

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

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

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

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

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

Microchip Technology — вторая по величине отрасль, производящая электронику и ИС. Microchip Technology продает микроконтроллеры в 6-контактных корпусах (серия PIC10F2xx), 100-контактных корпусах (dsPIC33EP512MU810) и даже 144-контактных корпусах (некоторые устройства PIC32).Также есть много предыдущих серий, таких как PIC12, PIC16, PIC18.

Введение в целевой контроллер:

Мы собираемся обсудить здесь серию PIC18. Распространенным микроконтроллером этой серии является PIC18f452. Этот контроллер представляет собой 8-битный микроконтроллер, имеет 40 контактов, 32 Кбайт программной памяти и может работать с частотой кристалла до 40 МГц, поэтому этот контроллер подходит для многих приложений.

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

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

Введение в среду программирования:

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

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

Это определенно сократит время программирования, и вам не придется создавать общие функции с нуля, такие как задержка, чтение и запись с ЖК-дисплея, протокол RS232 и многие другие.

Обратите внимание, что MikroC не является бесплатным программным обеспечением, в то время как MPLAB X IDE и компилятор XC8 от Microchip бесплатны и предлагают множество бесплатных библиотек.

Начнем с примера.

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

Создание нового проекта в MikroC:

Шаг 1:

Дважды щелкните значок MikroC на рабочем столе или в том месте, где вы установили это программное обеспечение (как показано ниже).

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

Шаг 2:
Теперь перейдите к кнопке «Проект» в правом верхнем углу и щелкните «Проект».

Шаг 3:

Теперь нажмите «Now Project», и появится новое окно, показанное ниже.

Шаг 4.

Теперь нажмите «Далее» и выберите желаемую тактовую частоту MCU, а также имя проекта и каталог, в котором вы хотите его сохранить.

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

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

Написание кода для микроконтроллера PIC18:

PIC18f452 имеет 5 портов. Четыре порта — 8-битные, а один порт — 4-битные. В этом уроке мы собираемся использовать 8-битный порт. При написании кода для PIC18 вы должны помнить несколько вещей. (Код приведен ниже )

Создание порта как ввода или вывода:

Каждый порт имеет регистр TRISX, который определяет, что вы используете этот порт для ввода или вывода.Где X может быть, A, B, C, D, E, F, например. ТРИСБ.

Для вывода вы должны поместить 0x00 в TRISB, а для ввода вы должны поместить в него 0xFF. но это не всегда так, потому что каждый вывод может быть независимо выбран как вход или выход. вы можете записать 0x09 в TRISB, который выберет RB0 и RB3 для входов, а остальные контакты для выходов.

Функция задержки:

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

Her e является первым простым переключением PORT битов Код.

  void main () {
TRISB = 0x00;  // Определить как выход 
While (1)  // Бесконечный цикл 
{
PORTB = 0x00;
Delay_ms (500);  // задержка 500 миллисекунд 
PORTB = 0xFF;
Delay_ms (500);
}
}  

После того, как вы напишете этот код, вам придется его скомпилировать.

Щелкните по этой кнопке «построить все». Код будет скомпилирован, и шестнадцатеричный код будет создан в папке, в которой вы сохранили файл проекта.

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

Вот и все об этом первом руководстве; следите за новостями по этой теме.

Похожие сообщения:

Введение в программирование микроконтроллеров для силовой электроники Cont

Содержание

1 Достижения в области разработки микропрограмм для платформ управления силовой электроникой
1.1 Встроенная система управления
1.2 Выбор платы для разработки
1.3 MCU семейства C2000 ™ от Texas Instruments ™
1.4 Схема проблемы управления силовой электроникой

I Встроенная разработка: комплекты оборудования и кодирование
2 Автоматическая генерация кода с помощью MATLAB®
2.1 Модельно-ориентированное проектирование и быстрое прототипирование
2.2 Рабочий процесс для автоматической генерации кода
2.3 Генерация кода для микроконтроллеров C2000 ™
2.4 Процессоры TI C2000 ™ Блок-набор

3 Комплект разработчика Texas Instruments ™
3.1 TI C2000 ™ LaunchPad ™: F28069M Piccolo
3.2 TI BOOSTXL-DRV8301 BoosterPack

4 Установка программного обеспечения
4.1 Пакеты поддержки TI: Code Composer ™ Studio и ControlSUITE ™
4.2 Пакет поддержки MATLAB®: встроенный кодер для процессоров Texas Instruments C2000
4.3 Процедура установки

II Обзор теории управления: замыкание контура
5 Проектирование системы управления с обратной связью
5.1 Динамические системы
5.2 Проектирование ПИ-регулятора в непрерывной временной области
5.3 Создание контроллера PI в области дискретного времени

6 Пример проектирования: ПИ-регулятор тока нагрузки RL
6.1 Simulink® Simulation
6.2 Получение схемы ПИ-регулятора защиты от закручивания
6.3 Сводка проекта

7 Управление форматом переменных: типы данных
7.1 Фиксированная точка и представление с плавающей точкой
7.2 Одинарная и двойная точность
7.3 Использование масштабирования в представлении с фиксированной точкой
7.4 Преобразование из десятичного представления в единый формат
7.5 Обработка данных: советы по внедрению

III Управление в реальном времени в силовой электронике: настройки периферийных устройств
8 Базовые настройки: последовательная связь COM и аппаратная цель
8.1 Виртуальная последовательная связь через COM-порт

9 Конфигурация Simulink®
9.1 Среды Simulink®: микропрограммное обеспечение против тестирования
9.2 MCU и управление в реальном времени с Simulink®

10 Периферийное устройство последовательного интерфейса связи (SCI)
10.1 Подробная информация об оборудовании
10.2 Среда микропрограммного обеспечения: отправка и получение данных через последовательную связь
10.3 Среда тестирования: отправка / получение данных через последовательную связь
10.4 Настройки переменных времени (частота дискретизации)
10.5 Примеры последовательной связи

11 Периферийное устройство GPIO — цифровой ввод / вывод
11.1 Подробные сведения об оборудовании
11.2 Среда микропрограммного обеспечения: периферийные устройства GPIO
11.3 Примеры с блоками GPIO

12 Периферийный аналого-цифровой преобразователь
12.1 Принцип работы
12.2 Детали оборудования
12.3 Среда микропрограммного обеспечения: Периферийное устройство АЦП
12.4 Пример с блоком АЦП
12.5 Синхронизация между модулями АЦП

13 Периферийный широтно-импульсный модулятор
13.1 Принцип работы
13.2 Детали оборудования
13.3 Генерация сигналов ШИМ
13.4 Среда микропрограммного обеспечения: Периферийное устройство ePWM
13,5 Пример с блоком ePWM
13,6 Периферийное устройство ЦАП — Фильтрованное периферийное устройство ШИМ
13,7 Примеры синхронизации 9025 с помощью ЦАП несколько модулей ePWM
13.9 Синхронизация между модулями ADC и ePWM: средние измерения
13.Выполнение 10 событий за время выборки

14 Периферийное устройство энкодера
14.1 Принцип работы инкрементальных энкодеров
14.2 Детали оборудования
14.3 Оптический поворотный энкодер LPD3806
14.4 Вычисление скорости
14.5 Среда микропрограммного обеспечения: Периферийное устройство eQEP
14.6 Пример с блоком eQEP

IV Управление в реальном времени в силовой электронике: приложения
15 Управление двигателем постоянного тока с постоянным магнитом
15.1 Необходимое оборудование
15.2 Линейная модель двигателя постоянного тока
15.3 Моделирование системы
15.4 Конфигурация полумоста
15.5 Конфигурация полного моста

16 Измерение тока шунта на нижней стороне
16.1 Характеристика датчика: теоретический подход
16.2 Испытание заторможенного ротора
16.3 Характеристики датчика: экспериментальный подход

17 Управление током нагрузки RL
17.1 Необходимое оборудование
17.2 Модель линейного среднего и конструкция контроллера
17.3 Моделирование системы
17.3.1 Детальное моделирование переменных срабатывания
17.4 Конфигурация полумоста
17.5 Изменение параметров нагрузки

18 Управление напряжением RLC-нагрузки
18.1 Необходимое оборудование
18.2 Рекомендации по проектированию оборудования для RLC-нагрузки
18.3 Общий метод моделирования среднего в пространстве состояний
18.4 Системное моделирование
18.5 Конфигурация полумоста
18.6 Вариации параметров LC-фильтра

19 Каскадное регулирование скорости двигателя постоянного тока с постоянным магнитом
19.1 Необходимое оборудование
19.2 Линейная модель двигателя постоянного тока
19.3 Архитектура и дизайн каскадного управления
19.4 Моделирование системы
19.5 Конфигурация с полным мостом
19.6 Конфигурация с одним двигателем
19.7 Конфигурация спина к спине (B2B)

V Управление в режиме реального времени в силовой электронике: эмуляция нагрузки
20 Инструменты отладки и профилирование микропрограмм
20.1 Циклический процессор с Simulink®
20.2 Выполнение внешнего режима с Simulink®


21 Примеры использования электрических силовых установок
21.1 Городской трамвай
21.2 Гоночный электромобиль

A Приложение A: Основы C
A.1 Операции между номерами
A.2 Структура программы C
B Приложение B: Пользовательские платы расширения и комплекты оборудования
Библиография

Основы использования микроконтроллера Изучение периферийных устройств: программирование, часть 1

Основы использования микроконтроллеров Изучение периферийных устройств: 5 из 6

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

О памяти MCU

В этой серии мы уже написали ряд программ для работы на микроконтроллере RX63N, установленном на плате GR-SAKURA. Как вы помните, мы использовали наш онлайн-компилятор для преобразования исходного кода в объектный код, а затем загрузили объектный код в MCU почти так же, как мы сохраняли бы код на USB-накопитель.Итак, где именно этот код хранится в MCU и как он выполняется? Давайте ответим на эти вопросы, когда мы посмотрим на связь между MCU и программами, которые на нем работают.

Основная память и внешняя память

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

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

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

Вы, вероятно, знаете, что основная память бывает двух типов: ROM (постоянное запоминающее устройство с фиксированным содержимым) и RAM (оперативное запоминающее устройство с записываемым содержимым).Обратите внимание, однако, что разница между ПЗУ и ОЗУ не имеет отношения к настоящему обсуждению, поскольку оба являются частью основной памяти и служат для одной и той же функциональной цели. (Для получения дополнительной информации о ПЗУ и ОЗУ см. Введение в микроконтроллеры, часть 1.

Адресное пространство (пространство памяти)

Адресное пространство , (также называемое пространством памяти , ) — это весь диапазон памяти, к которому микроконтроллер может получить прямой доступ. Он покрывает всю основную память.Расположение в этом пространстве идентифицируется адресом: каждый байт памяти имеет свой собственный адрес. Значения адресов обычно записываются в шестнадцатеричной системе счисления.

Некоторые процессоры используют 4-битные адреса (4 шестнадцатеричных цифры), другие — 8-битные, 16-битные, 32-битные и т. Д. RX63N на GR-SAKURA — это «32-битный микроконтроллер». Каждый адрес состоит из 32 шестнадцатеричных цифр; это дает в общей сложности 232 адресуемых байта. Таким образом, адресное пространство составляет 4 294 967 296 байтов (4 × 1024 × 1024 × 1024), размер которого также называется 4 гигабайтами («4 ГБ»; см. Столбец 1).Большие адресные пространства позволяют использовать память большой емкости, в которой могут храниться очень большие программы, что позволяет эффективно загружать и использовать мощные и сложные приложения.

На рисунке 1 показано адресное пространство 4 ГБ 32-разрядного процессора. Значения адресов, как указано выше, записываются в шестнадцатеричной системе счисления (см. Столбец 2). Каждая строка содержит четыре адресных байта; число слева в строке — это адрес самого левого байта. Вот почему числа, идущие вниз слева, имеют приращение по 4.

Рисунок 1: Представление адресного пространства

Столбец 1: биты, байты, МБ, ГБ, ТБ

В вычислениях наименьшая единица данных — это бит (от «Двоичная цифра»), который принимает одно из двух значений, обычно представленных как 0 и 1. Биты обычно адресуются и обрабатываются группами по восемь; такая группа называется байтом . Так, например, три байта состоят из 24 бит. (Обратите внимание также, что сокращение для «бит» — это строчная буква «b», а сокращение для байта — это заглавная буква «B».)

Объем памяти выражается в байтах. Наиболее распространенными единицами измерения являются КБ (килобайты), МБ (мегабайты), ГБ (гигабайты) и ТБ (терабайты). Эти имена образованы от префиксов килограмм (тысяча), мегапикселей (миллион), гига (миллиард) и тера (триллион). Поэтому часто бывает, что такой термин, как 1 ГБ, будет использоваться для обозначения 1000 МБ. Но в компьютерном мире безраздельно господствуют степени двойки, и в большинстве случаев (хотя и не во всех) эти единицы имеют следующие значения.

  • 1 КБ = 2 10 байтов = 1024 байта
  • 1 МБ = 1024 КБ = 2 20 = 1048576 байт
  • 1 ГБ = 1024 МБ = 2 30 = 1 073 741 824 байта
  • 1 ТБ = 1024 ГБ = 2 40 = 1 099 511 627 776 байт
Столбец 2: Шестнадцатеричное представление адреса

Адреса обычно выражаются в шестнадцатеричном формате. Рассмотрим 16-битное адресное пространство с 216 адресами. В десятичной системе счисления эти адреса будут содержать 0, 1, 2… 9, 10, 11… 65 535.Однако в шестнадцатеричном формате адреса выглядят так: 0h, 1h… 9h, Ah, Bh… Fh, 10h, 11h… FFFFh. Обратите внимание, что если в десятичной системе используется десять цифр (от 0 до 9), в шестнадцатеричной системе требуется 16 (0… 9, A… F). Также обратите внимание, что A (шестнадцатеричный) равен 10 (десятичный), а F (шестнадцатеричный) равен 15 (десятичному). Как правило, для ясности к шестнадцатеричным значениям добавляется суффикс «h»: так, например, 11h = 17 (десятичное).

Где хранится программный код? (Таблицы векторов)

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

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

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

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

Рис. 2. Векторная таблица, используемая RX63N серии

RX63N использует векторную таблицу. Поскольку адресное пространство 32-битное, таблица векторов должна содержать 4-байтовое значение, задающее каждый начальный адрес (поскольку все адреса имеют длину 32 бита). Как вы можете видеть на рисунке 3, самые последние четыре байта пространства памяти (от FFFFFFCh до FFFFFFFh) содержат адрес, по которому ЦП начнет выполнение после сброса. Когда происходит сброс, ЦП переходит к этим последним четырем байтам, считывает адрес, а затем переходит к этому адресу и считывает первую инструкцию.

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

Рассмотрим, как происходит выполнение программы при использовании таблицы векторов. На рисунке 3 показана обработка, которая происходит, когда генерируется немаскируемое прерывание (NMI 1 ).

  1. Происходит NMI.
  2. ЦП считывает адрес обработки NMI (в этом примере 10000000h) из строки NMI векторной таблицы.
  3. ЦП считывает и выполняет инструкцию на 10000000h, которая является первой инструкцией процедуры обработки NMI.

Рисунок 3: Процесс обработки таблицы векторов


1. Немаскируемое прерывание (NMI): прерывание, которое не может быть отключено («замаскировано»). Хотя ЦП может быть настроен на игнорирование маскируемых прерываний, он всегда должен отвечать на NMI.Например, прерывания от сторожевых таймеров часто не маскируются. (Сторожевые таймеры были представлены здесь, во втором сеансе этой серии.)

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

Подводя итог: в этом сеансе мы рассмотрели адресное пространство ЦП, его отношение к периферийным функциям и то, где начинается выполнение программы после сброса или NMI.Обратите внимание, что память ЦП является относительно дорогостоящим ресурсом, и важно писать компактный код, чтобы сохранить его; но даже в этом случае 32-битный MCU имеет довольно большое адресное пространство и намного более гибкий и менее ограничительный, чем 16-битные MCU. Это избавляет от необходимости выполнять все типы уловок, чтобы подогнать программный код, и дает возможность упорядочивать программы в памяти таким образом, чтобы программисты и дизайнеры могли легко понять и работать с ними.

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

Список модулей

  1. Программирование MCU: основы (1) GPIO
  2. Программирование MCU: основы (2) Таймеры
  3. Программирование MCU: основы (3) Последовательная связь
  4. Программирование MCU: основы (4) Прерывания
  5. Программирование MCU: основы (5) Программирование [1 из 2]
  6. Программирование MCU: основы (6) Программирование [2 из 2]

Микроконтроллер — Написание первой программы и передача

Микроконтроллер — Руководство для начинающих — Написание первой программы для включения светодиода и перенос программы в микроконтроллер

Я знаю, что вы готовы написать первую программу.Вы через многое прошли уже! Раз уж мы поговорим об этом, давайте подведем итоги событий. Вы вышли и купили микроконтроллер AVR Atmel на ваш выбор. Я выбрал ATMega32 для моего использования. Вас познакомили с представление о микроконтроллерах, как они работают; а также были представлены программатор, устройство, которое помогает переносить программу в микроконтроллер. Ты построен удобный интерфейс, который используется для подключения контактов SPI к правильные выводы микроконтроллера.Вы подтвердили, что программатор (USBTinyISP) правильно установил драйверы для 32-битной и 64-битные версии Windows (XP, 7 и Vista). Вы также установили программу среда установлена «Среда программирования» под названием WinAVR, чтобы у вас была среда в котором можно написать свою программу, а затем передать ее в микроконтроллер. И чтобы убедиться, что все работает правильно, вы использовали avrdude для протестировал программатор при подключении к компьютеру и микроконтроллеру.Напомним, что эта программа является утилитой передачи программ для перемещения нашей скомпилированной программы. в память микроконтроллера. Наконец, вы построили первую схему, так что что у нас есть для чего написать программу. Уф … это было много! Но так как вы преодолели все эти препятствия, тяжелая работа окончена и все гладко плавание отсюда. Надеюсь, вы смогли пройти предыдущие шаги без проблем — так что приступим к нашей первой программе.

Для упрощения разберем функции микроконтроллера по категориям. на три категории: контроль, зондирование и общение. Подробности оставим о том, как разработать каждую из этих функций, и углубляться в эти детали, когда мы будем писать различные программы. Обратите внимание, что есть много способов запрограммировать эти функции. Для первой программы мы заставим микроконтроллер чем-то «управлять».И в качестве Вы знаете из предыдущего поста, что для этой цели мы будем использовать светодиод. В основном, мы включим светодиод. Да я знаю … скучно, правда? Что ж, мне нужно с чего-то начать! По мере того, как я знакомлю вас с опытом программирования, я добавляю больше сложности понемногу, чтобы вы могли легко осмыслить эти важные концепции.

Так что здесь вы, вероятно, спрашиваете…как сделать программу для управления ВЕЛ? Что ж, это действительно просто: мы просто скажем Pin0 на PORTB вывести 5 вольт. Помните, что это вывод, к которому подключен положительный вывод (анод). В первый ключ в этом сценарии — «выход», а следующий — «5 вольт». Есть выход мы можем указать конкретный вывод, который должен быть установлен как выход из MCU. Однажды булавка настроен для вывода, вы сможете управлять этим контактом и делать он либо высокий (5 вольт), либо низкий (нулевое напряжение).А поскольку есть только два состояния для этого вывода в режиме вывода (5 В или 0 В) и только два состояния для сам режим (вход или выход), вам нужно только установить значение либо логическое 1 или 0. Обратите внимание, что это должно быть выполнено для каждого вывода, который мы хотим использовать в нашем схема. Но прежде чем мы перейдем к подключению 1 или 0, давайте поговорим о вводе по сравнению с вывод. Когда вывод находится в режиме ввода, он прослушивает напряжение.Когда булавка находится в режиме вывода, он может заряжаться при 5 В или не заряжаться при 0 В. Вот и все!

Есть много способов сделать это. Это не для того, чтобы вас запутать, а для того, чтобы проще. Я познакомлю вас с одним из многих способов выполнить эту задачу, а позже я объясню некоторые другие методы при написании других программ. Обратите внимание, однако что, хотя этот первый метод отлично подходит для ознакомления с концепцией, он, вероятно, не так хорошо на практике.Поэтому в будущих программах вы увидите другие методы. что оставит контекстные булавки (эти булавки по обе стороны от интересующей булавки) не затронуты, поскольку они вполне могут быть ранее установлены в программе. Но с тех пор мы пишем простую программу, сейчас мы не будем беспокоиться об этой сложности.

Чтобы выбрать режим вывода для вывода, вы будете использовать регистр направления данных (DDR). О чувак! Что такое реестр?!? Пусть это вас не беспокоит.Регистр — это просто память место, которое заставляет микроконтроллер каким-то образом реагировать. Мы используем регистр для установить состояние микроконтроллера или заставить микроконтроллер что-то делать. Это как рефлексы или щекотки. Когда человек щекочет другого человека, это вызывает смех. Мы можем заставить MCU что-то делать, установив определенное значение в регистре. Это все, что вам нужно знать на данный момент.

Поэтому, когда вы используете регистр DDR, вы можете установить вывод для вывода данных, или примите ввод данных.Но мы сказали ввод или вывод, теперь вы также говорите данные. Используемый здесь термин «данные» просто добавляет еще одно измерение к этой идее в форма «время». Если сделать пин 5 вольт, потом ноль, а потом снова 5 вольт … на самом деле отправляют единицы и нули. Для штифта это не что иное, как высокий (5 вольт), а затем состояние низкого (ноль вольт): MCU видит эту логику высокого / низкого уровня. Таким же образом можно получать данные.

Есть несколько способов установить pin0 для порта B на вывод. Один из способов сделать это — напишите:

DDRB = 0b00000001;

Позволь мне объяснить. «DDRB» относится к регистру направления данных для порта B; «0b» — это чтобы сообщить компилятору, что далее следует двоичное выражение числа; и цифра «1» на конце обозначает положение вывода 0 (первый вывод в порту B).Отзывать что есть 8 контактов для порта B; пины от 0 до 7. В нашем тоже 8 цифр. строка кода. Таким образом, каждая цифра представляет собой контакт порта, и мы можем использовать индивидуальный цифры, которые конкретно относятся к любому из контактов в порту B. Таким образом, «1» на конец нашего оператора кода относится к первому контакту порта B, который в данном случае является выводом 0. (Напомним, что C и C ++ — это языки с нулевым отсчетом, поэтому первый индекс структура данных относится к нулевому элементу; второй индекс относится к первый элемент и т. д.) На данном этапе нам действительно не нужно усложнять так как это будет более подробно рассмотрено в будущих руководствах. Однако если вы хотел бы узнать больше о двоичная система, проверьте здесь.

Теперь нам нужно подать на вывод 5В. Это работает так же, как оператор кода DDR. мы использовали выше. Мы будем использовать двоичное число, чтобы подать 5В на этот вывод (вывод 0), используя этот выписка:

PORTB = 0b00000001;

Единственная разница между этим и предыдущим утверждением состоит в том, что теперь мы используем регистр ПОРТ.Этот регистр знает контакты этого конкретного порта и дает us, чтобы указать фактическое значение данных (логический 0 или 1) для этих контактов.

Теперь нам нужно немного поговорить об общей структуре нашей программы. Все программы нужно указанное место для начала казни. Это как дать кому-то набор инструкции о том, как приготовить торт, не говоря им, с какого шага начать. «Основная» функция — это место, где все программы на C / C ++ начинают выполнение.Итак, мы создаст основную функцию.

int main (пусто)
{
}

Чтобы программа понимала информацию о регистрах DDR и PORT и как они работают в микроконтроллере, необходимо добавить оператор include, содержит всю информацию о микроконтроллерах AVR. Это заявление о включении вероятно будет во всех ваших программах.

#include
int main (пусто)
{
}

Когда начинается процесс компиляции, препроцессорная часть компилятора выглядит в каталоге «avr» для файла «io.h». Расширение «.h» здесь означает, что это файл заголовка, и (как следует из его названия) код в этом файле будет быть вставленным в начало (заголовок) исходного файла, который вы создаете.Сейчас мы может вставлять операторы DDR и PORT в наш код, так как включение Заголовочный файл io.h сообщил о них компилятору.

#include
int main (пусто)
{

DDRB = 0b00000001; // Регистр направления данных устанавливает pin0 на вывод, а остальные выводы на ввод

PORTB = 0b00000001; // Установите pin0 на 5 вольт

}

Теперь направление pin0 установлено на выход со значением, установленным на 5 В.Но мы все еще не закончен. Нам нужно, чтобы микроконтроллер работал бесконечно, поэтому нам нужен распорядок, чтобы сделать это. Это называется бесконечным (или бесконечным) циклом. В бесконечный цикл гарантирует, что микроконтроллер не перестанет выполнять свои операции. Я объясню это более подробно, когда у нас будет что-то делать в этом цикле. Там несколько типов циклов, которые мы можем использовать для этой цели, но для этой демонстрации Я буду использовать цикл while.На английском это означает то же самое, что и в коде: For Например, «пока» я поднял руку, вы должны продолжать хлопать в ладоши.

#include
int main (пусто)
{
DDRB = 0b00000001; // Регистр направления данных устанавливает вывод 0 на вывод а остальные контакты как вход
PORTB = 0b00000001; // Установите pin0 на 5 вольт
, а (1)
{

// Код был бы здесь, если бы его нужно было выполнить повторно и снова и снова … бесконечно

} }

Обратите внимание, что мы используем «1» в качестве аргумента цикла while, потому что все остальные чем «0» — это логическая истина. Следовательно, условие цикла while никогда не будет ничем кроме логически истинного, и программа будет продолжать выполняться бесконечно (т.е. я держу руку поднятой).

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

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

— обзор

Плата для программиста / разработчика USB Matrix Multimedia

Я использовал Multiprogrammer от Matrix Multimedia (см.рисунок 3.10).

Рисунок 3.10.

У меня лишь небольшой опыт работы с сборными платами приложений Matrix, называемыми «E-Blocks», и с моей точки зрения эти сборные платы идеально подходят для школьных и классных приложений, но не для индивидуального программирования микроконтроллеров, изучаемого любителями.

Причины моего мнения следующие; Во-первых, это за счет модулей E-Block. Если вы учитесь программированию, это однозначное предложение. Таким образом, после того, как вы изучите и примените свой E-Block, ваши инвестиции, скорее всего, останутся в ящике и пылятся.Кроме того, для правильного использования E-Block вам необходимо приобрести программатор PIC Matrix, который представляет собой комбинацию программатора PIC и отладочной платы с портами, подключенными к разъемам DB9, для использования с системой E-Block.

Хотя я не считаю, что эта система применима к индивидуальному обучению самостоятельно, ситуация в школах и классах кардинально меняется. Представьте себе класс программирования микроконтроллеров, заполненный студентами, изо всех сил пытающимися выполнить свое задание по программированию в отведенное для класса время.Сборные платы E-Block помогают, устраняя большую часть, если не всю, фактическую проводку и схему сборки, а также любые ошибки, связанные с таким зданием. Например, один из первых наших проектов — это подключение восьми светодиодов и резисторов к микроконтроллеру. Готовый светодиодный E-Block со светодиодами подключается прямо к разъему DB9 на плате программирования (см. Рисунок 3.11).

Рисунок 3.11.

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

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

Так как это на вас влияет? Как частное лицо, выиграете ли вы от использования сборных электронных блоков? На мой взгляд, нет, я так не думаю.Прежде всего, вы не находитесь в тех же временных ограничениях, которые существуют в классе. Чтобы лучше понять использование микроконтроллеров и их применение в схемах, это помогает на самом деле построить оборудование. Даже если схема выходит из строя, это заставляет вас искать и устранять неисправности схемы (и / или программы), пока вы не найдете свою ошибку. Это дает бесценный опыт реального мира. Вы узнаете, как все сочетается и работает. Вы подключаете светодиод к контакту ввода / вывода порта на микроконтроллере и используете его в программе.Использование макетной платы без пайки также заставляет вас создавать вспомогательную схему для микроконтроллера, включая регулируемый источник питания +5 В. В реальном мире не всегда есть сборные, которые могут вам помочь, и когда это происходит, вам не хватает навыков для создания и построения схемы.

Поскольку я сосредоточился на создании схем с использованием дискретных компонентов на беспаечных макетных платах, я решил использовать другой программатор. USB-программатор Matrix Multimedia представляет собой комбинацию программатора и платы разработки.Поскольку в этой книге я не использую E-Blocks, мне не нужны коннекторы DB9 или раздел разработки этого программатора PIC. Это отличное вложение для приложений в школе и классе. Если вы решите использовать этот программатор, его программное обеспечение, PPPV3, будет установлено (или может быть переустановлено) при установке программного обеспечения Flowcode, как описано в главе 1. Кроме того, программное обеспечение и экраны мультипрограммиста аналогичны программному обеспечению программатора EPIC, которое мы обсудим позже.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *