Обзор 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 имеется несколько векторов прерываний, в то время как в микроконтроллерах среднего уровня используется только один вектор прерывания.
Характеристики контроллеров.
Следует отметить, что различный аппаратный состав и характеристики имеют не только микроконтроллеры разных семейств, но и модели (версии) одного семейства. Однако общим для большинства моделей контроллеров является:
● RISC –архитектура (с двухступенчатым конвейером), обеспечивающая выполнение большинства команд процессора за один машинный цикл;
● Гарвардская архитектура (с раздельными шинами данных и программ), обеспечивающая одновременный доступ к памяти данных и программ;
● КМОП технология, обеспечивающая:
• полностью статический режим работы, при котором остановка тактового генератора не приводит к потере логических состояний внутренних узлов;
• широкий диапазон напряжений питания (2…6 В) и температур (–40…+70 °С);
• малое энергопотребление;
● наличие таймера–счетчика с программируемым предварительным делителем, сторожевого таймера с встроенным R С–генератором, таймера–счетчика реального времени — ТМ R 0, регистра состояния — STATUS ; регистра косвенной адресации — FSR и др.
● прямой и косвенный режимы адресации; режим пониженного энергопотребления.
В качестве примера в табл. 6.1.1 приведены показатели МК средних моделей.
Генераторы
В предыдущей статье посвященной CLC мы уже рассматривали разного рода генераторы/мультивибраторы, рассмотрим как CCDM и PPS позволит упростить и до того простые схемы основанные на ПНЯ (CLC).
Рис 5. Мультивибратор на двух гейтах.
На рис.5 изображен ранее рассмотренный генератор на D триггере, инверторе и RC цепочке (в данном случае схема чуть перерисована для отображения внешних по отношению к микроконтроллеру подключений). Частота генератора определяется параметрами R и C. Резистор R задает ток заряда/разряда конденсатора C. Теперь, при наличии встроенного контроллера тока драйвера порта, мы можем убрать резистор и чуть упростить схему.
Прим. Далее на рисунках выход порта с функцией CCDM будет обозначаться в виде резистора с подписью CCDM
Рис.6. Мультивибратор с ограничением выходного тока порта CLC2
Следует отметить, что совсем не обязательно для CLC1 использовать D триггер, пойдет любой вариант реализации неинвертирующего гейта.
Рис. 7. Другой вариант мультивибратора на двух логических гейтах.
Возможность избавиться от одного резистора это не та цель, ради которой стоило бы рассматривать данную тему, но в данном примере мы дополнительно имеем следующее:
-
уменьшение используемого числа выводов МК (да, вы же помните что у нас есть часть ПНЯ в виде PPS), то есть для одного и того же корпуса можем иметь больше возможностей — впихнуть больше в меньшее.
- возможность программного изменения частоты! Если мы меняем ток заряда/разряда конденсатора, то мы меняем скорость изменения напряжения на конденсаторе, а значит частоту переключения мультивибратора.
Рис. 8. Управление током позволяет программно менять частоту мультивибратора.
В первоначальной схеме от микроконтроллера понадобилось бы 3 вывода, модифицированная схема с использованием PPS и CCDM требует только 2.
На самом деле мультивибратор можно сделать и на одном гейте (рис.9), тогда от микроконтроллера понадобится вообще один внешний выход. Выход CLC можно подключить внутри МК к другой периферии. На конденсаторе мы будем видеть треугольный сигнал, но мы можем убедиться в том, что на выходе CLC все же присутствует последовательность из “нулей” и “единиц”, если выход той же самой CLC вывести на другой “контрольный” вывод МК с помощью PPS.
Рис.9. Мультивибратор на одном гейте
Рис.10. Форма сигнала на конденсаторе мультивибратора и контрольный выход логического элемента.
SCADA «BortX» с поддержкой языка управления в рамках ANSI /ISA-88 для ESP8266
Признаюсь честно — очень люблю cовременные микроконтроллеры. В частности, производства китайского производителя Espressif Systems
с интерфейсом Wi-Fi. Речь, естественно, идет оESP8266 иESP32 , которые обладают большим потенциалом в образовательном контексте. Конечно, у них есть свои недостатки. Но цена. Это чудо. В частности, если покупаешь условный «Witty Cloud» за три доллара, в котором даже не надо мучаться вопросами питания и программирования. Сфера применения в IoT позволяет создать собственные проекты автоматизации различными путями — классическим образом: путем написания кода и работы в IDE. Или через тот же FLProg. Однако, как всегда, есть нюансы, несколько тормозящие репрезентацию работы в рамках типового применения ESP8266 как аппаратной основы. И проблема вовсе не в сетевом подключении, осуществляемой к домашней/офисной локальной сети с выходом в Internet через роутер.
Импульсный источник питания
Еще один пример использования конфигурируемых логических ячеек совместно со встроенными компараторами.
Таймер 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 таймера. Но об этих частях ПНЯ постараемся рассказать в следующий раз.
Периферия независимая от ядра интересна сама по себе, но наибольшую пользу может принести возможность синтеза функциональных блоков, т.е. совместное использование нескольких периферийных модулей для решения конкретных задач. В этом случае тактовая частота, быстродействие и разрядность ядра уходят на второй план – аппаратная часть выполняет специализированные функции, а ядро занимается программной поддержкой работы изделия.
Таблица: основное различия между микроконтроллерами AVR, ARM, 8051 и PIC
8051 | PIC | AVR | ARM | |
Разрядность | 8 бит | 8/16/32 бит | 8/32 бит | 32 бит, иногда 64 бит |
Интерфейсы | UART, USART,SPI,I2C | PIC, UART, USART, LIN, CAN, Ethernet, SPI, I2S | UART, USART, SPI, I2C, иногда CAN, USB, Ethernet | UART, USART, LIN, I2C, SPI, CAN, USB, Ethernet, I2S, DSP, SAI, IrDA |
Скорость | 12 тактов на инструкцию | 4 такта на инструкцию | 1 такт на инструкцию | 1 такт на инструкцию |
Память | ROM, SRAM, FLASH | SRAM, FLASH | Flash, SRAM, EEPROM | Flash, SDRAM, EEPROM |
Шинная архитектура | CLSC | Частично RISC | RISC | RISC |
Архитектура памяти | Фон-неймановская | Гарвардская | Модифицированная | Модифицированная гарвардская |
Энергопотребление | Среднее | Низкое | Низкое | Низкое |
Семейства | Вариации 8051 | PIC16,PIC17, PIC18, PIC24, PIC32 | Tiny, Atmega, Xmega, спец. AVR | ARMv4,5,6,7 … |
Производители | NXP, Atmel, Silicon Labs, Dallas, Cyprus, Infineon … | Microchip | Atmel (Microchip) | Apple, Nvidia, Qualcomm, Samsung Electronics, TI … |
Стоимость | Низкая | Средняя | Средняя | Низкая |
Популярные микроконтроллеры | AT89C51, P89v51 | PIC18fXX8, PIC16f88X, PIC32MXX | Atmega8, 16, 32; вариации для Arduino | LPC2148, ARM Cortex-M0, ARM Cortex-M3, ARM Cortex-M7 |
digitrode.ru
Достоинства контроллеров.
К достоинствам микроконтроллеров PIC следует отнести:
● высокую производительность, которая позволяет реализовывать различные устройства, работающие в реальном времени с большими скоростями (системы управления автомобильными и электрическими двигателями, видеоигры и др.). В частности, производительность Р I С16С5х при частоте тактирования в 20 МГц составляет 5 MIPS (Million Instruction Per Second — миллионов инструкций в секунду). Высокая производительность достигается благодаря использованию:
• RISC –процессора, большинство команд которого выполняется за один машинный цикл (команды перехода и операции табличного чтения выполняются за два цикла);
• двухступенчатого конвейера, совмещающего выполнение текущей команды с выборкой из памяти следующей команды;
• Гарвардской архитектуры, обеспечивающей одновременное считывание команд (12, 14 или 16 бит) и данных (8 или 1 бит);
● малое энергопотребление, открывающее широкие возможности для создания устройств с батарейным питанием, питанием от телефонной линии, солнечных батарей (мобильные телефоны, электронные сторожа и др.). Для микроконтроллеров PIC 17, имеющих широкий набор аппаратных средств, потребление тока составляет:
• менее 5 мА при 5 В, 4 МГц;
• 100 мкА при 4,5 В, 32 кГц;
• менее 1 мкА при 5 В в режиме ожидания;
● мощную поддержку разработок, которую осуществляет фирма Microchip .
В качестве средств поддержки разработчику приложений предоставлены ассемблер MPASM и макроассемблер, симулятор MPSIM, интегрированная система отладки для Windows MPLAB, программный, внутрисхемный и отладочный эмуляторы, универсальный программатор и компилятор С. Кроме того, имеются библиотеки для работы с фиксированной и плавающей точкой, с последовательным интерфейсом и с аналого–цифровым преобразователем, а также большое количество документированных примеров применения микроконтроллеров PIC в различных областях с исходными текстами. Обилие средств поддержки разработчика способствует сокращению сроков создания приложений;
● совместимость, проявляющуюся в том, что программы для микроконтроллеров более ранних семейств PIC16C5X и PIC16CXX могут быть легко перенесены на семейство устройств PIC17CXX;
● разнообразие используемых способов программирования «внутри» каждого семейства PIC.
Фирма Microchip выпускает:
• микроконтроллеры с ультрафиолетовым стиранием, в которых память может быть очищена и контроллер перепрограммирован с помощью программатора PRO МАТЕ фирмы Microchip для функционирования в любом режиме, например, в режиме с использованием RC –генератора. Эти микроконтроллеры предназначены для экспериментальных разработок и отладки программ;
• однократно программируемые контроллеры ( One – Time Programming PROM — OTP ), изготовленные в пластиковом корпусе, позволяют пользователю записать в память программу и биты конфигурации только один раз. Они применяются в тех случаях, когда нет необходимости часто менять содержание программы или конфигурацию микроконтроллера в выпускаемом устройстве;
• контроллеры, программируемые изготовителем по заказу пользователя ( Quality TP — QTP ). Этот сервис, предлагаемый фирмой Microchip , предназначен для устоявшегося кода программы;
• контроллеры с серийными номерами ( SQTP ), программируемые изготовителем по заказу пользователя. В этих МК несколько определенных пользователем ячеек содержат номер, уникальный для отдельного устройства. Серийный номер может быть случайным, псевдослучайным и последовательным. Его можно использовать как код доступа, пароль или идентификатор;
• масочные контроллеры ( ROM ), в которых используются масочные ПЗУ. Такие контроллеры, имеющие низкую стоимость, изготавливаются для массового потребителя или при больших объемах заказа;
● высокую надежность, низкую стоимость и др.
Благодаря указанным достоинствам микроконтроллеры находят широкое и разнообразное применение.
CDC-устройство на основе PICkit2
Используя все эти особенности, на основе программатора PICkit2 возможно создание и отладка своего USB-устройства с возможностью в любой момент откатиться назад к его функциям программатора. С помощью бутлоадера, который прошит в программатор, в PICkit2 можно прошить другие программы, например, программу поддержки виртуального COM-порта. Для этого берем пример CDC, переименовываем проект и делаем следующее
- в файле main.c меняем адрес расположения прошивки (бутлоадер PICkit2 передает управление пользовательской программе на адрес 0х002000.
#pragma code _RESET_INTERRUPT_VECTOR = 0x002000 - в файле io_cfg.h убираем все про порт D (можно задать мигание светодиода на PORTC0).
Так как PICKIT2 всегда питается от USB, то задаем
#define usb_bus_sense 1 // device is always plugged in
#define self_power 0 // device is powered from USB - в файле usbcfg.h ставим комментарии на 2 строки
//#define USE_SELF_POWER_SENSE_IO
//#define USE_USB_BUS_SENSE_IO - В файле user.c выводим в USB нужные нам данные
- подключаем файл линкера pickit2.lkr
После этого можно откомпилировать проект и через оболочку PICkit2 загрузить новую прошивку.
После перепрограммирования PICkit2, компьютер определяет появление нового COM-порта, и через гипертерминал можем увидеть, что PICkit2 отсылает данные через виртуальный COM-порт.
Для обратного восстановления PICkit2 как программатора нужно отключить PICkit2 от USB и при нажатой кнопке снова подключить кабель USB, после чего выбрать загрузку штатной прошивки программатора.
На основе данного примера и используя внешние выводы программатора PICkit2 можно получать данные с внешних устройств и передавать в компьютер через USB. Таким образом, используя PICkit2 можно сделать вывод данных на COG ЖК-индикаторы, считыватели I2C, SPI и 1-wire устройств, например датчиков температуры и др. устройств.
Топологии ИИП
Топология это подключение индуктивности, конденсатора, переключающих элементов схемы для обеспечения преобразования энергии, соотношения входных и выходных параметров.
схема | описание |
повышающий | |
понижающий | |
Sepic |
Рис. 2 Основные топологии ИИП.
Принцип управления силовым ключом в наиболее часто используемых топологиях ИИП в общем-то одинаковый (см. рис 2)
Регулируется скважность открытия силового ключа, т.е. соотношение между состояниями «открыт» и «закрыт». Управление скважностью осуществляется либо в зависимости от выходного напряжения (управление по напряжению, voltage-mode control), либо в зависимости от тока в силовой индуктивности (управление по току, current-mode control)
Управление скважностью осуществляется либо в зависимости от выходного напряжения (управление по напряжению, voltage-mode control), либо в зависимости от тока в силовой индуктивности (управление по току, current-mode control). В каждом из двух режимов управление может быть гистерезисное (Hysteretic Control) или пропорциональное (Proportional Control)
В каждом из двух режимов управление может быть гистерезисное (Hysteretic Control) или пропорциональное (Proportional Control)
При гистерезисном управлении скважность импульсов фиксирована, а регулировка выходного напряжения осуществляется включением или отключением подачи импульсов управления силового ключа
При пропорциональном управлении скважность изменяется пропорционально величине рассогласования между фактическим выходным напряжением и требуемым. Для распространенных топологий ИИП промышленностью выпускаются специализированные ШИМ-контроллеры. Но что делать, если под нужную топологию не существует готового ШИМ-контроллера? В этом случае на помощь так же может прийти микроконтроллер с конфигурируемой периферией
Но что делать, если под нужную топологию не существует готового ШИМ-контроллера? В этом случае на помощь так же может прийти микроконтроллер с конфигурируемой периферией
Для распространенных топологий ИИП промышленностью выпускаются специализированные ШИМ-контроллеры. Но что делать, если под нужную топологию не существует готового ШИМ-контроллера? В этом случае на помощь так же может прийти микроконтроллер с конфигурируемой периферией.
Управление по напряжению (Voltage Mode)
В этом режиме скважность ШИМ сигнала, управляющего силовыми ключами, определяется непосредственно выходным напряжением. При гистерезисном управлении, если напряжение на выходе ниже нормы – идет «накачка» источника
Если напряжение на выходе больше порога – компаратор блокирует управление силовым ключом, идет разряд выходной накопительной емкости. В англоязычной литературе такой режим называют «hiccup-mode» – «режим с икотой»
При гистерезисном управлении, если напряжение на выходе ниже нормы – идет «накачка» источника. Если напряжение на выходе больше порога – компаратор блокирует управление силовым ключом, идет разряд выходной накопительной емкости. В англоязычной литературе такой режим называют «hiccup-mode» – «режим с икотой».
Данный режим используется сравнительно редко, так как сопровождается большими пульсациями выходного напряжения и требует накопительного конденсатора сравнительно высокой емкости.
Рисунок 5 демонстрирует принцип работы режима управления по напряжению с гистерезисным управлением. Здесь и далее не показана выходная часть источника, так как определяется топологией, выходной мощностью и др. Для иллюстрации принципа работы ШИМ-контроллера иногда будет показан пример с выходной частью.
Рис. 5а. Первая схема – с фиксированным выходным напряжением, вторая – с регулировкой выходного напряжения.
Рис. 5б. Диаграммы выхода ШИМ и выхода компаратора.
Рис. 6. Пример выходного каскада повышающего импульсного источника питания, подключенного к ШИМ контроллеру (см.рис.5).
Конфигурируемые логические ячейки (CLC) на рис .5 можно включить как элемент И. Для предотвращения высокочастотной генерации от компаратора его выход целесообразно пропустить через еще одну CLC – D-триггер с синхронизацией от сигнала ШИМ
В этом случае получим два «бонуса» — отсутствие возникновения высокочастотной генерации и неизменность скважности управляющего ШИМ (см. пояснения на рис
7). Подробнее о конфигурируемых логических ячейках см. в статье «Конфигурируемые логические ячейки в PIC микроконтроллерах» .
Рис.7.а. Укорочение управляющих ШИМ импульсов, возможность появления высокочастотной генерации
Рис. 7.б. Синхронизация сигналов позволяет предотвратить укорочение ШИМ импульсов
Рис. 8. Синхронизация сигналов для предотвращения генерации и укорочения ШИМ.
Отладочные платы и средства разработки для USB
Программатор-отладчик PICkit2 (номер для заказа PG164120) Наличие бутлоадера позволяет заливать свое программное обеспечения для освоения навыков работы с USB |
|
Отладочная плата PICDEM FS-USB (номер для заказаDM163025) предназначена для разработок и демонстрации устройств на микроконтроллере PIC18F4550 с шиной USB2.0. На плате установлен контроллер PIC18F4550 в корпусе TQFP44. |
|
Low Pin Count USB Develpment Kit (номер для заказа DM164127) Отладочная плата Low Pin Count USB Development Kit предоставляет легкий путь для оценки возможностей микроконтроллеров 20-и выводных USB микроконтроллеров Microchip PIC18F14K50 и PIC18F13K50. Комплект включает все необходимое для начала работы с USB контроллерами (программное обеспечение, исходные файлы примеров, документацию). |
|
PIC18F87J50 Full Speed USB PIC18F87J50 FS USB Demo Board (номер для заказа MA180021) Плата PIC18F87J50 FS USB Demo Board служит для отладки Full Speed USB 2.0 микроконтроллеров семейства PIC18F87J50. Помимо автономной работы плата так же может использоваться как процессорный модуль для платы PIC18 Explorer Board. |
|
PIC24 Starter Kit (номер для заказа DM240011) Комплект разработчика PIC24F Starter Kit содержит все необходимое для начала работы с высокопроизводительными контроллерами семейства PIC24F. Этот недорогой комплект содержит интегрированный внутрисхемный отладчик и программатор, контроллер PIC24F с интерфейсом USB (на плате могут быть реализованы функции Host и Device), трехцветный светодиод, емкостная сенсорная панель и графический OLED дисплей. Демонстрационная программа через графическое меню позволяет осуществлять запись данных на внешний USB Flash Drive, осуществлять настройку сенсорной панели и запускать графические задачи. |
|
PIC32 USB Board (номер для заказа DM320003) Позволяет освоить модуль USB-OTG в контроллерах PIC32 |
|
Отладочная плата Explorer 16 Development Board (номер для заказа DM240001) это дешевое средство отладки для ознакомления и начала работы с высокопроизводительными семействами 16-и разрядных микроконтроллеров PIC24 и контроллерами цифровой обработки сигналов dsPIC33F. | |
Дочерняя плата USB PICtali Plus (номер для заказа AC164131) совместно с USB процессорными Plug-In модулями позволяет разрабатывать и отлаживать USB устройства Host, Device, USB-OTG. |
Урок #2. Создание USB 2.0 совместимого HID-устройства типа джойстик.
Наиболее распространенными USB устройствами являются устройства интерфейса с человеком (HID – Human Interface Devices). Типичными представителями этого класса являются USB- клавиатуры, мыши, джойстики, панели настройки мониторов, считыватели штрих-кодов, карт-ридеры и т.п. Преимуществами HID устройств является:
- простота реализации;
- компактный код;
- поддержка Windows (не нужны дополнительные драйвера).
На сайте компании Microchip есть пример реализации HID манипулятора мышь. Рассмотрим реализацию простейшего игрового манипулятора на основе этого примера. Для этого проекта будем использовать демонстрационную плату PICDEM FS-USB (DM163025). Отладочная плата PICDEM FS-USB имеет один переменный резистор и 2 кнопки, поэтому разрабатываемый джойстик будет иметь минимум элементов управления (2 кнопки и, например, регулятор газа).
В первую очередь нам нужно переписать дескриптор устройства под создаваемый джойстик. Для упрощения задачи можно воспользоваться программой HID Descriptor Tool, которую можно скачать с сайта www.usb.org
В комплекте с программой предоставляются примеры конфигураций некоторых HID-устройств, которые можно корректировать под свою задачу или создавать собственное HID устройство.
Итак, в нашем случае будут использоваться несколько типов данных – это симуляция органа управления – Simulation Controls, а конкретно это ручка (педаль) газа (Throttle) и кнопки управления (Button). Для того чтобы операционная система «знала» как обращаться с этими типами данных, необходимо описать максимальные и минимальные значения и размер данных. В нашем случае «газ» это одно 8-и битное значение (report_size = 8, report_count = 1), а состояние кнопок определяется как поле однобитных значений. В примере используется только 2 кнопки, но необходимо выровнять поле до байтовой величины (report_size = 1, report_count = 8). Итого микроконтроллер при запросе данных от компьютера должен передать 2 байта – уровень газа и состояние кнопок в соответствии с сформированным дескриптором устройства (подробное описание возможных дескрипторов см. в спецификации на устройства HID www.usb.org). Созданное описание дескриптора устройства можно сохранить в разных форматах, в том числе и как заголовочный файл .h
Дополнительно нужно скорректировать в описании HID Class-Specific Descriptor размер полученного дескриптора устройства и в дескрипторе конечной точки изменить размер данных, передаваемых через конечную точку (в нашем случае передаем 2 байта, поэтому размер HID_INT_IN_EP_SIZE=2).
Перечисленных изменений хватит для того чтобы Windows опознала подключенное устройство как джойстик. Теперь можем скорректировать строковые данные, чтобы устройство имело то название, какое мы хотим (например «PIC18F4550 Joystick»). Для того чтобы присвоить устройству имя на русском языке необходимо прописывать строковый дескриптор в кодировке UNICODE.
На этом описание джойстика заканчивается и нужно подготовить данные для передачи в PC.
ReadPOT(); // запуск измерения напряжения потенциометра
buffer = ADRESH;
// обработка состояний кнопок
if(sw2==0) buffer |= 0x01;
else buffer &= ~0x01;
if(sw3==0) buffer |= 0x02;
else buffer &= ~0x02;
// передача данных
Emulate_Joystick();
После компиляции проекта и программирования микроконтроллера можно подключить устройство к USB-порту. Плата определяется как HID игровое устройство, инсталлируется в систему и готово к работе.
Через панель управления в Windows мы можем открыть доступные игровые устройства, выбрать наш джойстик, откалибровать его и проверить функциональность.
При изменении конфигурации устройства – добавлении органов управления или кнопок, необходимо не только изменить описание дескриптора устройства, но и передавать данные строго в соответствии с созданным дескриптором. Так изменив в описании дескриптора устройства USAGE_MAXIMUM (BUTTON 2) максимальное число кнопок с 2 на 8, получим джойстик на 8 кнопок.
При усложнении дескриптора можем получить и более полную реализацию джойстика, при этом нужно не забыть изменять следующие параметры: размер дескриптора, размер конечной точки и необходимо оправлять столько информационных данных, сколько объявлено в дескрипторе.
Примеры программ, документация и схема, использованные в уроке #2.
- Оригинальные исходные коды реализации HID-мыши
- Исходные коды реализации HID-джойстика
Измерение Емкости. Емкостной сенсор. Сенсорная кнопка
Частота мультивибратора (рис.15) зависит от значения емкости конденсатора и сопротивления резистора. Если один из параметров изменяется, то изменяется частота. Поэтому данная схема позволяет измерять сопротивление или емкость, например с помощью таймера микроконтроллера.
В качестве конденсатора может использоваться проводящая площадка, при касании которой мы будем вносить в схему дополнительную емкость, что приведет к уменьшению частоты генератора.
сигналы | комментарий |
---|---|
Осциллограммы без касания сенсора | |
Осциллограмма при «нажатом» сенсоре |
Рис.16a. Диаграммы работы мультивибратора при изменении времязадающей емкости.
Подобным методом можно детектировать протечку воды или определять влажность почвы и использовать для автоматизации полива цветов ))
Драйвер шагового двигателя
Один из самых простых вариантов управления Шаговым Двигателем (ШД) это полношаговое управление (full step). В этом варианте сигналы управления сдвинуты на 90°. Поэтому можно взять периодический сигнал, на один делитель частоты подать его в прямом виде, на другой – в инверсном.
Рис. 5a. Формирователь сигналов управления шаговым двигателем.
Рис. 5b. Диаграмма на выходе формирователя.
Изменение частоты на входе CLC будет изменять частоту управляющих сигналов шагового двигателя
Входную частоту можно брать с входа микроконтроллера (внешний сигнал), либо от внутреннего источника – ШИМ или NCO генератора.
При управлении ШИМ-ом нужно менять 2 параметра: регистр периода (частота) и регистр скважности, так как управляющий сигнал должен быть с 50% скважностью.
Применение NCO (Numerically Controlled Oscillator, управляемый генератор) выглядит более привлекательным, так как это генератор может автоматически формировать меандр, поэтому для изменения частоты нужно менять значения только в одном регистре.
Для смены направления нужно инвертировать сигналы на одной из фаз