- PNJ — Core Independent Peripheral в микроконтроллерах Microchip, также известный как CIP — Core Independent Peripheral. Предыдущая статья [
УПД.
вот часть 3. АЦП с компьютером Теперь давайте рассмотрим некоторые особенности портов ввода-вывода, и особенно те, которые могут помочь реализовать определенные функции и упростить построение схем с использованием микроконтроллеров PIC. Содержание
- Стандартные функции порта
- Переназначение функций порта ввода-вывода, PPS
- контроль тока драйвера выходного порта, CCDM
- примеры использования
- надежность, самодиагностика
- мультивибраторы (генераторы)
- генератор линейного напряжения
- ШИМ-модулятор
- Усилитель D-класса
Наверное, сложно найти уникальные возможности в «портовой» периферии, но некоторые «хитрости» все же заслуживают внимания.
Порты современных PIC-микроконтроллеров имеют набор стандартных функций:
- Аналоговые входы
- Входы АЦП
- входы компаратора
- входы операционного усилителя
- входы опорного напряжения
- Аналоговые выходы
- выходы операционного усилителя
- Выходы ЦАП
- выходы опорного напряжения
- Цифровые входы
- установка типа входа TTL или ST (триггер Шимта)
- возможность включения внутреннего подтягивания к Vdd
- выходы опорного напряжения
- Цифровые выходы
- стандартный выход или выход с открытым стоком
- возможность ограничения скорости нарастания/падения (полезная функция для уменьшения электромагнитных помех)
- высокая нагрузочная способность выхода (обычно для PIC-контроллеров ток входящего/выходящего тока имеет верхнее значение 25 мА, но в некоторых семействах нагрузочная способность пары выводов порта увеличена до 50 и даже 100 мА)
Переназначение функций порта интересно тем, что оно предоставляет следующие возможности:
- оптимизация разводки печатной платы — разработчик может «перетаскивать» определенные периферийные входы/выходы по контактам контроллера
- снижение влияния помех (можно перенести высокочастотные цифровые выходы (ШИМ, интерфейсы и т.п.
) как можно дальше от аналоговых цепей
- максимально полное использование периферии (микроконтроллеры Microchip всегда славились обилием периферийных модулей, но из-за ограниченного числа выводов корпусов микросхем разработчик не всегда имел возможность использовать тот набор периферийных устройств, который ему нужен, поскольку различная периферия можно было использовать тот же вывод микросхемы, т.е.
пришлось чем-то пожертвовать)
- увеличение нагрузочной способности порта - периферийные выходы (UART, PWM и т.д.) можно подключить к нескольким портам МК, соединить эти порты на плате и тем самым увеличить нагрузочную способность
- объединение функций на одном выводе (например, один и тот же вход можно подключить к входу UART и входу прерывания)
- тестирование и отладка.
Вы, наверное, уже догадались (или я об этом писал раньше??), что в концепции PNJ периферия может быть подключена внутри МК и не иметь выходов наружу.
Для окончательно отлаживаемого устройства это отлично, так как позволяет минимизировать размеры корпуса МК и изделия (и скрыть от конкурентов возможность понять внутреннюю логику работы ПНА), но на этапе отладки может оказаться полезным выводить часть «тестовых» сигналов через PPS и отлаживать работу аппаратной части.
Рисунок 1. Пример настройки PPS в среде разработки MPLAB X IDE Текущий мониторинг драйверов выходных портов В некоторых новейших семействах, например PIC16F18855, появилась доселе невиданная в PIC функция — управление током выходного драйвера, т.е.
управление входящим/выходящим током (Current-Control Drive Mode, CCDM).
Теперь вы можете установить, какой ток будет течь или поступать в порт. При включении этого режима управление током можно включить для каждого вывода микроконтроллера, а также можно индивидуально включить управление входящим и исходящим током.
Вариантов значений тока не так много – можно выбрать значения 1, 2, 5 и 10 мА, при этом выбранное значение будет одинаковым для всех управляемых выходов.
Но управление током драйверов выходных портов дает массу возможностей:
- самодиагностика, обеспечение надежности;
- уменьшение количества токоограничивающих резисторов на плате, упрощение печатной платы;
- снижение излучаемых помех;
- возможность генерации пилообразных сигналов
- .
(думать о большем? ;-)
Примеры
Надежность, Самодиагностика
Допустим, на плате произошло короткое замыкание между двумя портами, настроенными на выход. Если один порт находится в состоянии лог.1, а второй в состоянии лог.
0, то через порт будет течь ток.
При нагрузке до 25мА (реально до 50мА) через порты будет протекать большой ток, что может привести к выходу из строя порта или контроллера.
Функция ограничения тока может предотвратить повреждение порта.
Кроме того, можно организовать диагностику портов и определение нагрузки.
Если необходимо протестировать порт, используются аналогичные схемы (см.
рис.
2).
В этом случае вы можете подать сигнал на один порт и прочитать статус с контакта другого порта.
В принципе, благодаря строению портов Микросхемы МК, можно провести тестирование без внешнего резистора (подать на порт какой-то логический уровень и прочитать вход этого же порта), но в случае короткого замыкания на на выходе ограничения тока не будет.
Рис.
2. Самотестирование порта МК.
Благодаря функции ограничения тока порта мы можем обеспечить безопасное тестирование порта, поскольку ток повреждения будет ограничен функцией CCDM.
Рис.
3. Самотестирование с использованием ограничения тока порта.
Например, в программе мы настраиваем порт (RC7) на токоограничивающий выход, подаем логическую 1, затем считываем состояние этого же порта на входе.
Считать мы можем как в цифровом виде, так и с помощью АЦП, причем во втором случае мы можем определить сопротивление нагрузки (поскольку известны напряжение питания и ток через порт).
тестирование цифрового входа | Входное тестирование АЦП |
---|---|
|
|
4. Выводит информацию о тестировании порта RC7 на терминал.
Генераторы
В предыдущем статья посвященная CLC Мы уже рассмотрели различные типы генераторов/мультивибраторов, давайте посмотрим, как CCDM и PPS позволят упростить ранее простые схемы на основе CLC.Рис 5. Мультивибратор на двух вентилях.
На рис.
5 показаны ранее рассмотренный генератор на D-триггере, инвертор и RC-цепь (в данном случае схема немного перерисована, чтобы показать внешние по отношению к микроконтроллеру связи).
Частота генератора определяется параметрами R и C. Резистор R задает ток заряда/разряда конденсатора C. Теперь, имея встроенный контроллер тока драйвера порта, мы можем убрать резистор и немного упростить схему.
Примечание.
На следующих рисунках выход порта с функцией CCDM будет обозначен резистором с надписью CCDM.
Рис.
6. Мультивибратор с ограничением выходного тока порта CLC2 Следует отметить, что совсем не обязательно использовать D-триггер для CLC1; подойдет любая реализация неинвертирующего вентиля.
Рис.
7. Еще один вариант мультивибратора с двумя логическими элементами.
Возможность избавиться от одного резистора не является той целью, ради которой стоило бы рассматривать эту тему, но в данном примере мы дополнительно имеем следующее:
- уменьшение количества используемых выводов МК (да, вы помните, что часть ПНА у нас есть в виде ППС), то есть для одного и того же случая мы можем иметь больше возможностей — впихнуть больше в меньшее.
- Возможность программного изменения частоты! Если мы изменяем ток заряда/разряда конденсатора, то мы изменяем скорость изменения напряжения на конденсаторе, а значит и частоту переключения мультивибратора.
Рис.
8. Управление током позволяет программно изменять частоту мультивибратора.
Исходная схема потребует 3 контакта микроконтроллера, модифицированная схема с использованием PPS и CCDM требует только 2. Фактически мультивибратор можно сделать на одном вентиле (рис.
9), тогда микроконтроллеру понадобится только один внешний выход. Выход CLC можно подключить внутри MCU к другим периферийным устройствам.
На конденсаторе мы увидим треугольный сигнал, но можем убедиться, что на выходе CLC все еще присутствует последовательность «нулей» и «единиц», если выход того же CLC подключить к другому «управляющему» выводу МК.
с помощью ППС.
Рис.
9. Мультивибратор на один вентиль
Рис.
10. Форма сигнала конденсатора мультивибратора и управляющего выхода логического элемента.
Генератор линейного напряжения
Для режима управления током драйвера порта мы можем установить фиксацию тока притока и оттока.На схеме рис.
9 контролируются оба тока.
Если включить управление только протекающим током, то получим следующую картину (рис.
11).
Рис.
11. Генератор линейного напряжения.
То есть в данном случае конденсатор заряжается ограниченным током 1мА и разряжается через порт без ограничения тока (обратите внимание, что максимально допустимый ток для порта составляет 50мА, поэтому для ограничения тока может понадобиться последовательный резистор ).
Как видно из схем (рис.
10 и 11), мы получаем пилу на конденсаторе, верхнее и нижнее значения напряжения которого лежат между уровнями лог 1 и 0 цифровых входов.
Если мы хотим увеличить амплитуду, то можно дополнительно использовать два внутренних компаратора (схему этого генератора мы уже рассматривали в первой части).
Теперь повторим эту схему, но с использованием функции управления током драйвера выходного порта (CCDM), т.е.
без внешнего резистора и с уменьшенным количеством задействованных портов ввода-вывода.
Рис.
12. Мультивибратор с компараторами.
Управляя током, мы получаем более линейный генератор пилообразного напряжения, чем в аналогичной схеме, рассмотренной ранее (см.
[1]).
Так же, как и для предыдущей версии мультивибратора, мы можем менять частоту программно, изменяя ток порта.
Рисунок 13. Выход мультивибратора
Генератор, управляемый напряжением
Если изменить опорное напряжение на компараторе, то получим генератор, управляемый напряжением.Поддержка компаратора может быть изменена как за счет встроенного ЦАП, так и запитана от внешних цепей микроконтроллера.
Рис.
14. Изменение частоты генератора путем изменения опорного напряжения компаратора.
Схема мультивибратора с использованием двух компараторов и RS-триггера может быть немного оптимизирована.
Оставьте нижний порог схемы (триггерный вход R) управляемым от компаратора, а второй от порта (триггерный вход S).
Рис.
15. Вариант мультивибратора с одним компаратором.
Освободившийся компаратор вместе с построенным пилогенератором можно использовать для построения ШИМ-модулятора.
ШИМ-модулятор
Итак, теперь если на один вход компаратора подать пилообразное переменное напряжение, а на другой «опорное» напряжение, то мы получим ШИМ-модулятор.Скважность ШИМ будет определяться пороговым уровнем напряжения, а частота – частотой пилы.
Рис.
16. ШИМ-модулятор от пилогенератора и компаратора.
Рис.
17. Схема выхода ШИМ-модулятора.
Усилитель класса D
Частота пилы рассматриваемых генераторов определяется емкостью C и током порта.Мы можем сформировать пилу с частотой в сотни килогерц.
Опорный сигнал может быть как внешним, так и генерироваться, например, встроенным ЦАП.
Если опорный сигнал исходит от источника звука, то времени на постройку усилителя класса D у нас остаётся очень мало.
Микроконтроллеры серии PIC16F188xx имеют модуль дополнительного генератора сигналов (CWG), который может генерировать сигналы управления мостовой схемой из входного сигнала.
Рис.
18. Схема усилителя класса D на микроконтроллере с использованием CIP.
Рис.
19. Схема сигналов усилителя.
Итак, из таких частей PNA, как порт с регулировкой выходного тока CCDM, конфигурируемые логические ячейки CLC, компараторы, ЦАП, формирователь комплементарного сигнала CWG, мы получили усилитель класса D. Полученные результаты Мы рассмотрели еще одну часть периферии, независимой от ядра — порты ввода/вывода микроконтроллеров Microchip. Большинство функций, включая функции переназначения выводов, присутствуют во многих семействах PIC16F1xxx, но новая функция CCDM (управление током выходного драйвера порта) появилась совсем недавно в семействе PIC16F188xx (PIC16F18855 и т. д.).
Независимость от ядра заключается в том, что нам необходимо инициализировать только необходимые возможности (PPS, CCDM и т.д.), остальное функционирование не зависит от тактовой частоты и в каком состоянии находится ядро МК (Run, Sleep, Idle или Доза).
Но в процессе работы мы все же имеем возможность изменить функционирование такой периферии.
Независимая от ядра периферия интересна сама по себе, но наибольшую выгоду может принести возможность синтеза функциональных блоков, т.е.
совместного использования нескольких периферийных модулей для решения конкретных задач.
При этом тактовая частота, скорость и разрядность ядра отходят на второй план — аппаратное обеспечение выполняет специализированные функции, а ядро занимается программной поддержкой продукта.
Литература:
- Настраиваемые логические ячейки в PIC-контроллерах.
- Технический паспорт PIC16(L)F18855/75. www.microchip.com
- ТБ3140. Техническое описание программируемого генератора линейного изменения.
www.microchip.com
-
Зеленая Луна
19 Oct, 24 -
Mdofpc — Бесплатная Оценка И Диагностика Пк
19 Oct, 24 -
Зачем Покупать Беспроводной Принтер?
19 Oct, 24 -
Как Вылечить Shuttle Xpc
19 Oct, 24 -
Как Вы Выкладываете Макет Страницы?
19 Oct, 24 -
Это 1.1.13 Rc
19 Oct, 24