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

Содержание

Введение

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

Модуль связывается с остальной схемой с помощью TTL или с помощью встроенной микросхемы MAX232. Это означает, что вся связь осуществляется с помощью UART микроконтроллера PIC, и все наши команды от PIC будут отправляться на порт UART с помощью .

Драйвер шагового двигателя

Один из самых простых вариантов управления Шаговым Двигателем (ШД) это полношаговое управление (full step). В этом варианте сигналы управления сдвинуты на 90°. Поэтому можно взять периодический сигнал, на один делитель частоты подать его в прямом виде, на другой – в инверсном.

Рис. 5a. Формирователь сигналов управления шаговым двигателем.

Рис. 5b. Диаграмма на выходе формирователя.

Изменение частоты на входе CLC будет изменять частоту управляющих сигналов шагового двигателя

Входную частоту можно брать с входа микроконтроллера (внешний сигнал), либо от внутреннего источника – ШИМ или NCO генератора.
При управлении ШИМ-ом нужно менять 2 параметра: регистр периода (частота) и регистр скважности, так как управляющий сигнал должен быть с 50% скважностью.
Применение NCO (Numerically Controlled Oscillator, управляемый генератор) выглядит более привлекательным, так как это генератор может автоматически формировать меандр, поэтому для изменения частоты нужно менять значения только в одном регистре.
Для смены направления нужно инвертировать сигналы на одной из фаз

Custom floating point format on FPGA

Всем привет! В данной статье речь пойдет о числах в формате с плавающей точкой и в частности о реализации специализированного формата FP23 на программируемых логических интегральных схемах (ПЛИС). В рамках конкретного проекта у меня родилась мысль реализовать оптимальный для определенных нужд формат данных с плавающей точкой. В итоге эта мысль переросла в реальный проект, который впоследствии нашел применение в некоторых интересных задачах цифровой обработки сигналов. В статье рассмотрены основные сложности при реализации формата данных floating point на ПЛИС Xilinx, рассмотрены базовые математические операции в формате FP23. Также в конце статьи вы можете найти исходный код проекта, которой можно свободно использовать в своих задачах или на его основе реализовать похожие форматы данных.

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

Хотя программа снабжена комментариями, здесь я рассмотрю некоторые ее фрагменты. Когда PIC-контроллер включается, отображается короткое приветственное сообщение. Затем начинается 15-секундный отсчет. Я добавил отсчет по двум причинам:

  1. позволить GSM модулю зарегистрироваться в сети;
  2. визуально показать пользователю, что что-то происходит, и микроконтроллер работает.

При завершении обратного отсчета PIC-контроллер отправляет команду:

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

Затем модуль возвращает следующую строку:

Это означает, что GSM модуль зарегистрирован в сети NetCom. NetCom – это название провайдера. Именно это название мы хотим отобразить на LCD дисплее. Теперь нам нужно извлечь это название из полученной строки. Способ, которым я это делаю, заключается в чтении всей строки в массив. Затем я ищу «какие-то_символы». Когда «какие-то_символы» найдены, я сохраняю их позиции в другом массиве. Назовем это стартом и стопом. Затем я использую значения старта и стопа, чтобы отобразить символы между ними на LCD дисплее. Возможно, это не самый изящный способ, но он прост.

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

Чтобы отправить SMS, я должен послать чуть больше AT команд.

Сначала я посылаю команду:

Это выбор формата SMS сообщения. 1 говорит модулю о необходимости перейти в текстовый режим.

Затем я посылаю команду:

“receiver” – это номер получателя, на который я хочу отправить сообщение.

Третьей я посылаю команду:

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

Это символ в обычно таблице ASCII. Теперь модуль отправит сообщение.

SCADA «BortX» с поддержкой языка управления в рамках ANSI /ISA-88 для ESP8266

Признаюсь честно — очень люблю cовременные микроконтроллеры. В частности, производства китайского производителя Espressif Systems

с интерфейсом Wi-Fi. Речь, естественно, идет оESP8266 иESP32 , которые обладают большим потенциалом в образовательном контексте. Конечно, у них есть свои недостатки. Но цена. Это чудо. В частности, если покупаешь условный «Witty Cloud» за три доллара, в котором даже не надо мучаться вопросами питания и программирования. Сфера применения в IoT позволяет создать собственные проекты автоматизации различными путями — классическим образом: путем написания кода и работы в IDE. Или через тот же FLProg. Однако, как всегда, есть нюансы, несколько тормозящие репрезентацию работы в рамках типового применения ESP8266 как аппаратной основы. И проблема вовсе не в сетевом подключении, осуществляемой к домашней/офисной локальной сети с выходом в Internet через роутер.

Из чего же сделан ИИП?

Сердцем импульсного источника питания служит ШИМ-контроллер. Структурная схема одного из вариантов специализированного ШИМ-контроллера приведена на рис.1.

Рис.1. Структура специализированной микросхемы драйвера преобразователя питания.

Arduino nano

Основным элементом схемы является SR-триггер, который управляет выходным каскадом включения силового ключа.

Триггер запускается по тактовым синхросигналам (вход S, Set). Сбросом (вход R, Reset) управляют сигналы компаратора C1, опорный сигнал для которого формируется операционным усилителем сигнала ошибки А1. Выход триггера управляет выходными ключами, управление которыми может быть заблокировано сигналами перенапряжения (компаратор C2), бланкирования и др.

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

Итого, для построения управляемого интеллектуального источника питания нам нужно иметь микросхему ШИМ-контроллера и микроконтроллер, или же можно совместить – на базе микроконтроллера сделать ШИМ-контроллер преобразователя энергии.

Вторая жизнь электродуховки «Харьков»

Из песочницы

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

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

Первые микроконтроллеры PIC появились во второй половине прошлого века. Быстрые 8-разрядные микросхемы компании Microchip мгновенно завоевали популярность. Двухшинная гарвардская архитектура обеспечивает беспрецедентную скорость. Ее разрабатывали на основе набора регистров, для которого характерно разделение шин.

Выбирая язык программирования микроконтроллеров PIC, необходимо учитывать, что в основе микросхем семейства лежит уникальная конструкция RISC-процессора. Симметричная система команд позволяет произвольно выбирать метод адресации, выполнять операции в любом регистре. На данный момент компания «Микрочип» выпускает 5 разновидностей МК, которые совместимы по программному коду:

  1. PIC18CXXX (75 команд, встроенный аппаратный стек);
  2. PIC17CXXX (58 команд 16-разрядного формата);
  3. PIC16CXXX (35 команд, большой набор периферийных устройств);
  4. PIC16C5X (33 команды 12-разрядного формата, корпуса с 18–28 выводами);
  5. PIC12CXXX (версии с 35 и 33 командами, интегрированный генератор).

В большинстве случаев МК PIC имеют однократно программируемую память. Встречаются более дорогие модели с Flash или ультрафиолетовым стиранием. Ассортимент из 500 наименований позволяет подобрать изделие для любой задачи. Сейчас производитель концентрирует усилия на развитии 32-разрядных версий с увеличенным объемом памяти.

Языки программирования микроконтроллеров PIC — это Ассемблер и Си. Для кодирования подходят любые интегрированные среды разработки (IDE). Программировать с их помощью очень удобно. Они автоматически переводят текст программы в машинный код

Важной характеристикой IDE является возможность пошаговой симуляции работы готового ПО. Мы рекомендуем пользоваться средой разработки MPLAB

Ее созданием занималась компания Microchip.

Перед началом работы в MPLAB советуем каждый раз заводить отдельную папку. Это нужно, чтобы не запутаться в файлах проектов. Интерфейс программы интуитивно понятный, и трудностей с ним возникнуть не должно. Для отладки используются фирменные отладчики Pickit, ICD, REAL ICE, IC PROG. В них имеется возможность просмотра содержимого памяти, установки контрольных точек.

Измерение Емкости. Емкостной сенсор. Сенсорная кнопка

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

сигналы комментарий
Осциллограммы без касания сенсора
Осциллограмма при «нажатом» сенсоре

Рис.16a. Диаграммы работы мультивибратора при изменении времязадающей емкости.

Подобным методом можно детектировать протечку воды или определять влажность почвы и использовать для автоматизации полива цветов ))

Обзор PIC– контроллеров.

В настоящее время фирма Microchip выпускает пять семейств микроконтроллеров:

● PIC 16 C 5 X включает недорогие контроллеры с минимальным набором периферийных устройств:

● Р I С12Сххх содержит МК в миниатюрном 8–выводном корпусе со встроенным тактовым генератором и модулем 8–разрядного АЦП (для некоторых моделей);

● Р I С16х/7х/8х/9х объединяет МК с развитой периферией (таймеры–счетчики с опциями захвата/сравнения, широтно–импульсные модуляторы, аналоговые компараторы, АЦП, контроллеры последовательных интерфейсов);

● Р IC 17С4х/5хх включает высокопроизводительные МК с расширенной систе­мой команд и обширной периферией. Микроконтроллеры этого семейства имеют встроенный аппаратный умножитель 8 r 8, выполняющий операцию ум­ножения за один машинный цикл;

● Р I С18Сххх — новое семейство с оптимизированным под использование Си–компилятора RISC –ядром и частотой внутренней шины до 10 МГц.

Потребителям предоставляются три модели микроконтроллеров семейства PICMicro с различными сочетаниями характеристик и свойств.

Младшие модели.

К ним относятся МК серии 16С5х и 8–выводные МК серии 12С5хх, которые реализуют нижний уровень возможностей микроконтроллеров семейства PICMicro и используются для создания небольших и простых приложе­ний. Они выполняют подмножество команд старших моделей и программно со­вместимы с ними. Младшие модели сыграли большую роль в развитии семейства PICMicro . Однако ограниченные возможности обработки прерываний, малый объем доступной памяти программ и RAM , отсутствие внутрисистемного про­граммирования и портов ввода/вывода с расширенными функциями, снижение стоимости технологических затрат явились причинами перехода к моделям мик­роконтроллеров среднего уровня, которые продавались по такой же (и даже бо­лее низкой) цене, как и МК младших моделей.

Средние модели.

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

Старшие модели.

Микроконтроллеры старших моделей (серии 17Схх) раз­рабатывались для взаимодействия с другими цифровыми устройствами. Поэтому в них отсутствуют имеющиеся в моделях среднего уровня АЦП и устройства для подключения датчиков. В контроллерах используются 16–битные команды, спо­собные адресовать по 128К байт памяти программ и памяти данных (64К слов по 16 бит). Для чтения/записи памяти программ в МК используется модифицированное ядро центрального процессора, позволяющее различным командам обращаться ко всем регистрам процессора. Это повышает гибкость микроконтроллеров и расширяет области их применения. Младшие и средние модели такой возможно­стью не обладают. Кроме того, в старших моделях PICMicro имеется несколько векторов прерываний, в то время как в микроконтроллерах среднего уровня ис­пользуется только один вектор прерывания.

Декодер манчестерского кода

Схема манчестерского декодера гораздо сложнее. Её задача выделить синхро-импульсы и битовый поток.

В примере применения AN1470 предлагается следующая реализация аппаратного декодирования Минчестерского кода на основе CLC и NCO (управляемого генератора).

Рис.13a. Схема декодера Манчестерского кода

Рис. 13b. Диаграммы, поясняющие работу декодера

Стадия 1 – D-Триггер
Ячейка CLC4 (D-триггер) защелкивает входной поток по спаду сигнала синхронизации. Выход с этого триггера будет являться декодированными (восстановленными) данными из входного потока.

Стадия 2 – элемент XOR (CLC2)
Поскольку в Манчестерском кодировании изменение сигнала происходит в середине каждого информационного бита, то можно использовать элемент ИСКЛЮЧАЮЩЕЕ ИЛИ чтобы обеспечить нарастающий фронт на стадии 3 в середине каждого бита, т.е. мы синхронизируем декодер в середине каждого бита.

Стадия 3 – NCO + AND-OR (CLC1)
модуль NCO, используется для генерации ¾ битового интервала по завершении которого производится захват (фиксация) данных. NCO используется в режиме с активным низким состоянием. Длительность импульсов можно регулировать с помощью регистров. Модулю NCO необходим источник тактовых импульсов, которые поступают ему из CLC1.
Эти два блока являются наиболее важными в декодере. Они создают импульсы фиксированной длины после каждого нарастающего фронта сигнала, выходящего из «стадия 2». Выходной сигнал NCO подается обратно в элемент И-ИЛИ так, что если выход из «стадия 2» становится равным нулю, то NCO будет продолжать тактироваться до своего переполнения.

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

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

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

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

На самом деле, можно использовать практически любые языки программирования микроконтроллеров. Но популярнее всех С/С++. Это язык высокого уровня, позволяющий работать с максимальным комфортом. Более того, в разработке архитектуры AVR принимали участие создатели Си. Поэтому микросхемы производства «Атмел» адаптированы именно к этому языку.

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

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

Где применяется

Благодаря своей универсальности PIC-контроллер может быть применён практически где угодно. Сами микроконтроллеры можно встретить в холодильниках, телевизорах, стиральных машинках. Но линейка продукции РІС имеет ту особенность, что схемы на PIC-контроллерах популярны среди радиолюбителей и робототехников-самоучек. С их помощью можно легко настроить работу узла или всего приспособления. Способствует такой популярности разумная цена, легкость программирования и значительное количество учебного материала.

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

Запускаем трансфлективный TFT дисплей на SSD1283A с помощью STM32

Tutorial

Введение

Модель дисплея называется H016IT01. Данный дисплей интересен прежде всего тем, что он является трансфлективным(transflective). Это означает, что изображение на нем должно быть видно даже под ярким солнцем. А также это чуть ли не единственная доступная модель с этой особенностью на известном китайском сайте. Статья же увидела свет потому, что информации по контроллеру SSD1283A очень мало(как в русском, так и западном сегменте сети), и руководства я нигде не встречал. В сети можно найти даташит, однако там нет информации по инициализации и работе с дисплеем, а из полезного только описания регистров. Хочу подчеркнуть, что данный материал конечно же не является истиной последней инстанции. Я привожу лишь свой опыт взаимодействия с устройством. Основная цель статьи проста — помочь всем тем, кто решил, хочет или захочет поработать с данным дисплеем, не более.

Классификация

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

Для большинства светодиодов требуется 4 В, при последовательном соединение максимальное количество 15 элементов, что соответствует напряжению 60 В. В российской сети 220 В, поэтому блок питания включается в систему обязательно.

Обозначать БП словом «драйвер» неверно, так как этот вид оборудования обеспечивает только стабильность тока (существуют модели, обеспечивающие диммирование). Драйвером можно назвать устройство, которое обеспечивает питание при подключении к сети 12 В или 24 В. Если осветительный прибор необходимо подключить к 220 В, требуется блок питания.

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

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

По конструкции эти приборы делятся на 2 большие группы:

  • изолированные;
  • неизолированные.

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

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

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

Исходя из вышеизложенного, источники питания для светодиодов можно разделить на 3 группы;

  • трансформаторные;
  • импульсные;
  • драйверы.

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

Трансформаторный БП состоит из:

  • трансформатора;
  • выпрямителя;
  • фильтра;
  • стабилизатора.

Такой прибор просто установить, он хорошо переносит режим холостого хода, но не терпит перегрузок, имеет большой вес и низкий КПД.

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

Функция драйвера – выровнять уже стабилизированный электроток. Он состоит из дросселя, транзисторного ключа и схемы, управляющей ключом. Драйвер работает с частотами 30-50 Гц, контролирует ток, поступающий на светодиоды, регулирует вольтаж. Качественное оборудование этого типа имеет встроенный каскад для подавления гармотик, искажающих ток сети.

https://youtube.com/watch?v=FiGOY4cBIWY

Манчестерский кодер

Манчестерское кодирование широко применяется при передаче сигналов. Каждый бит делится на два интервала, после первого интервала (в середине информационного бита) происходит смена уровня сигнала. Передача каждого информационного бита сопровождается изменением уровня, Нули и Единицы отличаются фазой (1 – перепад из 0 в 1, «0» — из 1 в 0). Таким образом, манчестерский код имеет следующие особенности:

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

Схема кодирования очень проста и использует один логический элемент ИСКЛЮЧАЮЩЕЕ ИЛИ.

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

Рис. 12. Диаграммы формирователя Манчестерского кода

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

Я собрал макет по следующей схеме.

Схема макета для отправки SMS с помощью PIC16F628A и SIM900A

Поскольку я использую MAX232, я могу использовать её, чтобы обнаружить и устранить проблемы при передаче микроконтроллером GSM модулю. Для этого я отключаю GSM модуль, подключаю кабель для последовательного порта и открываю GtkTerm. Настройки передачи: 9600-8-N-1.

Подключение компьютера для устранения проблем

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

Я не получил ответ от GSM модуля, так как он еще не подключен

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

Официальный программатор для семейств PIC – это PICkit V3, является наиболее распространенным. Программный код загружается в чип с помощью ПО, которое есть на диске, он идёт в комплекте с программатором. IDE имеет название MPlab. Является официальной средой разработки от производителя, между прочим, бесплатной. Для изучения устройств есть отличная книга на русском языке «Pic-микроконтроллеры. Полное руководство» автор её Сид Катцен. Кроме этой книги вы найдете огромное количество видео-уроков и текстовых материалов, которые вам помогут.

Применение микроконтроллеров PIC весьма широко, многие радиолюбители собирают металлоискатели и счетчики Гейгера на этих МК.

История создания PIC –контроллеров.

Прообразом контроллеров семейства PIC с RISC –архитектурой послужил периферийный контроллер ( Peripheral Interface Controller — PIC), разработанный в 1975 году отделением компании General Instrument Microelectronics Inc для поддержки ввода–вывода 16–разрядного про­цессора. Поскольку к контроллеру не предъявлялось высоких требований по об­работке данных, он имел ограниченный набор команд, при этом почти все команды в нем выполнялись за один машинный цикл. Другая особенность контроллера — использование Гарвардской архитектуры, основанной на разделении шин и обла­стей памяти для данных и команд.

Позже отделение компании General Instrument выделилось в самостоятельную фирму ( Microchip Technology Ltd .), которая в конце 1980–х годов разработала и изготовила первые модели микроконтроллеров семейства Р1С16С5х. Дальней­шее развитие и совершенствование контроллеров шло по пути расширения со­става периферийных устройств и набора команд, совершенствования технологии и улучшения характеристик. За прошедшие годы фирмой выпущено несколько семейств PIC, каждое из которых постоянно пополняется новыми моделями (вер­сиями).

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

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

  • MSP430 (TI);
  • ARM (ARM Limited);
  • MCS 51 (INTEL);
  • STMB (STMicroelectronics);
  • PIC (Microchip);
  • AVR (Atmel);
  • RL78 (Renesas Electronics).

Одной из наиболее популярных в электронной промышленности является продукция компании Atmel, построенная на базе RISC-ядра. Первые микросхемы, разработанные в 1995 году, относятся к группе Classic. Изучать программирование микроконтроллеров AVR для начинающих желательно на более современных моделях:

  • Mega — семейство мощных микросхем с развитой архитектурой.
  • Tiny — недорогие изделия, имеющие восемь выводов.

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

Изделия компании «Атмел» просты и понятны. Однако для использования всего функционала придется разработать программное обеспечение. Приступать к программированию микроконтроллеров AVR для начинающих рекомендуется с загрузки специализированной среды Atmel Studio. Актуальная версия предоставляется официальным сайтом производителя на бесплатной основе. Для разработки ПО в этой среде дополнительные программные компоненты не требуются.

Комплекс «Атмел Студио» включает огромное количество примеров готовых проектов. Это поможет новичку быстрее освоить базовые возможности и начать создавать собственные программы. В нем также имеются модули для компиляции и окончательной отладки кода. Параллельно с его освоением нужно изучать языки программирования. Без них разработать программное обеспечение невозможно.

Характеристики контроллеров.

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

● RISC –архитектура (с двухступенчатым конвейером), обеспечивающая выпол­нение большинства команд процессора за один машинный цикл;

● Гарвардская архитектура (с раздельными шинами данных и программ), обес­печивающая одновременный доступ к памяти данных и программ;

● КМОП технология, обеспечивающая:

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

• широкий диапазон напряжений питания (2…6 В) и температур (–40…+70 °С);

• малое энергопотребление;

● наличие таймера–счетчика с программируемым предварительным делителем, сторожевого таймера с встроенным R С–генератором, таймера–счетчика реаль­ного времени — ТМ R 0, регистра состояния — STATUS ; регистра косвенной адресации — FSR и др.

● прямой и косвенный режимы адресации; режим пониженного энергопотреб­ления.

В качестве примера в табл. 6.1.1 приведены показатели МК средних моделей.

Квадратурный энкодер

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

Ниже приведены две схемы декодирования сигналов квадратурного энкодера.

Рис. 11a. Квадратурный декодер со счетным выходом и сигналом направления.

Эта схема детектирует фазы входных сигналов (состояние выхода D показывает направление вращения энкодера) и выдает тактовые сигналы (выход С).

Рис 11b. Квадратурный декодер с двумя счетными выходами

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

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

Рис. 11c. Сигналы с выходов механического квадратурного энкодера

Вот тут фрагмент покрупнее:

Рис. 11d. Сигналы с выходов механического квадратурного энкодера

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

Рис. 11e. Входные сигналы с энкодера и очищенные от дребезга.

Под обработку сигналов квадратурного энкодера понадобятся 4 ячейки CLC – две для подавления дребезга и две для детектирования.

Рис. 11f. Диаграммы сигналов обработки квадратурного энкодера для схемы с выходом направления

Рис. 11g. Диаграммы сигналов обработки квадратурного энкодера для схемы с двумя счетными выходами.

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

Где применяется?
Механические и оптические энкодеры, подсчет числа входящих и выходящих людей, закрытие турникета при прохождении в неположенном направлении ))