Що таке PSoC
Коротко розповім що таке PSoC, оскільки в Україні про продукцію Cypress відомо не багато. Можливо після цієї теми хтось захоче використати ці мікросхеми в своїх розробках.
PSoC (Programmable System-on-Chip) — це програмована система на кристалі, тобто електронна схема, яка виконує функції певного пристрою і розміщена в одному корпусі мікросхеми. Розробник має можливість самостійно створювати функціонал який йому потрібний.
В даний час існує 4 серії PSoC: PSoC 1, 3, 4, 5PL, більш детально можна ознайомитись на офіційному сайті. В цій статті буде описана серія PSoC 4.
На відміну від класичних мікроконтроллерів (AVR, PIC, STM32...) PSoC не має фіксованої периферії (UART, I2C, SPI, DMA....), розробник сам вирішує який функціонал буде мати запрограмований чіп. Іншими словами якщо потрібний тільки UART та ADC, пристрій буде мати тільки ці два блоки. Цим PSoC дуже схожий на FPGA, за винятком того що PSoC місить конфігуровану аналогову периферію(компаратори, операційні підсилювачі, мультиплексори, фільтри...).
Для розробки використовується середовище PSoC Creator, яке можна безплатно завантажити з офіційного сайту: www.cypress.com/...ed-design-environment-ide
Проект в PSoC Creator:
Для того щоб налаштувати проект, потрібно зробити кілька простих кроків:
1. Із бібліотеки компонентів, вибрати потрібні та перенести їх на TopDesign.
2. Через GUI кожного компонента налаштувати його параметри.
3. З’єднати всі компоненти у схему.
4. Призначити виходи схеми відповідним пінам мікросхеми.
Cypress має багато різних Development Kits: www.cypress.com/...s/psoc-4-development-kits
для демонстрації вибрана наступна плата
Вона містить програматор та дебагер, що дозволяє використовувати тільки USB кабель для прошивки та покрокового відлагодження програми в реальному пристрої.
Приклад «Hello world» на PSoC
Алгоритм мигання світлодіодом на всіх мікроконтроллерах однаковий, і має наступний псевдокод:
while(1)
{
enable LED;
delay(...);
disable LED;
delay(...);
}
На PSoC все можна зробити набагато простіше і навіть без використання процесорного ядра. Для цього із бібліотеки виберемо компонент «Clock», «FreqDiv», «Digital Output Pin» та «Logic High ’1′ » і з’єднаємо їх між собою.
Компоненти синім ніяк не впливають на роботу схеми, а служать тільки для кращого розуміння схеми.
Принцип роботи схеми дуже простий, тактовий сигнал частотою 1kHz (можна вибрати будь яку іншу частоту) подається на дільник частоти який ділить частоту на 1000. Світлодіод підключений до виходу дільника частоти і буде мигати з частотою 1 Hz. Після цього потрібно вивести сигнал на пін мікросхеми.
Розробник має можливість комбінувати аналогові та цифрові блоки, а також писати програму як для звичайних мікроконтроллерів.
PSoC Creator має багато різних прикладів роботи з PSoC, для цього в меню File -> Code example вибираємо потрібний приклад.
На офіційному сайті є багато відео з різними прикладами застосування:
www.cypress.com/video-library
Також планую більш детально описати про різні компоненти PSoC на своєму сайті: embedded.co.ua
Якщо виникли запитання пишіть в коментарях. Сподіваюсь ця інформація була цікавою і корисною.
P.S. Cypress має офіс у Львові і в даний час є багато вакансій в Embedded напрямку.
Update: Development kits та мікроконтроллери можна купити на офіційному сайті із безкоштовною доставкою в Україну: www.cypress.com/cypress-store
58 коментарів
Додати коментар Підписатись на коментаріВідписатись від коментарівВ чем подвох?
Так, це PSoC 5. Не зовсім зрозумів Вашого запитання. Опишіть, будь ласка, детальніше.
В PSoC 5 заведен сигнал с энкодера, переменная должна считать его шаги, 1 импульс 0.01мм в определенный момент обнаружилось что в некотором месте шаг энкодера не меняет значение на табло, программа была урезана до минимума чтобы разобраться как так и вот на видео четко видно как после очередного добавления результат на табло не меняется.
Спробуйте використати типи int (uint32, uint32_t) і перевірити чи проблема зникне. Думаю це проблема через тип флоат, якщо так, то це очікувано. Не зовсім зрозумів для чого у Вашій програмі float типи, вибираєте int і все стає простіше. Для формування потрібної стрічки на дисплеї просто робите sprintf і передаєте буфер на дисплей.
P.S. якщо не помиляюсь, у Ває є досвід з Асемблером (goto s, jmp s ). Для С краще використовувати for (;;), while (1) для вічних циклів.
наверно в этом
coliru.stacked-crooked.com/a/f7cc5764f5c2839a
очікувана поведінка float, яка не має відношення до PSoC (в принципі як і до інших MCU).
И это тоже psoc:
evocom.ua/rus/eshop/view/205005
Дешевле и быстрее, чем с aliexpress
Резет у делителя по нулю срабатывает?
так
наскільки економні ці камінці в плані електроспоживання?
UPD $15 за доставку перебиває бажання погратись.
Active: 1.3 mA to 14 mA
Sleep: 1.0 mA to 3 mA
Deep-sleep: 1.3 µA to 15 µA
Hibernate: 150 nA to 1 µA 2
Stop: 20 nA to 80 nA
детальніше PSoC® 4 Low-Power Modes and Power Reduction Techniques: www.cypress.com/file/121271/download Як варіант зібрати однодумців і замовити кілька, тоді доставка вийде дешевше.
Знайти однодумців можна тут: tqfp.org ,або можливо тут: hacklab.kiev.ua
І все ж, може десь в Україні можна придбати з адекватною націнкою? 15 баксів не такі страшні гроші, але це вартість 3+ найдешевших кітів.
Наскільки я знаю, на жаль ніде. Cypress в Україні має тільки офіс у Львові, але тут відсутній відділу продажу, так що купити не можна.
Якщо хочете купляти, і ще попрацювати з BLE ( Bluetooth Low Energy) то краще взяти такий: www.cypress.com/... ow-energy-ble-pioneer-kit
ось на хабрі про нього: habrahabr.ru/post/261287
Дійсно цікаві продукти, непогана (на перший погляд) документація. Але маркетинг у компанії явно не на висоті :)
Як я раніше писав, продукція більше розрахована на великі компанії Apple, Samsung, Tesla, тому акцент робиться в першу чергу на них.
ось інші плати: www.cypress.com/... s/psoc-4-development-kits psoc-5lp-development-kits
www.cypress.com/...
Зараз Development kits та мікроконтроллери можна купити на офіційному сайті із безкоштовною доставкою в Україну: www.cypress.com/cypress-store
Я навчався на кафедрі ЕОМ при НУ ЛП. Багато викладачів, працюють у Вас. Та і хороших студентів забираєте. У нас була одна ОПЦІОНАЛЬНА лабораторна по ваших PSoC. І то на 5 курсі. І на ній мало чого можна було побачити.
Вам варто тісніше співпрацювати з універами. Гарний приклад зараз є лабораторія LAMPA на факультеті електорніки КПІ. Це відкрита лаба, яку може відвідувати будь хто. І відкрита після занять.І відкрита для всіх охочих.Мають багато мікроконтролерів та інших цікавих штук.
Дякую, цікаво почитати.
А можна його повністю програмувати тільки на С (чи щось інше текстове, типу Verilog) без графічного конфігуратора?
Ви створюєте схему, де задаєте параметри, після цього робите генерацію проекту, і вам стають доступні API функції. Їх ви використовуєте в своїй С програмі. Є можливість створити свій компонент на Verilog. Є компоненти які конфігуруються і програмуються тільки на С — приклад SysTick Timer. Також є можливість експортувати проект з PSoC Creator IAR, KEIL і там повністю писати на С.
Наприклад, я додав на схему LCD, налаштував його відповідно до своїх потреб в GUI. Зробив генерацію проекту:
netpics.org/... ages/2016/07/16/TmwAN.jpg
і мені стали доступні API функції для роботи із цим LCD, їх я можу викликати з С коду:
/***************************************
* Function Prototypes
***************************************/
void LCD_Init(void) ;
void LCD_Enable(void) ;
void LCD_Start(void) ;
void LCD_Stop(void) ;
void LCD_WriteControl(uint8 cByte) ;
void LCD_WriteData(uint8 dByte) ;
void LCD_PrintString(char8 const string[]) ;
void LCD_Position(uint8 row, uint8 column) ;
void LCD_PutChar(char8 character) ;
void LCD_IsReady(void) ;
void LCD_SaveConfig(void) ;
void LCD_RestoreConfig(void) ;
void LCD_Sleep(void) ;
void LCD_Wakeup(void) ;
Ну тобто без створення схеми мишкою неможна? Сама схема можливо у тестовому вигляді, типу xml і її можно відредагувати вручну? Як ці схеми поєднати з системою контролю версій?
Схема і GUI зроблені для того щоб зробити налаштування знучнішими, простішими та очевидними. Як правило схема дуже проста, достатньо один раз її створити , а далі оперуєте з С-м кодом
Просто додаєте на систему контролю версій файл в якому схема та файли програм:
Тут два варіанти:
1. Спочатку створюєте всю схему, а далі працюєте на свн тільки з текстами програм.
2. Схема може буде розділена на кількох листах, кожен працює із своїм листом схеми, тут не має схематичної ієрархії (Top level). Тобто на одному листі я можу добавити таймер, на іншому дисплей, на
.
Графічний конфігуратор призначений для ініціалізації та генерації API-функцій для роботи з компонентами(периферійними пристроями)
Можна, але тоді вам прийдеться напряму звертатись до конфігураційних регістрів (читати і записувати в них).Уж не знаю насколько правда, но говорят что на подобных штуках сделана система «Рада».
Хм, ніколи про це не чув.
Там модуль Habar слетает, IntegerOverflow. А без него ни одна функция системы не работает.
Красивые цацки, но их слабое место — память. В современном мире память стоит не так и дорого, так что могли бы дать разгуляться.
Разумеется, это слабое место не только этой платформы, это в прицнипе бич всех встравиваемых систем: пожадничать установить ресурсы, без которых типа можно обойтись.
Результат всегда один и тот же: да, готовая, отлаженная, вылизанная программа может обойтись малым ресурсом. Но никак не сырая идея, не «воздушный замок». То есть НАЧАТЬ разработку на таком звере и быстро выйти на рабочий прототип — задача близкая к невозможной для тех, кто не имеет под руками аналогов или толкового эмулятора. Но даже с эмулятором — отсутствие памяти становится катастрофой.
Очень советую задуматься над выводом в разработку именно конфигураций с большим объёмом NAND. Почему так: давая разработчику неограниченные возможности, вы дайте накопить критическую массу опыта, чтобы в определённый момент проекты начали выстреливать как попкорн в микроволновке. Малая память гарантирует что проекты так и останутся в голове, так и не дойдя до тестирования. Ведь чтобы сунуть свой проект, нужно удалить предыдущий. А значит одна идея стопорит остальные.
По самой презентации: непонятна MVP-модель. То есть ЧТО из себя будет представлять типичный промышленный образец, во что это обойдётся, какова надёжность этих зверушек, какие корпуса и батареи им нужны для жизни, насколько легко её обслужить конечному пользователю... в общем, хоть бы один кейз разобрали именно по стоимости: разработка, выпуск продукта, продажа, использование.
Пока же выглядит игрушкой, и не самой востребованной. Как Лего — да, годится. Как реальный проект: непонятно в какие именно области он целится, и прежде всего — может ли он полноценно жить без Ардуино на которое он «внезапно» завязан своими платами. Какие ТИПОВЫЕ задачи, где эти платы держат пальму первенства?
"
"Для цього потрібно просто вибрати інший чіп, наприклад такий: www.cypress.com/...
Memories
Up to 256 KB program flash, with cache and security features
Up to 32 KB additional flash for error correcting code (ECC)
Up to 64 KB RAM
2 KB EEPROM Ці чіпи в першу чергу орієнтовані на великі компанії замовники. Tesla, Samsung, Apple:
www.cypress.com/...
investors.cypress.com/...
video.cnbc.com/...
CYPRESS TECHNOLOGY AND MARKET LEADERSHIP
Cypress delivers high-performance, mixed-signal, programmable solutions that provide customers with rapid time-to-market and exceptional system value. Cypress leadership extends to the following areas:
No. 1 in SRAMs
No. 1 in NOR Flash memories
No. 3 provider of automotive MCUs and memories
No. 1 in CapSense capacitive-sensing controllers
Designed the industry’s first USB Type-C port controllers
Ось ціни на чіпи Cypress: www.digikey.com/... ontrollers/2556109?k=psoc
В PSoC пам’ять використовується коли створюється програма на С, схема використовує програмовані цифрові та аналогові блоки, і використовує пам’ять тільки для збереження конфігурації схеми — як FPGA.
Дякую за вичерпну відповідь, зрозуміло.
Оце чомусь і незрозуміло. Великі замовники — це звичайно добре. Але Internet of things — це величезний ринок індивідуальних рішень. Тобто, пристрій можна протестувати партієюДеякі пристрої взагалі можуть бути штучними. Наприклад, системи керування безпекою — в кожному окремому випадку небезпека абсолютно різна. Проте плату «для навчання» не використаєш, бо якість невідома, може вона здохне через рік-два бо флюс дешевий використали чи припой.
Що до пам′яті — я вважаю, що використовувати швидку але малу пам′ять на повільних процесорах = це промах саме по потребах майбутнього ринку. Найтривіальніше питання — поставити примітивну веб-морду замість консольної утиліти, чи написання програм під операційну систему клієнта (ага, під усі, в том числі майбутні, із взаємодією з драйверами).
Більшість сучасних задач — примітивні. Але розробка вимагає коштів, час вимагає коштів, інвестори вимагають швидкого результату. А коли ресурс обмежений, це перекладає завдання оптимізації із дешевого заліза на дорогого розробника. В той час коли оптимізувати і не потрібно, коли треба просто зазирнути «у завтрашній день», і побачити яка саме компонентна база буде дешевою та виробленою в достатній кількості. І об′єднавши спеціалізований чіп саме з дешевим ресурсом — отримати пристрої що можуть конкурувати на ринку, навіть якщо вони вироблені не за масовими технологіями, а саме із цього «лєго», із «учбових» наборів, які насправді мають у собі все необхідне.
PS. Ми живемо у світі, де залишилось дуже мало постійного. Лише тимчасові рішення. Тому запит майбутнього — саме компоненти для швидкої розробки, що використовують дешевий доступний ресурс інших компонентів.
www.cypress.com/internet-things-iot Звідки ви взяли що використаний дешевий флюс і припой? А які процесори ви вважаєте швидкими? Можна мигати ледом на С 2 рядками коду на мікроконтроллері, а можна для цього використати компютер з Linux/Windows/Android та 4GHz, 8RAM і це все написати на С#, JAVA, JavaScript....Це різного класу пристрої, хочете веб морду, вибираєте щось на Linux (Raspberry Pi, Beaglebone Black і так далі).
Вебморда мається на увазі лише простий конфігуратор. Щоб вже для готової схеми наприклад задати рівні спрацьовування від датчиків.
Мигати LEDом звісно не задача для таких контролерів. Але отримати зворотній зв′язок від асинхронного двигуна — саме те що треба. Без зручних механізмів керування досить ймовірною є похибка при настроюванні, а ще треба вивчати документацію та пам′ятати її. А ціна похибки зазвичай висока. Навіть банальний датчик зачинення дверей може відбити комусь пальці якщо, невірно розрахує момент прискорення — бо хтось впише в параметр секунди замість мілісекунд.
<img src="imgdepo.com/id/i9475524">
та ADC.
<img src="imgdepo.com/id/i9475530"> Із таким завданням справиться будь який мікроконтроллер, а від помилок розробника не застрахована будь яка система, для цього і є тестування і різні методики перевірки. Наприклад стандарт MISRA в дечому обмежує розробника, але робить систему трохи безпечнішою: en.wikipedia.org/wiki/MISRA_C
Розробник який пише під мікроконтроллери несе більшу відповідальність, часто він дуже обмежений в використанні стандартних бібліотек мови програмування. Наприклад malloc в embedded може створити багато проблем. Є також багато інших нюансів, які відсутні в прикладному програмуванні.
Ось невеликий список проектів PSoC: ojects?page=2&sort=recent ys?displayFullThread=true
www.hackster.io/...
www.element14.com/...
malloc в ембадед — гріх, тим більше якщо система реалтаймова. мож пули використовувати, але це не срібна куля
погоджуюсь.
до речі, поскільки мова зайшла за пам’ять, підкажіть по такій ситуації: є більш-менш складна програмка на Ардуіно (різні структури, багато іф-ів, «глибоких» викликів функцій, але без new/alloc), і вона проектується щоб працювати 24/7. чи зростає фрагментація пам’яті під час довгої роботи? тобто чи може бути таке, що спочатку пам’яті вистачає, але з часом вона закінчиться із-за фрагментованості?
якщо не використовуєтсья
та free/del то і фрагментації пам’яті не буде. Фрагментація можлива тільки тоді коли ви використовуєте heap.У вас для всіх змінних та структур виділяється память на початку роботи пристрою і ці змінні розміщені статично, тобто не змінюють своїх адрес в пам’яті.
у вашому випадку ніна рахунок
вони можуть переповнювати стек. Якщо функції використовують рекурсію, то велика ймовірність що вони переповнять стек.рекурсія в Embedded не рекомендована, я б сказав заборонена.
О какой памяти речь идет? stack или heap?
саме хотів задати теж саме питання
Arduino використовує чіпи AVR чіпи компанії Atmel, тому не думаю що це
"1. можливо Ардуіно бібліотеки використовують динамічну пам’ять
2. засмічуватись можуть дані в пам’яті якщо програма працює не правильно, і пише дані в чужу область пам’яті
3. переповнення стеку (можна спробувати збільшити розмір стеку, і дивитись чи проблеми зникли)
Больше на переполнение стека похоже.
i.stack.imgur.com/waoHN.gif
Проверяется достаточно просто. Для статических переменных: Посмотрите в *.map файле где именно лежат запорченные переменные. По идее должны лежать в «старшей» области памяти (на границе с heap, если вы кучу используете).
Если память под переменные выделяются динамически — нужно смотреть(распечатать) адрес переменной в куче.
Щось пам’ятаю схоже із іншою платою, народ скаржився на те, що алокатор не занулює комірку. Пробуйте після алокації спочатку туди нуль записувати.
приклад пошуку помилки яка псує пам’ять: corrupting_error_finding
catethysis.ru/...
«Когда я писал это место, я надеялся что received_count (сбрасывающийся немного дальше) никогда не превысит не то, что 50, а даже 20.»
:-D
так. Ви створюєте проект, компілюєте його, ваш компілятор покаже скільки памяті використано скільки вільно, і це співвідношення залишиться постійним. Але це тільки для видку без динамічної пам’яті.
Так, після виходу з функції вся пам’ять яку функція використовувала — звільниться.
Якщо у вас глибока вкладеність іфів, то це треба оптимізувати. Постарайтесь оптимізувати не код, а самі умови, карти Карно вам в допомогу(або інші методи)
Частково коментар, частково загальні думки вголос: якщо офіс є і бажання зацікавити людей цією темою, чому б не дати можливість їх купити локально потенційним розробникам. Цікава іграшка за $25, але заради неї зв’язуватись з Маузером-Фарнелом і міжнародною поштою?
Знаю назву виключно через незвичайний драйвер тачпада в хромбуці.
На інженерному ярмарку кар’єри(ejf.best-lviv.org.ua) зацікавленим студентам можна отримати кіт безплатно.
є кіти і по 4$: www.cypress.com/... 049-4xxx-prototyping-kits ID=102636&source=psoc4ble
за 49$ BLE kit: www.cypress.com/...
Интересный мир!
Спасибо за описание.
Радий що Вам сподобалось.
Напишіть може HR-ам, щоб і тут розміщували вакансії
Дякую за підказку.