Ой, про выбор - это сложно. Как правило - что попалось под руку и подошло. Валялся у меня тут cy8ckit-059 на котором решил сделать "секундомер". Так как индикацию было решено сделать на "стекляшке", то решил делать на пятом - у него в отличие от четвёртого честный аналоговый формирователь уровней LCD. Цифровой формирователь на четвёртом кристалле меня не впечатлил - нет достаточной гибкости. Если питание 5 вольт, то и стекляшка должна быть соответствующей. И вот когда сделал, меня немножко поразило то, что ни разу не получил сообщения о том, что кончились ресурсы (что на четвёртом было нормой). И вот я решил, что при таком обилии я могу немножечко развернуться.
Вот как выглядит сейчас проект с потребляемыми ресурсами:
И это при пяти 16-битных счетчиках. Квадратурные энкодеры, хоть и написано 32 бит, на самом деле 16 бит аппаратных, а остальные 16 - программно. И еще есть ресурсы, когда буду пытаться сделать генератор синхроимпульса и 128 импульсов запуска АЦП для считывания ПЗС.
Собственно, я один свой проект разделил на аппаратную часть и алгоритмическую части в целях портирования. В данный момент этот проект был собран на stm32f030, но в прошлом месяце я нарисовал платы под stm32f051 (еще не пришли... похоже с JLC надо переставать дружить) и поэтому надо будет только переписать файл hardware_xxx.c под новый кристалл и всё должно заработать. А тут взбрело, что я могу этот же проект перенести дальше. Для сборки мне потребовалось только написать тот же hardware и i2c_drv.c. Ну и в main сделал дополнительный дефайн для выбора eeprom для хранения конфигурации, так как в изначальной конструкции использовалась 24cXX и нужно было указать какую, до 24c32 или дальше. А тут оказывается уже есть набортный EEPROM.
Так вот теперь те же исходники собираются в разных проектах. Конечно, пришлось кое что подрихтовать. Например, PSoC Creator не считает char беззнаковым. Пришлось во многих местах, где пересекаются uint8 и char сделать явное указание беззнаковости.
Теперь, конечно, когда уже видны требуемые ресурсы, можно попытаться через параметрический поиск что-то поискать, но, всегда хочется иметь запас, чтобы решать свои проблемы, а не как втиснуть в имеющийся кристалл новую затею. Например, меня сейчас интересует возможность в уже собранном железе поменять местами выходы PWM и Phase, чтобы поменять логику работы драйвера двигателя - даст ли это возможность более крутого торможения? И если окажется что при ограниченных ресурсах невозможно оттрасировать связь внутри кристалла? Резать дорожки? У меня такая ситуация была и не раз когда развлекался с ПЛИС от зайлинкса.
Добавлено after 44 minutes 32 seconds:Indeed, зашел на мозер, взял самый дешевый 5-й кристалл за 6€ CY8C5268LTI-LP030 - собрал - влез. Ок, не буду пока китпроги потрошить. Надо только и в китовском проекте байпассный конденсатор перетащить с порта 0.2 на 0.4 - тогда они будут совместимы.