Как запрограммировать микроконтроллер: Вы еще не программируете микроконтроллеры? Тогда мы идем к вам! / Хабр

Содержание

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

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

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

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

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) – микроконтроллер.

Как программировать микроконтроллеры — CodeRoad



Привет, я хочу программировать микроконтроллеры, но на самом деле не знаю, как это сделать и что мне нужно для этого. Я понятия не имею, где искать нужную мне информацию. Я кодирую с python уже около 11 месяцев и хорошо знаю, как использовать этот язык. В прошлом я использовал c++ и знаю довольно много этого языка.

При программировании микроконтроллеров может ли microcontroller быть запрограммирован на любой язык кодирования или микроконтроллеры позволяют использовать с ним только определенные языки?

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

c++ python programming-languages microcontroller
Поделиться Источник user2387537     16 июля 2013 в 09:28

2 ответа


  • Как я могу программировать с C++ в NAO v6?

    Я ищу в интернете, как программировать с c++ в NAO v6 , но ничего не могу найти, я знаю, как программировать с python в хореграфе, но не могу найти способ программировать с c++. Там есть какой-то учебник или что-то в этом роде, или если это просто, не могли бы вы мне помочь, пожалуйста?

  • Java микроконтроллеры на базе?

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



4

Проблема в слове «programmed». Микропроцессоры (вы имеете в виду CPUs, верно?) обычно выполняют

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

Теперь, поскольку Программирование процессоров таким способом очень неудобно, были изобретены так называемые «assembly languages». В основном они просто определяют символические представления для машинных кодов и наборы правил их интерпретации. Затем специальная программа, называемая транслятором, берет набор текстовых файлов, содержащих определение программы, написанной на языке assembly, и производит что- то , что содержит машинные коды и может быть выполнено целевым процессором. (Определение этого «something» трудно, и давайте не будем отвлекаться.)

Теперь есть еще один уровень выше — языков, таких как C (и, в меньшей степени, C++), которые пытаются абстрагироваться от деталей конкретной аппаратной платформы и позволяют сосредоточиться на алгоритмах и форматах данных, а не иметь дело с конкретным процессором. Очевидно, что это перемещает знание конкретной H/W платформы в компилятор — программы, которая берет текст вашей программы, написанный на языке высокого уровня, и производит что-то, что может быть запущено целевым процессором.

Теперь есть еще один уровень выше, который включает в себя языки, которые почти полностью абстрагируют вас от любых особенностей H/W платформы. JavaScript, который запускается в вашем браузере, когда вы читаете Stack Overflow, является хорошим примером — программы в нем все еще выполняются процессором устройства, на котором работает ваш браузер, но между этими JS сценариями и процессором есть много сложных слоев кода.

Теперь вы должны понять, что окончательного ответа на ваш вопрос нет. Если вы хотите побаловаться низкоуровневым кодом для CPU в вашей спальне PC, то погуглите для «x86 assembler», «intel assembler» и т. д. Это хорошее начало. Если вы хотите запрограммировать какой-то другой процессор, поисковый запрос будет похож. Если вместо этого вы хотите запрограммировать какой-то специализированный процессор, например AVR , то начните с руководств по этому продукту, поскольку они обычно поставляются со специализированными инструментами.

Поделиться kostix     16 июля 2013 в 10:36



1

если вы заинтересованы в том, чтобы освоиться с базовым практическим, как вы сказали, » Как сделать что-то базовое, чтобы начать, например, сделать LED flash и т. д.»

выберите базовый микроконтроллер, скажем, из семейства 8051 мы возьмем 89c51(NXP/Atmel в зависимости от наличия). Сначала ознакомьтесь с руководством пользователя, оно даст вам краткое представление( общая архитектура ) о нем. что касается программирования, то вы найдете базовый код для LED flash только в ручном режиме (скорее всего). если вы используете микроконтроллер NXP, то программное обеспечение Flashmagic свободно доступно в интернете, вы можете скачать его. В вас IDE(как и в кейле) не забудьте создать файл » .hex » после того, как вы закончите с кодированием. теперь откройте Flashmagic, загрузите в

него файл . hex и запишите свой микроконтроллер для конкретного кода, который вы написали.

Удачи!!

Поделиться YMJ     16 июля 2013 в 11:06


Похожие вопросы:


Как программировать с помощью cat?

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


Как я могу начать программировать в C++ на Win32?

У меня есть потребность / желание научиться программировать против Win32 в C++. Я немного смущен тем, что такое Win32, так как у меня нет никакого опыта работы на платформе. Что бы вы посоветовали…


Как программировать без побочных эффектов в Java?

Будучи давним программистом Java и в последние годы наркоманом Haskell, я сейчас изучаю Scala. Мой вопрос таков: Как программировать без побочных эффектов в Java ? то есть как я могу сделать вручную. ..


Как я могу программировать с C++ в NAO v6?

Я ищу в интернете, как программировать с c++ в NAO v6 , но ничего не могу найти, я знаю, как программировать с python в хореграфе, но не могу найти способ программировать с c++. Там есть какой-то…


Java микроконтроллеры на базе?

Я изучал микроконтроллеры и задавался вопросом, основаны ли большинство из них на C/C++? Я довольно хорошо разбираюсь в java и хочу спросить вас, ребята, знает ли кто-нибудь хороший экономичный…


Альтернативные языки для встроенного программирования

Я ищу альтернативные языки программирования (от assembly, C, C++ и basic) до встроенного (microcontroller) программирования. Можно ли, например, программировать микроконтроллеры в C# или Java? Может…


«Самопрограммирование» vs » в прикладном программировании»

Я имел в виду контроллеры Atmega и микроконтроллеры LPC2148. Atmel говорит о Self Programming, тогда как NXP говорит о In Application Programming. Являются ли обе эти технологии концептуально…


На каком языке можно программировать PIC10F200/202/204/206?

В погоне за использованием недорогого, менее контактного микроконтроллера я в конечном итоге выбрал серию PIC PIC10F200/202/204/206 в качестве перспективного выбора. Мои варианты использования для…


Может ли программист повредить микроконтроллеры?

Возникает вопрос, Может ли программист микроконтроллеров повредить микроконтроллеры таким образом, что они больше не могут быть запрограммированы? (У меня есть программист usb) Этот вопрос пришел…


Могу ли я программировать микроконтроллеры в Kotlin?

Можно ли как-то запрограммировать микроконтроллеры Arduino или ESP8266 на Kotlin? Тот же вопрос и об одноплатных компьютерах (например, Raspberry Pi).

Что такое микроконтроллер, зачем он нужен и как его используют

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

История появления

Работы над изобретением микропроцессора велись с начала 1970-х годов. Первой компанией, разработавшей его, была компания Intel. Уже в 1971 году ее был выпущен первый микроконтроллер 4004, который состоял из 2300 полупроводниковых транзисторов, а по размеру был не больше ладони. Это стало возможным, после того как для микросхемы был специально разработан кристалл процессора.

Несмотря на маленькие размеры, производительность микропроцессора не уступала компьютеру Eniac, имеющему габариты в 85 м3. Особенностью этого устройства было то, что оно могло обрабатывать только 4 бита информации.

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

К концу 1973 года Intel выпускает 8-зарядный микропроцессор. Он был настолько удачно разработан, что и сегодня считается классикой.

Через несколько месяцев фирма Motorola выпускает свой 8-битовый микропроцессор 6800. Он стал сильным конкурентом интеловской микросхеме, т. к. имел более значительную систему прерываний и одно напряжение электропитания. В 8080 их было три.

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

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

В 1978 году Интел выпустила 16-разрядный микропроцессор, который IBM использовала для разработки персональных компьютеров. Моторола не отстала от своего конкурента и тоже выпустила 16-разрядный микропроцессор, который использовали Atari и Apple.

Сейчас существует более 200 разновидностей микроконтроллеров. Количество компаний, их изготавливающих, перевалило за два десятка. Широкое распространение у разработчиков получили:

  • 8-битные микроконтроллеры Pic компании Microchip Technology и AVR от Atmel;
  • 16-битовые MSP 430 фирмы TI;
  • 32-битные ARM от одноименной компании.
В России пользуются популярностью микроконтроллеры Renesas Electronics, Freescale, Samsung.

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

Микроконтроллер по сути является микросхемой, который состоит из:

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

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

Принцип работы микроконтроллера

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

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

В зависимости от содержащихся в МК набора программ, они делятся на:

CISC – комплекс большого числа базовых команд;
RISC – только необходимые команды.

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

Назначение и область применения микроконтроллера

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

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

Это не полный перечень областей применения МК.

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

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

Для работы микроконтроллеру, как и любому электронному устройству, необходима энергия. Напряжение МК Atmel AVR находится в диапазоне 1.8–5.5 Вольт и зависит от модели и серии. Большинство приборов работает от 5 Вольт. Но встречаются и низкочастотные модели (Attiny 2313), нижняя граница у которых от 1,8 В.

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

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

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

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

Кроме того, необходимо установить и конденсаторы, лучше керамические, из расчета 1 на 100 нанофарад.

Подключение

Через микроконтроллер можно подключить к локальной сети любой девайс. В качестве таковой можно рассмотреть Ethernet. Прежде всего, определимся с понятиями.

Ethernet – это набор стандартов IEEE 802.3, которые описывают разнообразные технологии локальных сетей: общий канальный уровень и набор технологий физического уровня, включающий в себя для передачи информации оптоволокно, витую пару, коаксиал с различными скоростями.

Понять, как работает локальная сеть, можно через модель OSI. Она включает в себя несколько уровней:

  1. Физический. Состоит из витой пары, драйверов и трансформаторов, по которым происходит передача данных.
  2. Канальный. Через него передаются Ethernet-фреймы между узлами локальной сети.
  3. Сетевой. По нему происходит передача пакетов. Они могут передаваться через несколько сетей, различающихся по технологиям физического и канального уровней.
  4. Транспортный. Связывает узлы между собой. Перед отправкой данных транспортный уровень представляет их в виде пакета сетевого уровня и передает другому узлу. Он может отправлять и группы пакетов одновременно. Если используется протокол с установкой соединения, то перед отправкой транспортный уровень устанавливает соединение, контролирует его качество, а только потом передает пакет данных.
  5. Прикладной. Решает прикладные задачи, те, ради которых создавался. С внешним миром он обменивается данными по стандартному или эксклюзивному протоколу.

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

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

Управление микроконтроллером

Управление МК может осуществляться двумя способами:

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

Сигналы беспроводного соединения могут быть:

  • Оптическими. Подобными сигналами управляется домашняя бытовая техника: телевизоры или кондиционеры.
  • Радио. Есть несколько вариантов: Wi-Fi, Bluetooth и др.

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

Обеспечивает поддержку cети Wi-Fi МК ESP 8266. В продаже он может быть в виде микросхемы или распаян, как arduino. У него 32-битное ядро, программировать его нужно через последовательный порт UART. Бывают более продвинутые платы с возможностью прошивки по USB – это NodeMCU. Они могут хранить информацию, записанную, например, с датчиков. Такие платы работают с различными интерфейсами, в т. ч. SPI, I2S.

Поддерживает большое число функций:

  • планировщик задач;
  • таймер;
  • канал АЦП;
  • формирование на выходе ШИМ сигнала;
  • аудиопроигрыватель и многое другое.

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

Тактирование микроконтроллеров

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

Существуют несколько способов тактирования МК. Они зависят от использования:

  • Внутреннего RC-генератора. Он может работать только на частоте 1, 2, 4, 8 МГц. Если нужна другая частота, то он не подойдет. При необходимости использования точных временных интервалов тоже нельзя пользоваться этим методом, т. к. его задающая частота колеблется в зависимости от температуры.
  • Внешнего кварца. Этот способ имеет более сложное подключение. Емкость конденсатора должна находиться в интервале 15–22 пФ. Один выход присоединяется к резонатору, а другой заземляется.
  • Внешнего генератора. Этот генератор также нестабилен при разной температуре, как и внутренний.
  • RС-цепочек. Для данной схемы подойдет конденсатор емкостью от 22 пФ, резистор 10–100 кОм.

Для простейших микроконтроллеров подойдут внутренний или внешний генератор и RC-цепочки. Для проектирования более точных МК потребуются стабильные источники тактирования.

Семейства микроконтроллеров

Все МК объединяются в семейства. Основная характеристика, по которой происходит это деление, — структура ядра.

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

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

Объединяют все МК в семейства одинаковость двоичного кода программирования.

Семейства делятся на:

  • MSC-51, производства Intel. Монокристальный МК на основе Гарвардской архитектуры. Основной представитель этого семейства 80С51, созданный по технологии CMOS. И хотя эти контроллеры разработаны еще в 80-х годах прошлого века, но до сих пор широко применяются. И сегодня многие компании, такие как Siemens, Philips и др. выпускают свои контроллеры с подобной архитектурой.
  • PIC (Microchip). МК Гарвардской архитектуры. В его основе лежит архитектура с сокращенным набором команд, встроенная память команд и данных, низкое энергопотребление. В это семейство входят более 500 различных МК (8-ми, 16-ти, 32-битные) с различными наборами периферии, памяти и прочими характеристиками.
  • AVR (Atmel). Высокоскоростные контроллеры разработаны на собственной архитектуре. Основой контроллера является Гарвардский RISC-процессор с самостоятельным доступом к памяти программ и баз данных (Flash ПЗУ). Каждый из 32 регистров общего назначения может работать как регистр-аккумулятор и совокупность 16-битных команд. Высокая производительность в 1 MIPS на каждый МГц тактовой частоты обеспечивается за счет порядка выполнения команд, который предусматривает выполнение одной команды и одновременную подготовку к следующей. Для поддержания своей продукции компания Atmel выпускает бесплатную и качественную среду разработки Atmel
  • ARM (ARM Limited) разработаны на собственной архитектуре. В семейство входят 32-х и 64-битовые МК. ARM Limited занимается только разработкой ядер и их инструментов, а лицензии на производство продает другим компаниям. Эти процессоры потребляют мало энергии, поэтому находят широкое применение в производстве мобильных телефонов, игровых консолей, маршрутизаторов и т. д. К компаниям, выкупившим лицензии, относятся: STMicroelectronics, Samsung, Sony Ericsson и др.
  • STM (STMicroelectronics). 8-разрядные контроллеры (STM8) относятся к категории высоконадежных с низким энергопотреблением изделий. В это же семейство входят контроллеры STM32F4 и STM Их основу составляет-32 битный Cortex. Такие контроллеры обладают отлично сбалансированной архитектурой и имеют большие перспективы развития.

Это не все семейства микроконтроллеров. Здесь мы привели только основные.

Типы корпусов микроконтроллеров

Внешних отличий МК от других микросхем нет. Кристаллы размещены в корпусах с определенным количеством выходов. Все МК выпускаются только в 3-х типах корпусов:

  • Корпус DIP имеет два ряда выводов. Расстояние между ними 2,54 мм. Выводы вставляются внутрь отверстий на контактных площадках.
  • Корпус SOIC. Он подходит для монтажа, который предполагает поверхностную припайку выходов к контактной площадке. Расстояние между выходами 1,27 мм.
  • Корпуса QFP (TQFP). Выводы расположены со всех сторон. Расстояние между ними в 3 раза меньше, чем в DIP. Корпус имеет квадратную форму. Предназначаются только для поверхностной пайки.
  • Корпус QFN. Самый маленький по сравнению с предыдущими. Контакты выходят в 6 раз чаще, чем в DIP. Имеют большое распространение в промышленном производстве, т. к. позволяют значительно уменьшить габариты выпускаемых приборов.

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

В чем отличие микроконтроллера от микропроцессора?

Весь компьютерный функционал микропроцессора (Micro Processor Unit — MPU) содержится на одном полупроводниковом кристалле. По характеристикам он соответствует центральному процессору компьютера ЦП (Central Processing Unit — CPU). Область его применения – хранение данных, выполнение арифметико-логических операций, управление системами.

МП получает данные с входных периферийных устройств, обрабатывает их и передает выходным периферийным устройствам.

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

Устройства на микроконтроллерах

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

На МК могут быть следующие устройства:

  • Аналоговый компаратор. Основная его задача сравнивать поступающее (измеряемое) напряжение с идеальным. Если измеряемое напряжение выше, чем идеальное, то компаратор выдает сигнал логической 1 (прибор отключается), если ниже, то логический 0 (прибор продолжает работать).
  • Аналогово-цифровой преобразователь (АЦП). Измеряет аналоговое напряжение в период времени и выдает его в цифровой форме. Есть не у всех МК.
  • Таймер/счетчик. Представляет собой сочетание 2-х форм таймера и счетчика. Таймер формирует интервалы времени, а цифровой счетчик считает количество импульсов, идущих от внутреннего генератора частот, или сигналы от внешних источников. Одним из представителей работы таймера /счетчика может быть ШИМ (широтно-импульсный модулятор). Он предназначен для управления средним значением напряжения при нагрузке.
  • Сторожевой таймер. Его задача перезапускать программу через определенный временной промежуток.
  • Модуль прерываний. Он сообщает МК о наступлении какого-либо события и прерывает выполнение программы. После завершения события возобновляет прерванную программу.

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

Что нужно для программирования микроконтроллера

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

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

  1. Перед тем как приступить к написанию кода программы, надо определиться с конечной целью.
  2. Составляется алгоритм работы программы.
  3. Непосредственное написание кода программы. Коды пишутся на языке Си или Ассемблере.
  4. Компиляция программы, т. е. перевод ее в двоичную или шестнадцатеричную систему 1 и 0. Только так ее сможет понять МК.
  5. Откомпилированный код записывают в память контроллера.
  6. Прошивают МК с помощью программатора. Они бывают двух типов подключения: через COM или USB порт. Самый простой и дешевый программатор USBASP.
  7. Тестирование и отладка МК на реальном устройстве.

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

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

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

  • Ассемблер. Самый низкий уровень языка. Программы, написанные на нем, получаются громоздкими и труднопонимаемыми. Но несмотря на это он позволяет наиболее полно раскрыть все возможности контроллеров и получить максимальное быстродействие и компактный код. Подходит преимущественно для маленьких 8-битных МК.
  • С/С++. Более высокий уровень языка. Программа, написанная на нем, более понятна человеку. На сегодняшний день есть много программных средств и библиотек, позволяющих писать коды на этом языке. Его компиляторы есть практически на любой модели МК. На сегодня это основной язык для программирования контроллеров.
  • Еще более удобный для восприятия и проектирования язык. Но он мало применяется для программирования МК.
  • Старинный язык программирования. На сегодня почти не применяется.

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

Среда разработки

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

Вот несколько сред программирования:

  • FlowCode – универсальная графическая среда. Программируется с помощью построения логических структур блок-схем.
  • Algorithm Builder. Тоже графическая среда. Но написание кода проходит в 3–5 раз быстрее, чем в FlowCode. В ней совмещены графический редактор, компилятор, симулятор МК, внутрисхемный программатор.
  • В ней объединены Ассемблер и С/С++. Функционал среды позволяет самостоятельно прошивать МК.
  • Image Craft. Как и предыдущая поддерживает Ассемблер и С/С++ языки. В ее составе есть библиотека, позволяющая работать с отдельными устройствами МК.
  • Популярная среда для любителей. Имеет Си-подобный язык, но отличающийся от других. Он более понятен человеку. Поддерживает библиотеки, в составе которых есть драйвера для подключения некоторых платформ.

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

Основы программирования

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

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

Далее действуют по следующей схеме:

  1. Выбор компилятора и установка среды (подробнее о них писалось выше).
  2. Запуск среды и выбор в ней нового проекта. Необходимо будет указать место расположения. Путь нужно выбирать наиболее короткий.
  3. Настройка проекта. Классическим действием будет создание make-файла, в котором прописываются все зависимости. На первой странице указывают еще частоту работы МК.
  4. Настройка путей. В них надо добавить директорию проекта. В нее можно добавлять сторонние библиотеки.
  5. Постановка задачи.
  6. Сборка схемы. На этом этапе надо соединить модуль USB-USART конвертера с аналогичными выводами МК. Это позволит прошить микроконтроллер без программатора. Нужно накинуть джамперы, соединяющие LED1 и LED2. Этим действием мы подключим светодиоды LED 1 и 2 к выводам PD4 и PD5.
  7. Пропись кода.
  8. Добавление библиотек и заголовков с определениями.
  9. Главные функции. Язык Си состоит из одних функций. Они могут быть вложенными и вызываться в любом порядке относительно друг из друга и разными способами. Но все они имеют три обязательных параметра: 1) возвращаемое значение; 2) передаваемые параметры; 3) тело функции. В зависимости отданных, все возвращаемые или передаваемые значения должны быть определенного типа.
  10. Компиляция и запуск эмуляции.
  11. Отладка программы.

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

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

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

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

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

cxema.org — Прошивка микроконтроллеров AVR

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

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

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

Для прошивки AVR микроконтроллеров я использую специализированную программу PonyProg.

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

выбираем последовательный порт, тип программатора — SI Prog API, выбираем COM порт, в который воткнули программатор, и жмём кнопку «Проверка», Если всё сделали правильно, появится соответствующее окошко. Если нет, ищите ошибки в монтаже.

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

Об окончании калибровке программа сообщит соответствующим появившемся окошком. Эта процедура проводиться только один раз, при первом подключении программатора к компьютеру, и в дальнейшем проводить не требуется. Что бы убедиться в работоспособности программатора на панели выбираем семейство «AVR micro», тип подключенного микроконтроллера, в моём случае ATmega8, и жмём кнопку «Читать содержимое устройства».

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

Для записи в микроконтроллер необходимого кода жмём на кнопку «Открыть содержимое устройства из файла», выбираем необходимый HEX файл и жмём открыть.

Программа отобразит открытый код. Далее жмём кнопку «Запись устройства».

В появившемся окне жмём ДА. Начнётся процесс записи.

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

Некоторые авторы выкладывают прошивку не целиком, а по отдельности. Отдельно область программ и отдельно область данных. То же самое, но для чтения и записи используются соседние кнопки с буквами P (программа) и D (данные). Файлы могут иметь расширение не HEX, а e2p.

Теперь настал самый ответственный момент, требующий особого внимания, это запись битов конфигурации (fuse bits). Для этого жмём кнопку с замком «Биты конфигурации и защиты». Откроется соответствующее окно, в котором необходимо расставить «птички» так, как рекомендует автор устройства, которое вы повторяете.

После чего жмём ОК, начнётся запись конфигурации.

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

Обратите внимание, биты конфигурации выставлены инверсно!

Что бы не возникало вопросов, как надо выставлять фьюзы, перед изменением битов жмём кнопку «Читать» и смотрим на бит SPIEN, по умолчанию он всегда включен. Этот бит разрешает последовательное программирование. В PonyProg он специально заблокирован, что бы его случайно не выключить. Сравнивая этот бит в статье автора и со своей программой делаем выводы, как надо ставить биты, инверсно или нет, так как у автора он тоже включен!

Существуют программаторы, подключаемые к USB разъёму компьютера, собрал и я себе такой

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

Плата программатора для ATmega8 в формате lay тут

Использование программатора USBASP в Atmel Studio

Программатор USBASP является на сегодняшний день самым дешевым программатором микроконтроллеров AVR компании ATMEL и позволяет программировать большое множество микроконтроллеров серий AVR ATTiny, AVR ATMega и других. В данной статье я расскажу вам об основных особенностях использования этого программатора из под ОС Windows 7 и как настроить его работу совместно со средой разработки программ Atmel Studio на примере версии 6.1. К сожалению, по умолчанию, Atmel Studio не поддерживает этот программатор.

Установка драйвера программатора

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

Драйвер можно скачать по ссылке с нашего Google диска.

Установка Avrdude

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

Скачать Avrdude по ссылке с нашего Google диска

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

avrdude -c usbasp -p atmega32 -U flash:w:myhexfile.hex -U lfuse:w:0x6a:m -U hfuse:w:0xff:m

Поясним основные параметры:

  • -c usbasp параметр определяет тип программатора, в нашем случае это usbasp;
  • -p atmega32 параметр определяет тип микроконтроллера, для примера использован ATmega32;
  • -U flash:w:myhexfile.hex параметр определяет hex файл для записи в контроллер. Файл должен располагаться либо в каталоге программы, либо необходимо указать полный путь к файлу;
  • -U lfuse:w:0x6a:m параметр определяет младший байт регистра Fuse;
  • -U hfuse:w:0xff:m параметр определяет старший байт регистра Fuse;

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

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

Настройка программирования из Atmel Studio

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

В Atmel Studio открываем пункт меню Tools и выбираем пункт External tools…

В открывшемся окне настройки инструментов нажимаем кнопку Add для добавления нового инструмента. Заполняем следующие поля:

  • Title: произвольное имя инструмента, мы указали USBASP atmega32.
  • Command: файл запуска программы avrdude. Мы указали C:AVRDUDEavrdude.exe, так как у нас она размещена в каталогеAVRDUDE на диске С.
  • Arguments: параметры запуска для avrdude, которые мы рассмотрели выше. Мы задали строку -c usbasp -p atmega32 -U flash:w:$(TargetName).hex, в которой указали имя программатора, имя контроллера, и путь к файлу прошивки. Путь к файлу указан через специальные макросы и Atmel Studio подставит их сама. Мы не указали регистр Fuse в этом примере, но при необходимости вы можете добавить их самостоятельно.
  • Initial directory: указан макрос для подстановки каталога, в котором находится файл прошивки.
  • Use Output window: установите эту галочку для того, что бы результат работы программы показывался в окне Atmel Studio. Послу установки всех настроек нажмите кнопку OK для сохранения настроек и выхода.

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

Подключение программатора к микроконтроллеру

Программатор USBASP подключается к микроконтроллеру по стандартному интерфейсу ISP. Физически на программаторе интерфейс имеет 10 контактов. Большинство контактов объединены общим проводом. Назначение используемых контактов следующее:

  • MISO, MOSI, SCK, RESET — подключается к соответствующему выводу микроконтроллера;
  • GND – земля, подключается к мину или GND микроконтроллера;
  • VCC – используется для подачи питания на микроконтроллер.

На печатных платах модулей, где используются контроллеры AVR, разработчики очень часто располагают интерфейс SPI 6 контактов, позволяющий произвести внутрисхемное программирование контроллера. Такой интерфейс можно видеть даже на платах Arduino. Для подключения программатора к такому 6-и контактному интерфейсу можно использовать соединительные провода мама-мама или специальный переходник ISP10 в ISP6 для программатора AVR USBASP.

Программатор avr своими руками под windows 10. Миниатюрный USB программатор для AVR микроконтроллеров. Органы управления на плате

В интернете много схем USB программаторов для микроконтроллеров AVR. Все их можно разделить на три группы: программаторы на основе микроконтроллеров AVR, в которых USB интерфейс реализован программно, программаторы на основе микроконтроллеров AVR с аппаратной поддержкой USB, и программаторы на основе микросхем FT232, которые работают в режиме BitBang.

Один из наиболее простых для повторения AVR USB программаторов – это USBasp. Он собран на микроконтроллере Atmega8 (или Atmega48), требует минимум внешних компонентов, имеет несколько готовых вариантов разводки печатной платы и оболочек для программирования, а также может работать под Linux и MacOS.

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

Схема программатора USBasp представлена на рисунке ниже. Я взял за основу схему с сайта автора http://www.fischl.de/usbasp и немного изменил ee. Были добавлены диоды VD1 — VD3, чтобы уменьшить напряжение питания и согласовать логические уровни микроконтроллера и USB порта без стабилитронов. Были выкинуты цепи подключенные к UART`у, так как они не использовались, и добавлен джампер JP1.

Расскажу о назначении светодиодов и джамперов.

HL1 сигнализирует о том, что идет процесс программирования. Он зажигается на время записи прошивки.

HL2 показывает, что программатор находится в рабочем состоянии. Он зажигается при подаче питания.

JP1 закорачивает цепочку из диодов, что позволяет изменять напряжение на разъеме программирования с 3 на 5 В. Однако без стабилитронов это прокатит не со всеми компьютерами. Многие компы не опознают USBASP, если у него 5-и вольтовые логические уровни.

JP2 изменяет частоту SCK сигнала. При разомкнутом джампере частота SCK будет 375 кГц, при замкнутом — 8 кГц. Это требуется для программирования микроконтроллеров с низкой тактовой частотой (меньше 1.5 МГц).

JP3 подключает вывод RESET к разъему программирования. Это нужно для того, чтобы запрограммировать сам микроконтроллер программатора.

JP4 подключает к разъему программирования +5В от USB порта. Эта функция может понадобиться, чтобы запитать программируемую плату от программатора.

Для сборки программатора USBASP понадобятся следующие компоненты:

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


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

Запрограммировать микроконтроллер можно прямо в составе платы. Для этого нужно замкнуть джампер JP3 и JP4, подключить USBasp к компьютеру для подачи питания и подключить программатор к разъему BH-10. Остальные действия зависят от того, какой программатор вы используете.

После того как микроконтроллер запрограммирован, нужно настроить Fuse биты, чтобы он тактировался от внешнего кварцевого резонатора. Значения Fuse битов такие:

atmega8 HFUSE=0xc9 LFUSE=0xef
atmega88 HFUSE=0xdd LFUSE=0xff

Я прошивал USBASP родным атмеловским программатором. У меня в Atmel Studio окно с Fuse битами выглядело так.

Если прошивать USBasp программатором на FT232 , то в SinaProg изображение Fuse битов будет таким.


Разницы никакой, так что не задавайте вопросы какие Fuse биты установить.

Для работы с программатором под Windows требуется установить драйвера. Их можно скачать с сайта автора. Для операционных систем Linux и MacOS X USBasp`у драйвера не требуется.

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


Выбираем опцию — установить из указанного места


Указываем папку в которой лежат драйвера для программатора.


Система немного потупит, а затем начнется процесс установки.


Если все прошло удачно, мастер оборудования завершит работу.


А Windows оповестит нас об установке нового оборудования


Теперь программатором можно пользоваться.

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

Для работы с USBasp`ом есть несколько программ — avrdude, eXtremeBurner, Khazama и.. какие то еще.

На мой взгляд наиболее удобная в использование программа для USBaspa — это Khazama. Она имеет простой и интуитивно понятный оконный интерфейс. Процесс программирования микроконтроллера выполняется в три шага.

Для программирования микроконтроллеров AVR требуется программатор. Проще всего сделать программатор для COM либо LPT. Но я работаю на ноутбуке, а в них сейчас устанавливаются только USB порты. Вот и назрела необходимость обзавестись программатором для AVR по USB. Сейчас, я скорее всего купил бы данный программатор. На ebay они стоят недорого, наверное, даже дешевле чем купить детали, сделать плату и всё спаять. Хотя если посмотреть с другой стороны, заказ с ebay будет идти по почте не меньше месяца, а собрать программатор avr usb своими руками, в силу его простоты, можно за вечер. Более того, если начинающий радиолюбитель сам соберёт программатор, то в дополнении к программатору он получит опыт, бесценный опыт, а это дорогого стоит.
Это второй мой USB программатор для AVR, первым я сделал программатор USB-asp, но он мне не очень понравился, так как иногда отваливался от моего компьютера, хотя на другом компьютере ничего подобного не наблюдалось. Я решил попробовать собрать другой программатор, и мой выбор пал на программатор AVR910. У данного программатора немного по другому реализована схема подключения по USB, и как позже оказалась, на моём компьютере всё работает очень хорошо. Я забыл о проблемах, которые у меня были с моим прошлым программатором. Описанный в данной статье программатор AVR910 является на данный момент моим основным программатором для AVR.
Схема и прошивка использованы с сайта проекта (http://prottoss.com/projects/AVR910.usb.prog/avr910_usb_programmer.htm).


Питается программатор от USB порта. Для того чтобы не требовалось согласование с уровнями линий данных USB порта (3.6В) питание микроконтроллера составляет 3.6В. Для получения из 5В в USB порте 3.6В, используется схема их двух последовательно прямо включённых кремниевых диодов. На каждом диоде падает по 0.7В, а в сумме получается 1.4В. Диоды должны быть кремниевыми, не допускается использование диодов шотки, так как на них падает меньше 0,7В. Выходы разъёма программирования подключены через резисторы на 330 Ом для согласования уровней. Работает устройство на микроконтроллере AtMega8-16 на тактовой частоте 12МГц. На схеме приведены номера выводов для микроконтроллера в DIP корпусе, хотя я отраcсировал плату под SMD корпус, который называется TQFP. Программатор имеет индикацию записи, чтения, наличия питания. Также данный программатор имеет выход, на котором всегда присутствует меандр, частотой 1 МГц. Это очень классная и полезная штука для восстановления микроконтроллеров, у которых из-за ошибочно запрограммированных Fuse битов тактирование сконфигурировано от внешнего источника тактовых импульсов. Я таким образом уже несколько раз восстанавливал микроконтроллеры. Нужно всего лишь посмотреть в даташите на конкретный микропроцессор AVR, к какому выводу подключается внешний источник тактового сигнала, и подпаять к данному выводу источник меандра. Подключить программатор, и перепрограммировать fuse. Всё очень просто, но иногда здорово выручает!
Имеющиеся варианты реализации печатных плат под программатор AVR910 не совсем меня устраивали, и я выполнил трассировку своего варианта (скачать файлы проекта можно в конце статьи).


Защитный рисунок на фольгированный стеклотекстолит нанесён при помощи лазерного принтера и утюга.


После травления получилась вот такая красота. Я не сдержался, и процарапал тонер на дорожках между ножками микросхемы. Мне не терпелось проверить получились они или нет.


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

Групповую заготовку для таблички для печати на фотобумаге размером 10х15 я положил в архив со всеми файлами к данной записи. Скачать его можно в конце данной статьи.
Прошивку для программатора можно скачать по ссылке в конце статьи.
Fuse биты устанавливаются с соответствии с рисунком ниже:


Как запрограммировать микроконтроллер AtMega8 для программатора AVR910 можно посмотреть в моём видео:

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


С термоусадкой всё кажется просто, но мне было сложно сделать отверстия под штыри. Если протыкать отверстия шилом, то при усадке термоусадочная трубочка рвётся начиная от данных отверстий. Я даже испортил несколько заготовок, но у меня в конце экспериментов всё получилось. В итоге я отверстия не протыкал, а проплавлял горячим паяльником с жалом иглой. По краям платы я спаял концы термоусадочной трубки. Спаиваются они очень просто – нагреваются оба конца трубочки, затем быстро, пока они не успели остыть, зажимаются и удерживаются зажатыми до полного остывания. Получается достаточно прочный спай. Я зажимал медицинским зажимом, на термоусадке даже остались следы от насечек на его губках.
При первом подключении к компьютеру программатора AVR910 в системе появится новое устройство AVR910. Теперь необходимо установить драйвера и можно работать.
Я работал с данным программатором на 32 битных системах Windows XP и Windows 7. Всё работает очень хорошо и никаких проблем не возникает. Проблемы возникли у меня когда я попытался установить драйвера для 64 битной Windows 7. Дело в том, что этот драйвер не имеет цифровой подписи Microsoft и 64 битный Windows 7, будучи более защищенным в безопасности, блокирует все драйвера без цифровой подписи. Эту блокировку можно отключить, но это не совсем просто….. Так что имейте ввиду.
Заливаю прошивку в микроконтроллер я при помощи программы AvrOsp2. Она очень простая, не требует установки, бесплатна, поддерживает программатор AVR910 и огромное кол-во микроконтроллеров АВР, хорошо работает и имеет очень удобное меню для работы с FUSE битами. В общем, классная программка, мне она очень нравится, рекомендую! В видео ниже я показал процесс установки драйверов для AVR910, как настроить и пользоваться программой AvrOsp2.

В моей версии программатора я не установил выводной электролитический конденсатор на 22 мкФ, который устанавливается со стороны противоположной дорожкам и паяется в отверстия, которые находятся возле разъёма USB. Возможно потребуется установить дополнительный электролитический конденсатор ёмкостью 10-50мкФ параллельно впаянному керамическому конденсатору 0.1 мкФ, возле зелёного светодиода PWR. Ниже на картинке, от руки показаны места подключения.

Для работы программатора необходим микроконтроллер способный работать до 16 МГц. AVR AtMega8 выпускается в двух сериях, работающих до 8 МГц (серия L), они нам не подходят, так как проект работает от кварца на 12 МГц. Есть и обычная версия, которая работоспособна вплоть до частоты 16 МГц. Это то, что нам нужно. Ниже представлен кусочек даташита AVR AtMega8, в котором вычеркнуты версии микроконтроллеров которые не буду работать в данном программаторе, и выделены зелёной рамкой версии микроконтроллеров которые будут работать в данном проекте.

Микроконтроллеры фирмы ATMEL успели завоевать широкую популярность. Их программирование перед применением можно выполнить непосредственно в плате готового устройства через несложный ISP кабель, подключаемый к LPT порту персонального компьютера или кабель чуть посложнее, подключаемый к COM порту. Но в настоящее время всё больше материнских плат выпускается без того и другого, а в ноутбуках LPT исчез уже давно, сменившись интерфейсом USB. Впрочем, под этот интерфейс программаторы тоже существуют и доступны.

Для масштаба рядом лежит обычный 5 мм светодиод.
Этот программатор USBASP поддерживает следующие микроконтроллеры:

Список поддерживаемых МК

ATtiny11, ATtiny12, ATtiny13, ATtiny15, ATtiny22, ATtiny2313, ATtiny24, ATtiny25, ATtiny26, ATtiny261, ATtiny28, ATtiny44, ATtiny45, ATtiny461, ATtiny84, ATtiny85, ATtiny861
AT90S1200, AT90S2313, AT90S2323, AT90S2343, AT90S4414, T90S4433, AT90S4434, AT90S8515, AT90S8535
ATmega8, ATmega48, ATmega88, ATmega16, ATmega161, ATmega162, ATmega163, ATmega164, ATmega165, ATmega168,ATmega169, ATmega32, ATmega323,ATmega324, ATmega325,
ATmega3250, ATmega329, ATmega64, ATmega640, ATmega644, ATmega645, ATmega6450, ATmega649, ATmega6490, ATmega128, ATmega1280, ATmega1281, ATmega2560, ATmega2561, ATmega103, ATmega406, ATmega8515, ATmega8535
AT90CAN32, AT90CAN64, AT90CAN128
AT90PWM2, AT90PWM2B, AT90PWM3, AT90PWM3B
AT90USB1286, AT90USB1287, AT90USB162, AT90USB646, AT90USB647
AT89S51, AT89S52
AT86RF401


Вместе с программатором поставляется 10-жильный летночный кабель с разъёмами.


Питание программатора берется с USB порта компьютера.


На плате программатора имеется место для распайки LDO стабилизатора напряжения на 3,3В, но сам он не распаян.
Программатор поддерживается программой AVRDUDE. Сама программа консольная, но под неё есть . Утилиту avrdude можно найти в папке /hardware/tools/ в дистрибутиве Arduino IDE или скачать в интернете.
Перед началом работы с программатором потребуется скачать драйвер со .
Также программатор поддерживается средой разработки Arduino.


Для программатора существует прошивка под названием , превращающая его в STK500-совместимый и воспринимаемый фирменной средой разработки ATMEL AVR Studio, но в силу высокой вариативности китайского железа пользоваться ею можно только на свой страх и риск. Планирую купить +32 Добавить в избранное Обзор понравился +17 +42

Сегодня расскажу, о недорогим и очень простом программаторе USBAsp v.2.0 для микроконтроллеров AVR (основанный на дизайне Томаса Фишла), с его помощью можно прошивать контроллеры AVR по интерфейсу ISP (не выпаивая его с платы), а самое главное, можно прошить загрузочный сектор на контроллерах Arduino.

Технические параметры

Напряжение питания: 5 В, DC
Интерфейс: USB 2.0
Программирование/ чтение: Atmel (AVR)
Габариты: 70 мм x 18 мм x 10 мм
Поддержка операционных систем: Windows XP / 7 / 8 / 8.1 / 10.

Общие сведения

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

Программатор собран на синий печатной плате, слева расположен USB-разъем необходимый для подключения к компьютеру. В центре располагается контроллер ATmega8A, рядом установлен кварцевый резонатор на 12 МГц и электрическая обвязка (резисторы, конденсаторы). Справа расположен 10-контактный разъем (два ряда, по пять выводов, шагом 2.54 мм), обеспечивающий обмен данными с прошиваемым микроконтроллером (интерфейс ISP). В комплекте поставляется кабель, с каждой стороны которого, установлен разъем IDC (10 выводов), для простоты прошивки некоторых плат (например Arduino), советую приобрести адаптер-переходник с 10-pin на 6-pin. Назначение выводов программатора USBAsp можно посмотреть на рисунке ниже, вид на стороне программатора.

Назначение выводов:
1 – MOSI
2 – VCC
3, 8, 10 – GND
4 – TXD
5 – RESET
6 – RXD
7 – SCK
9 – MISO

Световая индикация
Красный светодиод G — Включен
Красный светодиод R — Обмен данными

Перемычки
JP1 — POWER, управляет напряжением на разъеме ISP VCC (вывод 2), можно установить на + 3.3В, + 5В или вовсе убрать перемычку, если программируемое устройство, имеет собственный источник питания.
JP2 — SERVICE, обновления прошивки USBasp.
JP3 — SLOW, программирования на низких скоростях, если программируемое устройство, работает на частоте ниже 1.5 МГц, SCK (вывод 7) уменьшит частоту с 375 кГц до 8 кГц.

Принципиальная схема программатора USBAsp V2.0 можно посмотреть на рисунке ниже.

Список поддерживаемых AVR микроконтроллеров:
Mega Series:
ATmega8, ATmega8A, ATmega48, ATmega48A, ATmega48P, ATmega48PA, ATmega88, ATmega88A, ATmega88P, ATmega88PA, ATmega168, ATmega168A, ATmega168P, ATmega168PA, ATmega328, ATmega328P, ATmega103, ATmega128, ATmega128P, ATmega1280, ATmega1281, ATmega16, ATmega16A, ATmega161, ATmega162, ATmega163, ATmega164, ATmega164A, ATmega164P, ATmega164PA, ATmega169, ATmega169A, ATmega169P, ATmega169PA, ATmega2560, ATmega2561, ATmega32, ATmega32A, ATmega324, ATmega324A, ATmega324P, ATmega324PA, ATmega329, ATmega329A, ATmega329P, ATmega329PA, ATmega3290, ATmega3290A, ATmega3290P, ATmega64, ATmega64A, ATmega640, ATmega644, ATmega644A, ATmega644P, ATmega644PA, ATmega649, ATmega649A, ATmega649P, ATmega6490, ATmega6490A, ATmega6490P, ATmega8515, ATmega8535,
Tiny Series: ATtiny12, ATtiny13, ATtiny13A, ATtiny15, ATtiny25, ATtiny26, ATtiny45, ATtiny85, ATtiny2313, ATtiny2313A
Classic Series: AT90S1200, AT90S2313, AT90S2333, AT90S2343, AT90S4414, AT90S4433, AT90S4434, AT90S8515, AT90S8535
Can Series: AT90CAN128
PWN Series: AT90PWM2, AT90PWM3

Установка драйвера USBAsp на Windows 8/10

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

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

Скачиваем с цифровой подписью, разархивируем и запускаем «InstallDriver.exe»

Драйвер установлен, в «Диспетчере устройств » пропадет восклицательный знак с «USBAsp ».

Установка драйвера на Windows XP и Windows 7 аналогичная, программатор готов к работе.

Программу разработал «Боднар Сергей », работает не только с китайским программатором USBAsp v.2.0, но и другими программаторами. Первым делом скачиваем программу, разархивируем и запускаем «AVRDUDEPROG.exe ».
В качестве примера, прошью китайскую плату в которой установлен микросхема ATmega328P. В программе, жмем на вкладку «Микроконтроллеры » и выбираем ATmega328P.

Далее, необходимо выбрать прошивку, в строке «Flash » нажимаем «. . . », переходим в папку «C:\Program Files\Arduino\hardware\arduino\avr\bootloaders\atmega » и выбираем «ATmegaBOOT_168_atmega328.hex », жмем «Открыть »

Подключаем программатор к плате «Arduino UNO R3 », и нажимаем кнопку «Программирование ».

В конце, выйдет диалоговое окно, о удачном окончании программировании.

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

В данной статье приведено описание USB программатора для микроконтроллеров AVR, который можно собрать своими руками. Построен он на микроконтроллере Atmega8 и способен работать от USB разъема компьютера. Данный программатор совместим с STK500 v2.

Описание USB программатора

USB программатор построен на плате, сделанной из одностороннего фольгированного стеклотекстолита . На плате есть 2 перемычки: одна расположена под разъё­мом SPI, вторая перемычка расположена неподалеку от того же разъема.

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

  • SUT1 = 0
  • BOOTSZ1 = 0
  • BOOTSZ0 = 0
  • CKOPT = 0
  • SPIEN = 0

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

Программирование Atmega8 через LPT-порт компьютера

Самый быстрый и дешевый способ запрограммировать Atmega8 – применить LPT-программатор для AVR. Подобная схема приведена ниже.

Питание микроконтроллера осуществляется от простого стабилизатора напряжения 78L05. В качестве оболочки для программирования можно использовать программу UniProf.

При первом включении программы и при не подключенном контроллере, нажав кнопку «LPTpins», необходимо настроит выводы LPT-порта следующим образом:

В момент запуска UniProf, она автоматом определяет вид микроконтроллера. Загружаем в память UniProf прошивку Atmega8_USB_prog.hex, отклоняем подключение файла EEPROM.

Выставляем следующим образом фьюзы (для программы UniProF), нажав кнопку «FUSE»:

Для запоминания установок нажимаем все три кнопки «Write». Затем нажав на «Erase» предварительно очищаем память прошиваемого микроконтроллера. После этого уже жмем на «Prog» и дожидаемся завершения прошивки.

Настройка USB программатора

После того как наш микроконтроллер прошит, его необходимо установить в плату USB программатора. Далее подключаем программатор к USB порту компьютера, но пока питание не подаем.

Настройка порта:

Настройка терминала:

Настройка ASCII:

Теперь после всех проделанных процедур, подаем питание на USB программатор. Светодиод HL1 должен промигать 6 раз и затем светится постоянно.

Для проверки связи USB программатора с компьютером 2 раза нажимаем клавишу «Enter» в программе HyperTerminal. Если все в порядке мы должны увидеть следующую картину:

Если это не так проверяем еще раз монтаж, особенно линию TxD.

Далее вводим версию программатора 2.10, так как без этого програм­матор не будет работать с программами «верхнего уровня». Для этого вводим «2» и нажимаем «Enter», вводим «а» (английская) и нажимаем «Enter».

USB программатор способен распознавать подключение программируемого микроконтроллера. Выполнено это в виде контроля «подтяжки» сигнала Reset к источнику питания. Этот режим включается и выключается следующим образом:

  • «0», «Enter» — режим выключен.
  • «1», «Enter» — режим включён.

Изменение скорости программирования (1МГц):

  • «0», «Enter» – максимальная скорость.
  • «1», «Enter» – сниженная скорость.

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

(скачено: 1 203)

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

Классификация и выбор микроконтроллеров
Организация памяти микроконтроллера
Порты ввода-вывода
Таймеры-счетчики
Прерывания
Аналого-цифровой преобразователь
Интерфейсы связи


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

Главной особенностью микропроцессора является возможность программирования логики работы.

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

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

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

Основные преимущества микропроцессорных систем по сравнению с цифровыми системами на «жесткой логике».

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

Хотя микропроцессор является универсальным средством для цифровой обработки информации, однако отдельные области применения требуют реализации определенных специфических вариантов их структуры и архитектуры. Поэтому по функциональному признаку выделяются два класса: микропроцессоры общего назначения и специализированные микропроцессоры. Среди специализированных микропроцессоров наиболее широкое распространение получили микроконтроллеры, предназначенные для выполнения функций управления различными объектами, и цифровые сигнальные процессоры (DSP – Digital Signal Processor), которые ориентированы на реализацию процедур, обеспечивающих необходимое преобразование аналоговых сигналов, представленных в цифровой форме.

Неполный список периферии, которая может присутствовать в микроконтроллерах, включает в себя:

  • различные интерфейсы ввода-вывода, такие как UART, I²C, SPI, CAN, USB, ETHERNET;
  • аналого-цифровые и цифро-аналоговые преобразователи;
  • компараторы;
  • широтно-импульсные модуляторы;
  • таймеры-счетчики;
  • генератор тактовой частоты;
  • контроллеры дисплеев и клавиатур;
  • массивы встроенной флэш-памяти.

Идея размещения на одном кристалле микропроцессора и периферийных устройств принадлежит инженерам М. Кочрену и Г. Буну, сотрудникам Texas Instruments. Первым микроконтроллером был 4-х разрядный TMS1000 от Texas Instruments, который содержал ОЗУ (32 байта), ПЗУ (1 кбайт), часы и поддержку ввода-вывода. Выпущенный в 1972 году, он имел новую по тем временам возможность – добавление новых инструкций.

В 1976 году (через 5 лет после создания первого микропроцессора) на свет появился первый микроконтроллер фирмы Intel, получивший имя 8048. Помимо центрального процессора, на кристалле находились 1 килобайт памяти программ, 64 байта памяти данных, два восьмибитных таймера, генератор часов и 27 линий портов ввода-вывода. Микроконтроллеры семейства 8048 использовались в игровых консольных приставках Magnavox Odyssey, в клавиатурах первых IBM PC и в ряде других устройств.

На сегодняшний день среди крупных производителей микроконтроллеров следовало бы упомянуть Atmel, Microchip, ST Microelectronics, Texas Instruments, Freescale Semiconductor, NXP и др.


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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

.

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

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

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

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

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

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

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

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

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

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

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

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

Ходят слухи о дешевом чипе, который изначально поддерживает USB, имеет набор инструментов с открытым исходным кодом и стоит четверть.Это не слухи: микроконтроллер CH552 можно купить прямо сейчас. Удивительно, но мало кто выбирает этот дешевый чип для своего следующего проекта. Если нет оригинальных проектов с использованием этого чипа, никто не будет использовать этот чип. Лови 22 и все такое.

Подобно великодушному богу, [Аарон Кристофель] получил вашу поддержку рабочим примером программирования этого дешевого чипа и выполнения с ним чего-то полезного. Он мигает светодиодами, записывает данные на дисплей I2C и делает все, что вам нужно от микроконтроллера, который стоит несколько копеек.

CH552 и его друзья, маленький CH551 вплоть до CH559, содержат ядро ​​8051, где-то около 16 КБ флэш-памяти, высокопроизводительные чипы имеют контроллер USB, есть SPI, PWM, I2C, и это стоит копейки. В отличие от многих других микросхем, вы можете найти SDK и наборы инструментов. Вы можете запрограммировать чип через USB. Ясно, что мы смотрим на что-то действительно крутое, если кто-то напишет для него оболочку Arduino. Мы еще не достигли цели, но уже близко.

Чтобы запрограммировать эти микросхемы, [Аарон] сначала должен был подключить микроконтроллер к цепи.Это был всего лишь кусок перфокарта, резистор, несколько заглушек и вилка USB A. Вот и все, что нужно. Это довольно стандартное ядро ​​8051, поэтому написать код относительно легко. Загрузка выполняется с помощью программного обеспечения WCHISPTool, с параметрами, доступными для вашего любимого вкуса * nix.

Но становится лучше. Одна из главных особенностей CH552 — USB. Это означает, что нет дорогих или странных программистов, да, но это также означает, что CH552 может эмулировать USB HID-устройство. CH552 может стать USB-клавиатурой.Чтобы продемонстрировать это, [Аарон] запрограммировал плату CH552 (DE, здесь переводчик Google), загруженную сенсорными панелями и светодиодами, чтобы она стала USB-клавиатурой.

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

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

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

Семейства микроконтроллеров понимают программу, написанную на языке ассемблера или языке C, которая должна быть скомпилирована в язык машинного уровня, известный как двоичный язык (то есть с нулями и единицами). Запрограммированный файл сохраняется на жестком диске компьютера или в памяти микроконтроллера. Ассемблер используется для перевода программы сборки в машинный код. Чтобы написать программу на языке ассемблера, программист должен знать процессор или оборудование.Языки низкого уровня используются в кросс-разработке. Шестнадцатеричная система использовалась как более эффективный способ представления двоичных чисел, тогда как при использовании двоичного языка ЦП работает очень быстро.

Сегодня мы можем использовать множество различных языков программирования, таких как C, JAVA, ORACLE и другие. Эти языки называются языками высокого уровня; Чтобы написать программу на языке высокого уровня, программисту не нужны какие-либо знания об оборудовании, которое используется для разработки приложений высокого уровня. Компилятор играет жизненно важную роль в переводе высокоуровневой программы на машинный уровень, поскольку языки высокого уровня используются в собственной разработке.

Вот некоторые инструменты, которые используются при программировании микроконтроллеров:

  • Keil uVison
  • Code Editor
  • Assembler
  • C compiler
  • Burner / Programmer

Keil Uvison:

The Keil Uvison — бесплатное программное обеспечение, которое решает многие проблемы разработчика встраиваемых систем. Это программное обеспечение представляет собой интегрированную среду разработки (IDE), в которую интегрирован текстовый редактор для написания программ, компилятор, который преобразует исходный код в шестнадцатеричный файл.

Программное обеспечение Keil uVsion

Руководство по началу работы с Keil Uvison:

1. Щелкните значок Keil Vision на рабочем столе.

В этот процесс входят следующие шаги:

Рисунок 1

2. Щелкните меню Project в строке заголовка

Затем щелкните New Project

Рисунок 2

3. Сохраните проект, введя подходящее имя проекта без расширения в вашей собственной папке, расположенной либо в C: \, либо в D: \

Рисунок 3

4. Затем нажмите кнопку «Сохранить» выше.

Выберите компонент для вашего проекта. например, Atmel ……

Щелкните по символам + в соответствии с вашими требованиями. Пример здесь выбран Atmel.

Рисунок 4

5 . Выберите AT89C51, как показано ниже.

Рисунок 5

6. Затем нажмите «ОК»

Следующие шаги включают в вышеуказанный процесс:

Рисунок 6

7. Затем нажмите ДА или НЕТ ……… в основном «НЕТ».

Теперь ваш проект готов к ИСПОЛЬЗОВАНИЮ.

Теперь дважды щелкните Target1, вы получите еще одну опцию «Source group 1», как показано на следующей странице.

Рисунок 7

8. Щелкните опцию файла в строке меню и выберите «новый»

Рисунок 8

9. Следующий экран будет таким, как показано на текстовой странице

Рисунок 9

10. Теперь начните писать запрограммируйте в «EMBEDDED C» или «ASM».

Чтобы программа была написана на языке Ассемблер, мы должны сохранить ее с расширением «.Asm », а для программы на основе« EMBEDDED C »мы должны сохранить его с расширением« .C »

Рисунок 10

11. Теперь щелкните правой кнопкой мыши группу источников 1 и выберите« Добавить файлы в группу источников »

Рисунок 11

12. Теперь выберите в соответствии с расширением файла, указанным при сохранении файла.

Щелкните только один раз на опции « ДОБАВИТЬ ».

Теперь нажмите функциональную клавишу F7 для компиляции. Если это произойдет, появится какая-либо ошибка.

Если файл не содержит ошибок, одновременно нажмите Control + F5.

Редактор кода или текстовый редактор:

Редактор кода используется для написания программы. Редакторы uVision включают в себя все стандартные функции, такие как цветная подсветка синтаксиса, и быстро выявляют ошибки. Редактор доступен во время отладки. Естественная среда отладки помогает быстро выявлять и исправлять ошибки в вашей программе. После написания программы в редакторе кода сохраните этот файл в формате .asm или .C в зависимости от того, какой ассемблер вы выбрали.

Keil Uvison Editor

Ассемблер:

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

Компилятор:

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

Ассемблер преобразует инструкции в машинный код:

Схема преобразования языка ассемблера в машинный уровень

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

➢ Ассемблер создаст целевой файл и список файлов. Расширение объектного файла — «.obj», а расширение файла списка — «.lst».

➢ Ассемблеру требуется третий шаг, известный как связывание. Программа связывания берет один или несколько файлов объектов и создает целевой файл с расширением «.abs».

➢ Файл «.abs» загружается в программу под названием OH (преобразователь из целевого в шестнадцатеричный), которая создает файл с расширением «шестнадцатеричный», готовый для записи в ПЗУ микроконтроллера.

Записывающее устройство / Программист:

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

Программист / записывающее устройство

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

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

Программисты и компиляторы различны для разных микроконтроллеров, которые используются разными компаниями, например, микроконтроллер 8051 «flash magic» используется для программирования микроконтроллера и микроконтроллер AT89C51 «программатор» используется для программирования микроконтроллера. Таким образом мы программируем код в микроконтроллере с помощью записывающего устройства или программатора.

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

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

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

В течение многих лет программирование микроконтроллеров предполагало выбор между двумя языками: 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 или другие, то выбор языка и систем может быть важными факторами в поиске наилучшего пути разработки.

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

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

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

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

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

Шаги для программирования микроконтроллера

Шаги для программирования микроконтроллера:

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

2. Установите программное обеспечение, поставляемое с программатором.

3. Подключите программатор к ПК и запустите программное обеспечение.

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

5. Нажмите опцию программы / записи в программном обеспечении программатора. В любом случае, т.е. независимо от того, успешно или нет программирование, программное обеспечение покажет сообщение.

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

для начинающих | разработано специалистами по программному обеспечению j-labs

Проверьте, насколько просто и легко программировать микроконтроллер Arduino.

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

Пусть это руководство вдохновит вас на создание собственных устройств, микромашин, компонентов умного дома и многого другого!

Настройте свою плату и IDE

Шаг 1 — вам нужна плата Arduino. Существует множество типов плат, а также множество клонов, для начала, Arduino Uno — самый дешевый выбор.

Шаг 2 — Загрузите программное обеспечение Arduino Ide.Загрузите программное обеспечение IDE, совместимое с вашей ОС, с официальной страницы https://www.arduino.cc/en/Main/Software.

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

Шаг 3 — Включите плату. Подключите плату Arduino к ПК с помощью USB-кабеля.

Шаг 4 — Запустите и настройте IDE.

  • Файл -> Новое для запуска нового проекта
  • Инструменты -> Плата для выбранного типа платы, которую вы используете
  • Инструменты -> Последовательный порт для выбора порта, плата подключена к

Теперь вы готовы к написать код.

Структура кода

Программное обеспечение Arduino является открытым. Исходный код среды Java выпускается под лицензией GPL, а библиотеки микроконтроллеров C / C ++ — под лицензией LGPL.

Структура кода состоит из двух основных функций:

· Функция Setup ()

· Функция Loop ()

Пустая настройка () {

}

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

Пустой цикл () {

}

Эта функция последовательно зацикливается, позволяя программе изменяться и реагировать. Активно управлять платой

Содержит основное тело программы.

Создание проекта

В этом руководстве я буду использовать два модуля Arduino для создания простого детектора пыли / загрязнения.

Я буду использовать:

  • Датчик пыли DMS501
  • простой двухстрочный ЖК-дисплей (с поворотным потенциометром) 2 строки с 16 буквами для представления результата измерения.
  • В качестве контроллера я использую Arduino Mega (клон), но все используемые модули можно подключить к плате Arduino.

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

Примечание:

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

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

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

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

Схема контактов для ЖК-дисплея, как было сказано ранее, это не единственный способ сделать это с ЖК-дисплеем 2×16:

Описание контактов:

1 Земля (0 В) — Земля
2 Напряжение питания; 5 В (4,7 В — 5,3 В) — Vcc
3 Регулировка контрастности; через переменный резистор — VEE
4 Выбирает регистр команд при низком уровне и регистр данных при высоком — Регистр Выберите
5 Низкий для записи в регистр; Высокий уровень для чтения из регистра — чтение / запись
6 Отправляет данные на выводы данных при подаче импульса от высокого к низкому — Включить
7 8-битных контактов данных — D80
8 8-битных контактов данных — D81
9 8-битных Контакты данных — D82
10 контактов 8-битных данных — D83
11 8-битных контактов данных — D84
12 8-битных контактов данных — D85
13 8-битных контактов данных — D86
14 8-битных контактов данных — D87
15 Backlight VCC (5V) — Led +
16 Backlight Ground (0V) — Led

И датчик пыли:

Полная схема подключения:

Код — переменные и библиотеки

Этот код C ++ универсален и будет работать на любой плате Arduino или клонировать.

Я разделил все переменные на первую часть кода.

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

Другая часть — определить PINS, к которым фактически подключаются кабели.

Настройка ()

Часть настройки содержит код, который будет выполняться при запуске — только один раз.

Инициализация для двух модулей.

Шлейф для прогрева датчика.

Вывод информации на консоль и на ЖК-дисплей

Loop ()

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

Запрос данных от датчика и очистка ЖК-дисплея для удаления текста счета.

Я использую методы библиотеки dsm501 для получения информации о плотности частиц

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

Lib содержит нетривиальные вычисления для преобразования его в мкг / м3 (микрограмм на квадратный метр)

Консоль

Вход в Инструменты-> Serial Monitor покажет консоль

Конечное устройство

Сводка

Arduino удобна для пользователя микроконтроллер, от простого к дешевому и легкого в запуске.

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

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

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

Программирование микроконтроллеров: Введение — 1-е издание

Содержание

Системы счисления, операции и коды

Сравнение цифровых и аналоговых величин

Цифровая система нумерации (Base 10)

Двоичная система нумерации (база 2)

Восьмеричная система счисления (база 8)

Шестнадцатеричная система счисления (основание 16)

Двоично-десятичная система

Двоичные преобразования

Бинарные операции

Восьмеричные преобразования

Шестнадцатеричные преобразования

Шестнадцатеричные операции

Дополнения двоичных чисел до единиц и двоек

Подписанные номера

Код ASCII


Полупроводники и цифровая логика

Диодная логика

Инвертор

Ворота И

Ворота OR

Ворота NAND

Ворота NOR

Ворота Эксклюзив-ИЛИ

Ворота Exclusive-NOR


Аппаратное обеспечение микроконтроллера

Транзистор как переключатель

Интегральная схема TTL

Интегральная схема CMOS

Использование логических вентилей на интегральных схемах

Семисегментные дисплеи

Жидкокристаллические дисплеи

Клавиатуры

Микроконтроллер 68HC11 / 68HC12

EVBU / BUFFALO


Программное обеспечение микроконтроллера

Концепции программирования

Системное программное обеспечение

Разработка программы

Диаграммы потока и состояния

Модель программирования HC11

HC11 Режимы адресации памяти


Инструкции

Движение данных

Арифметика

Логика

Перемещение и вращение

Умножение и деление

Манипуляции с CCR (флагом)

Операции на битовом уровне


Управляющие структуры и подпрограммы

Режим индексированной адресации

Прыжки и разветвления

Сравнить инструкции

Условный поток и программные циклы

Работа со стеком

Подпрограммы

Подпрограмма BUFFALO


Привет, мир!

Создание файлов исходного кода

Программы сборки

Десять полезных программ


Порты ввода / вывода (I / O)

Режим передачи данных

Порт A

Порт B

Порт C

Порт D и порт E

Ввод-вывод с использованием квитирования

Проект A с использованием порта B


Прерывания

Основы работы с прерываниями

Обслуживание прерывания

Управление прерываниями

Маскируемые прерывания

Выход Сравнить

Немаскируемые прерывания

Прерывания на ЭВБУ

Проект с прерываниями


Аналоговый захват

Аналого-цифровое преобразование

Инструменты для А / Д

A / D Operation

Проект с аналоговым захватом


Входной захват

Базовые модули ввода данных

Регистры ввода-захвата

Входная логика обнаружения фронта

Логика генерации прерывания

Проект с захватом входных данных


Программирование высокого уровня

Уровни языков программирования

Программирование на C

Примеры

Проект с C

Приложение 1– Дополнительный веб-сайт

Приложение 2 — Состояния и разрешение для двоичных чисел

Приложение 3– Основные булевы теоремы и тождества

Приложение 4 — Цветовой код резистора

Приложение 5– Модель жизненного цикла разработки программного обеспечения Waterfall

Приложение 6 — Загрузка вашей программы в EEPROM

Приложение 7– Широтно-импульсная модуляция

Приложение 8 — HC11 Набор команд

Приложение 9— Полный глоссарий

.

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

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