Делюсь личными впечатлениями. Возможно, этот раздел следует прочитать в первую очередь,
чтобы один раз плюнуть и больше никогда и не оборачиваться при слове «PSoC»!
Учтите, что все нижесказанное относится к первому поколению PSoC. В новых семействах
PSoC3 и PSoC5 (и более старших, если они уже появились) многие недостатки уже ликвидированы.
Любой продукт вызывает определенные эмоции. Эти эмоции меняются в процессе знакомства и пользования, переходя в осадок после того, как продукт становится привычным. Цвет осадка может быть радостным – тогда мы расхваливаем продукт и советуем его всем кому ни поподя, цвет осадка может быть и черным, что соответствует полному отторжению продукта. Не миновала сия чаша и микросхемы PSoC. Если нарисовать мое знакомство с PSoC в виде эмоциональной диаграммы, то получится что-то наподобие вот этого (красным показаны положительные эмоции, синим – отрицательные):
Первое знакомство: | |||||||||
Беглое изучение тех.документации: | |||||||||
Первые пробы: | |||||||||
Задачи посложнее: | |||||||||
Подробное изучение Справочного Руководства: | |||||||||
Применение новых знаний: | |||||||||
Формирование четкого представления о возможностях: | |||||||||
Применение на практике: |
Знакомство с PSoC у меня началось в 2003 году, когда был объявлен конкурс на лучшую разработку с использованием этих микроконтроллеров. Тогда всем желающим были разосланы отладочные платы, имеющие на борту, помимо чипа CY8C27443-24PVI, встроенный программатор с USB интерфейсом. Плата называлась Invention Board и была выполнена в виде здоровенной 28-ножечной «микросхемы». В комплекте шел компакт-диск со всем необходимым софтом и большой библиотекой технической документации. Глаза разбегались, хотелось быстрее начать работать с железом, чтобы поскорее создать что-нибудь пиликающе-моргающее.
Динамика, изображенная на диаграмме, свойственна в той или иной степени всем продуктам, будь то туалетная бумага или автомобиль. Качества, которые восхваляются рекламой, воспринимаются мозгом в первую очередь и заставляют надевать розовые очки. Лишь по прошествии некоторого времени всплывают отрицательные моменты, замалчиваемые рекламой или, что еще хуже – справочными руководствами и описаниями. Еще через какое-то время пользователь учится мириться, либо тем или иным способом обходить отрицательные качества продукта, и тогда чаша весов вновь склоняется в положительную сторону – пользователь знает, ЧТО может, и знает КАК может.
Как это психологически принято, я начну с перечисления отрицательных моментов,
и если вы их вытерпите, то завершу разговор описанием положительных сторон.
Итак,
![]() 1. Затраты времени на разработку могут оказаться больше, чем при использовании обычных микроконтроллеров, так как приходится заниматься проектированием внутренней структуры, которой присущи значительные ограничения. |
![]() 2. Очень неприятный сюрприз – оказывается, что АЦП, которые можно построить внутри PSoC, требуют не только использования нескольких блоков, но и отнимают ресурсы процессора, т.к. не являются полностью аппаратными (программная поддержка встроена в соответствующие Модули). Вдобавок все они очень медленные (хотя выбор разрядности позволяет сделать некоторый компромисс между точностью и быстродействием). |
![]() 3. АЦП последовательного приближения (модуль SAR6) хоть и обладает малым временем преобразования (20 мкс), но отсутствие узла выборки-хранения на входе нивелирует это преимущество. Наличие аппаратного акселератора не означает полностью автономную работу модуля – программная поддержка отнимает почти все ресурсы процессора. Да и разрядность у этого модуля всего лишь 6 бит (возможность строить АЦП большей разрядности оговорена в Техническом Руководстве по PSoC). |
![]() 4. Мне почему-то казалось, что раз массив назван «аналоговым», то и работать он должен непрерывно. Но это оказалось справедливым только для 1/3 аналоговых блоков. На этих блоках (CTB) могут быть построены только усилители и компараторы. Другие блоки – SCB (из которых строятся фильтры, интегрирующие звенья, модуляторы и проч. узлы) – тактируются высокой частотой (неперекрывающимися фазами Ф1 и Ф2) и дискретизируют сигнал, что приводит к нежелательным эффектам. На выходе этих блоков присутствует пульсирующий сигнал, что надо учитывать при проектировании структуры (в особенности – следить за правильной фазировкой блоков при их соединении в цепочки). |
![]() 5. Запись во FLASH требует указания текущей температуры кристалла. Это не только усложняет процедуру записи, но и требует размещения специального Модуля Пользователя – датчика температуры FlashTemp (а его точность без калибровки составляет всего лишь 20 С). Можно задаться фиксированным значением температуры, например 25 С, но тогда не будут гарантированы результат и количество циклов перезаписи при различных температурах эксплуатации. К тому же запись во FLASH приостанавливает основной поток команд. |
![]() 6. В чипах с объемом памяти более 256 байт используется страничная организация, требующая дополнительных манипуляций с регистрами-указателями. Это не только удлиняет код и снижает быстродействие, но и способствует появлению ошибок при программировании. |
![]() 7. Аккумуляторная архитектура центрального процессора означает шаманские танцы вокруг регистра «А». К счастью, в системе команд M8C есть много инструкций в обход аккумулятора. |
![]() 8. Платный (и не очень хороший) компилятор Си. Для версии PSoC Designer 4.4 (и старше) появилась альтернатива – компилятор HI-TECH, предусматривающий работу в бесплатных режимах – неограниченном по времени использования («урезанном») и 45-дневном («оценочном»). |
![]() 9. Нет программного симулятора (бог бы с ней, с аппаратной частью, дайте нам возможность «погонять» хотя бы процессорное ядро!). В этом вопросе Cypress предполагает дополнительное вложение денег в покупку аппаратных отладочных средств. Имеющийся симулятор работает с командной строки; а я так и не научился им пользоваться. |
![]() 10. Не все возможности архитектуры PSoC реализованы в Модулях Пользователя. Для осуществления многих задумок может потребоваться прямая модификация управляющих регистров (из тела программы). Это предполагает хорошее знание возможностей PSoC, долгий поиск соответствующей информации в справочных руководствах, а также многочисленные пробы и ошибки. |
![]() 11. Недостаточная гибкость в соединениях модулей между собой, как того хотелось бы. Это может привести даже в полное уныние. Когда я впервые увидел название «Счетчик» (т.е. модуль «Counter»), мне почему-то представился цифровой счетчик с многочисленными выходами (что-то наподобие 155ИЕ5), которыми я мог бы свободно распоряжаться. На самом деле даже 32-разрядный модуль Counter32 (все счетчики работают на уменьшение) имеет только два аппаратных выхода – сигнал перехода через нулевое значение и результат сравнения с некоторой константой. Значение счетчика считывается через специальные регистры, т.е. он фактически предназначен для подсчета событий. |
![]() 12. Уже неприлично (по теперешним меркам) иметь 24 МГц тактовой частоты, 8-разрядное ядро и несколько тактов на исполнение инструкции. |
![]() 1. Действительно, массив аналоговых и цифровых блоков позволяет многие задачи решать аппаратно (освобождаются ресурсы центрального процессора). |
![]() 2. Количество внешних, особенно – активных, компонентов (так называемой «обвязки») фатально уменьшается, вплоть до почти «голой» микросхемы PSoC (справедливо для устройств малой и средней сложности). |
![]() 3. Если вам понадобится иметь много каналов UART, независимых ШИМ-генераторов или, например, модулей ЦАП-АЦП – это не проблема. Только приемопередатчик I2C может быть единственным, поскольку это фиксированный аппаратный ресурс. |
![]() 4. Есть АЦП интегрирующего типа – с их помощью можно не только ослаблять сетевые наводки 50/60Гц, но и применять эффективную обработку сигнала на аппаратном уровне. Их разрядность варьируется и достигает 14 бит. |
![]() 5. Индивидуальная настройка и большое разнообразие режимов у линий ввода-вывода, а также их хорошая нагрузочная способность (25 мА на цифровых и 40 мА на аналоговых выходах). Есть способ напрямую управлять жидкокристаллическими индикаторами. |
![]() 6. Возможность питания устройства от одного NiCd-аккумулятора 1,2В (для этого на кристалле предусмотрен специальный преобразователь напряжения, хоть и маломощный, но требующий только двух внешних компонентов – индуктивности и диода). |
![]() 7. Хорошая система команд центрального процессора (некоторые почему-то считают ее х51-совместимой, хотя в сущности это не так), которая не сильно утомляет и способствует малому числу ошибок при программировании на ассемблере (есть, например, команды прямой пересылки память-память mov[адрес],[адрес] и операции вида add[адрес],константа, не затрагивающие аккумулятор). |
![]() 8. Среда разработки PSoC Designer интуитивно понятна и дает наглядное представление о возможностях PSoC без изучения технической документации. |
![]() 9. Наличие готового программного интерфейса (API) для взаимодействия с модулями. Нет необходимости манипулировать регистрами модулей (и лезть в справочное руководство, чтобы получить соответствующую информацию). |
![]() 10. Документация по внутреннему устройству PSoC очень подробна, в ней можно найти ответы на все вопросы. Модули Пользователя также хорошо задокументированы, а в PSoC Designer есть мощная справочная система. |
![]() 11. Большая библиотека наработок, официально поддерживаемая фирмой Cypress (описания и «исходники» проектов). Их можно использовать в готовом виде, а можно – как отправную точку при разработке собственных устройств. |
![]() 12. Широкий выбор кристаллов – с разным числом аналоговых и цифровых блоков, количеством выводов, объемом RAM и FLASH, с различными уникальными возможностями (типа поддержки USB или емкостных датчиков). |
antiradio.narod.ru/psoc
Дата создания документа: 28.04.2008. Последнее обновление: 08.04.2010.