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

Введение

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

  • встраиваемые;
  • 8-, 16- и 32-разрядные;
  • цифровые сигнальные процессоры.

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

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

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

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

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

  • 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. Актуальная версия предоставляется официальным сайтом производителя на бесплатной основе. Для разработки ПО в этой среде дополнительные программные компоненты не требуются.

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Импульсный источник питания

Еще один пример использования конфигурируемых логических ячеек совместно со встроенными компараторами.
Таймер TMR периодически устанавливает RS-триггер и открывает силовой транзистор. Ток начинает течь через индуктивность, напряжение на резисторе R1 линейно увеличивается. При достижении напряжения на R1 порогового значения срабатывает компаратор COMP1 и сбрасывает триггер, транзистор закрывается. Ток через индуктивность не может прерваться мгновенно, поэтому ток начинает течь через диод D1 и заряжает выходной конденсатор. По срабатыванию таймера триггер снова устанавливается и процесс повторяется.

Рис.17a. Простейший импульсный источник питания.

На рисунке приведена схема повышающего источника, но для других топологий (см. рис. 17b) работа схемы будет аналогичной, поэтому выходной каскад далее рисовать не буду.

схема описание
повышающий
понижающий
Sepic

Рис.17b. Различные топологии импульсных источников питания

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

Рис.17c. ИИП с гистерезисным управлением

Включение силового транзистора будет генерировать помеху, которая может приводить к преждевременному срабатыванию компаратора COMP1. Для избавления от этого можно включить RC-фильтр в цепь между R1 и компаратором, а можно добавить рассматриваемый ранее блок бланкирования (формирование импульса по фронту, см. рис 8а, или рис. 14а), который после включения транзистора будет блокировать сброс триггера на короткий интервал времени.

Рис.17d. Помеха при коммутации силового ключа

Рис.17e. ИИП с гистерезисным управлением и бланкированием помехи переключения.

Элементы U1 и U2 можно привести к реализации на элементах ИЛИ и отнести к входу CLC1, тогда вся логическая часть схемы реализуется на трех ячейках CLC (обычно в микроконтроллерах Microchip имеется 4 ячейки).
Все что на схеме изображено левее силового ключа – находится внутри микроконтроллера, связи периферийных модулей так же осуществляются внутри кристалла микроконтроллера. Напряжения порогов Ref и Ref1 могут задаваться встроенными источниками опорного напряжения или ЦАП. Таким образом, импульсный источник питания с регулируемым выходным напряжением можно реализовать на периферийных модулях микроконтроллера. После первоначального конфигурирования схема будет работать полностью аппаратно без необходимости участия ядра в поддержании функции преобразователя. Ядро может заниматься интерфейсными задачами, индикации контроля и др.

Вообще, для построения импульсных источников питания в новых семействах PIC16F17xx микроконтроллеров Microchip есть дополнительные аналоговые (операционные усилители) и специализированные периферийные модули: модули пилообразной компенсации (Slope Compensation) и программируемый рамп-генератор (Programmable Ramp Generator, PRG), операционные усилители, модуль формирования комплементарных выходных сигналов (COG), HLT таймера. Но об этих частях ПНЯ постараемся рассказать в следующий раз.

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

Обзор 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 имеется несколько векторов прерываний, в то время как в микроконтроллерах среднего уровня ис­пользуется только один вектор прерывания.

Задержка. Формирование импульса по фронту, спаду, изменениям

Для некоторых задач может понадобиться формирование задержанного импульса.
Для этого можно применить D-триггер. На счетный вход подаем входной сигнал, на вход тактирования – какой либо высокочастотный сигнал (например тактовой частоты Fosc). Таким образом, изменение выхода триггера будет происходить только по фронту тактового сигнала.
Данный метод будет сдвигать фронт и спад сигала на период Fosc (тактовой частоты) только если оба сигнала синхронны. Поэтому для гарантированного сдвига на 1 период Fosc сдвигаемый сигнал должен формироваться самим микроконтроллером (ШИМ, NCO и др.). Если входной сигнал асинхронный, то на входе можно поставить синхронизатор на точно таком же D-триггере (т.е. сперва сдвинуть асинхронный сигнал до первого тактового импульса, а затем сдвинуть на полный период тактового сигнала).

Рис. 6a. Формирователь задержанного сигнала.

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

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

Рис. 7a. Формирователь импульсов по фронту и спаду

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

Рис. 8a. Формирователь импульсов по фронту.

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

Формирование импульсов по спаду

Рис. 9a. Формирователь импульсов по спаду

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

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

Newer Device Available PIC16F18444

Status: In Production

View Datasheet View Comparisons

Features:

  • Low voltage programming
  • Low speed Clock mode
  • Programmable BOR
  • 4MHz internal oscillator
  • Programmable VREF
  • 128 bytes of EEPROM
  • Data Memory
  • ICD

View More

  • ProgrammingServices Available
  • SamplingOptions
  • BuyNow

This powerful (200 nanosecond instruction execution) yet easy-to-program (only 35 single word instructions) CMOS FLASH-based 8-bit microcontroller packs Microchip’s powerful PIC architecture into an 18-pin package and is upwards compatible with the PIC16F628, PIC16C62XA, PIC16C5X and PIC12CXXX devices. The PIC16F628A features 4MHz internal oscillator, 128 bytes of EEPROM data memory, a capture/compare/PWM, a USART, 2 Comparators and a programmable voltage reference that make it ideal for analog/integrated level applications in automotive, industrial, appliances and consumer applications.

For product comparison, please consider: PIC16F18444

  • Low voltage programming
  • Low speed Clock mode
  • Programmable BOR
  • 4MHz internal oscillator
  • Programmable VREF
  • 128 bytes of EEPROM
  • Data Memory
  • ICD

User Guides

  • Integrated Development Environments
  • Compilers
  • Programmers
  • Demo & Evaluation Boards
  • Code Examples

MPLAB X Integrated Development Environment (IDE) is an expandable, highly configurable software program that incorporates powerful tools to help you discover, configure, develop, debug and qualify embedded designs for most of Microchip’s microcontrollers, microprocessors and digital signal controllers. MPLAB X IDE works seamlessly with the MPLAB development ecosystem of

Available as free, unrestricted-use downloads, our award-winning MPLAB XC C Compilers are comprehensive solutions for your project’s software development. Finding the right compiler to support your device is simple:

  • MPLAB XC8 supports all 8-bit PIC and AVR microcontrollers (MCUs)
  • MPLAB XC16 supports all 16-bit PIC MCUs and dsPIC Digital

Fast programming, increased functionality, at the same price as its predecessor, the PICkit 3.

The MPLAB PICkit 4 now has Programmer-to-Go functionality for 8-bit, 16-bit and 32-bit PIC MCUs and dsPICs and also SAM MCU devices . The firmware update comes with MPLAB X IDE v5.30. AVR is expected soon!

The MPLAB PICkit 4 In-Circuit

The MPLAB ICD 4 In-Circuit Debugger/Programmer is Microchip’s fastest, cost-effective debugging and programming tool for PIC and SAM Microcontrollers (MCUs), dsPIC Digital Signal Controllers (DSCs), and CEC flash microcontrollers. This speed is provided by a SAME70 MCU with 300 MHz, 32-bit MCU with 2MB of RAM and a high-speed FPGA to yield

The MPLAB PM3 Universal Device Programmer is easy to use and operates with a PC or as a stand-alone unit, and programs Microchip’s entire line of PIC devices as well as the latest dsPIC DSC devices. When used standalone, data can be loaded and saved with the SD/MMC card (not included).

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

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

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

Custom floating point format on FPGA

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

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

Из песочницы

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

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

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

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

В примере применения 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 получим декодированные данные и прерывание по приему.