• ПНЯ — Периферия Независимая от Ядра в микроконтроллерах Microchip, известная так же как CIP — Core Independent Peripheral.

Предыдущая статья [1] (назовём её «часть 1» цикла статей, так как надеюсь, что энтузиазма и сил хватит на несколько статей) была посвящена самой очевидной из частей Периферии Независимой от Ядра микроконтроллеров (МК) Microchip – конфигурируемым логическим ячейкам.


UPD. тут часть 3. АЦП с вычислителем


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


Содержание


  • Стандартные функции портов
  • Переназначение функций портов ввода/выхода, PPS
  • контроль тока выходного драйвера порта, CCDM
  • примеры использования
  • надежность, самодиагностика
  • мультивибраторы (генераторы)
  • генератор пилообразного напряжения
  • ШИМ модулятор
  • D-class усилитель

Стандартные функции портов


Порты ввода/вывода можно назвать Периферией Независимой от Ядра, так как входы портов являются асинхронными, состояние портов сохраняется в спящем состоянии ядра. Наверное уникальных возможностей у “портовой” периферии найти сложно, но некоторые “фишки” всё же заслуживают внимания.


Порты современных микроконтроллеров PIC имеют набор стандартных функций:


  • Аналоговые входы
    • входы АЦП
    • входы компараторов
    • входы операционных усилителей
    • входы опорного напряжения

  • Аналоговые выходы
    • выходы ОУ
    • выходы ЦАП
    • выходы источника опорного напряжения

  • Цифровые входы
    • настройка типа входа TTL или ST (триггер Шимтта)
    • возможность включения внутренней подтяжки к Vdd
    • выходы источника опорного напряжения

  • Цифровые выходы
    • стандартный выход или выход типа открытый сток
    • возможность ограничения скорости нарастания фронта/спада (полезная функция для уменьшения EMI помех)
    • высокая нагрузочная способность выхода (обычно для PIC контроллеров втекающий/вытекающий ток имеет верхнее значение 25мА, но у некоторых семейств нагрузочная способность пары выводов портов увеличена до 50 или даже до 100мА)


Переназначение функций портов ввода/выхода, PPS


Из “не стандартных”, но весьма полезных особенностей следует отметить возможность переназначения функций портов (Peripheral Pin Select, PPS).
Переназначение функций портов интересно тем, что предоставляет следующие возможности:


  • оптимизация трассировки печатной платы – разработчик может «перетащить» те или иные входы/выходы периферии по выводам контроллера
  • уменьшение влияния помех (можно максимально отдалить высокочастотные цифровые выводы (ШИМ, интерфейсы и др) от аналоговых цепей
  • наиболее полное использование периферии (микроконтроллеры Microchip всегда славились обилием периферийных модулей, но из-за ограничения числа выводов корпусов микросхем разработчику не всегда удавалось использовать нужный ему набор периферии, так как разная периферия могла использовать один и тот же вывод микросхемы, т.е. приходилось чем-то жертвовать)
  • увеличение нагрузочной способности порта — выход периферии (UART, ШИМ и др.) можно подключить к нескольким портам МК, эти порты соединить на плате и тем самым увеличить нагрузочную способность
  • объединение функций на один вывод (к примеру один и тот же вход можно подключить к входу UART и входу прерывания)
  • тестирование и отладка. Вы наверное уже догадываетесь (или я писал об этом ранее??), что в концепции ПНЯ периферия может соединяться внутри МК и не иметь выходов наружу. Для конечного отлаженного устройства это замечательно, так как позволяет минимизировать размер корпуса МК и изделия (и скрыть от конкурентов возможность понять внутреннюю логику работы ПНЯ), но на этапе отладки бывает полезно через PPS часть “тестовых” сигналов вывести наружу и отладить работу “железа”


Рис.1. Пример конфигурирования PPS в среде разработке MPLAB X IDE


Контроль тока выходных драйверов портов


В некоторых новейших семействах, например PIC16F18855, появилась доселе невиданная в PIC функция — контроль тока выходного драйвера, т.е. контроль втекающего/вытекающего тока (Current-Control Drive Mode, CCDM). Теперь можно установить какой ток будет вытекать или втекать в порт. При включении данного режима для каждого вывода микроконтроллера можно включить контроль тока, причем имеется возможность индивидуального разрешения контроля втекающего и вытекающего тока.


Вариантов значений токов не так много — можно выбрать значения 1, 2, 5 и 10мА, к тому же выбранное значение будет единым для всех контролируемых выходов.
Но, контроль тока выходных драйверов портов дает массу возможностей:


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

Лучше всего можно прочувствовать возможности новых функций портов на конкретных примерах


Примеры


Надежность, Самодиагностика


Допустим, на плате произошло короткое замыкание между двумя портами, настроенными на выход. Если один порт будет в состоянии лог.1, а второй в лог.0, то через порт будет протекать ток. При нагрузочной способности до 25мА (реально до 50мА) через порты будет протекать большой ток, что может привести к выходу порта или контроллера из строя.


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


При необходимости тестирования порта используют подобные схемы (см. рис.2). В этом случае можно подать сигнал на один порт и считать состояние другим выводом порта. В принципе, за счет структуры портов МК Microchip, можно тестировать без внешнего резистора (подать в порт какой-либо лог. уровень и считать вход этого же порта), но при КЗ по выходу не будет ограничения тока.



Рис.2. Самотестирование порта МК.


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



Рис.3. Самотестирование с использованием ограничения тока порта.


Например, в программе настраиваем порт (RC7) на выход с ограничением тока, подаем лог.1, далее считываем состояние этого же порта на входе.
Считывать можем как в цифровом виде, так и с помощью АЦП, причем во втором случае можем определять сопротивление нагрузки (так как известны напряжение питания и ток через порт).


тестирование цифровым входом тестирование вх.АЦП

Рис.4. Вывод в терминал информации тестирования порта RC7.


Генераторы


В предыдущей статье посвященной 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. Форма сигнала на конденсаторе мультивибратора и контрольный выход логического элемента.


Генератор пилообразного напряжения


Для режима контроля тока драйвера порта мы можем задавать фиксацию втекающего и вытекающего тока. На схеме рис.9 контролируются оба тока. Если включить контроль только вытекающего тока, то получим следующую картину (рис.11).



Рис. 11. Генератор пилообразного напряжения.


То есть в данном случае конденсатор заряжается ограниченным током 1мА, а разряжается через порт без ограничения тока (следует учесть, что максимально допустимый ток для порта 50мА, поэтому может понадобиться последовательный резистор для ограничения тока).


Как вы видите из диаграмм (рис. 10 и 11) на конденсаторе получаем пилу, верхнее и нижнее значение напряжений которой лежит между уровнями лог 1 и 0 цифровых входов.


Если хотим увеличить амплитуду, то можно дополнительно использовать два внутренних компаратора (в ч.1 уже рассматривали эту схему генератора). Теперь повторим эту схему, но уже с использованием функции контроля тока драйвера порта выхода (CCDM), т.е. без внешнего резистора и с уменьшенным числом задействованных портов В/В.



Рис.12. Мультивибратор с компараторами.


За счет контроля тока получаем более линейный генератор пилообразного напряжения, чем в рассматриваемой ранее аналогичной схемы (см. [1]).
Так же как и для предыдущего варианта мультивибратора, частоту можем менять программно за счет изменения тока порта.



Рис 13. Выход мультивибратора


Генератор управляемый напряжением


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



Рис. 14. Изменение частоты генератора за счет изменения опорного напряжения компаратора.


Схему мультивибратора на двух компараторах и RS-триггере можно чуть оптимизировать. Нижний порог срабатывания схемы (вход R триггера) оставить с управлением от компаратора, а второй от порта (S вход триггера).



Рис. 15. Вариант мультивибратора с одним компаратором.


Освободившийся компаратор, совместно с построенным генератором пилы можно использовать для построения ШИМ модулятора.


ШИМ модулятор


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



Рис. 16. ШИМ модулятор из генератора пилы и компаратора.



Рис. 17. Диаграмма на выходе ШИМ модулятора.


Усилитель D-класса


Частота пилы рассматриваемых генераторов определяется емкостью C и током порта. Можем сформировать пилу с частотой сотни килогерц.
Опорный сигнал может быть как внешним, так и формироваться, например, встроенным ЦАП. Если опорный сигнал поступает с источника звука, то нам осталось совсем немного до построения усилителя класса D.


У микроконтроллеров серии PIC16F188xx есть модуль формирования комплементарных сигналов (Complementary Waveform Generator, CWG), который из входного сигнала может сформировать сигналы управления мостовой схемой.



Рис. 18. Схема усилителя класса D на микроконтроллере с использованием CIP.



Рис. 19. Диаграмма сигналов усилителя.


Итак, из таких частей ПНЯ как порт с Контролем тока выхода CCDM, Конфигурируемые Логические Ячейки CLC, Компараторы, ЦАП, формирователь комплементарных сигналов CWG мы получили усилитель класса D.


Итоги


Мы рассмотрели еще одну часть Периферии Независимой от Ядра — порты ввода/вывода микроконтроллеров Microchip. Большинство возможностей, включая переназначение функций выводов, присутствуют во многих семействах PIC16F1xxx, но новая “фича” — CCDM (управление током выходного драйвера порта), появилась совсем недавно в семействе PIC16F188xx (PIC16F18855 и др.).


Независимость от ядра заключается в том, что нам необходимо только инициализировать необходимые возможности (PPS, CCDM и др), остальное функционирование не зависит от тактовой частоты и в каком состоянии находится ядро МК (Run, Sleep, Idle или Doze). Но в процессе работы мы, тем не менее, имеем возможность изменить функционирование такой периферии.


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


Литература:


  1. Конфигурируемые Логические Ячейки в PIC контроллерах. https://geektimes.ru/post/278718/
  2. PIC16(L)F18855/75 Data Sheet. www.microchip.com
  3. TB3140. Programmable Ramp Generator Technical Brief. www.microchip.com

Комментарии (0)