PSoC 1. Быстрый старт.

На блоге увидел статью PSoC 5.Введение. Создание проекта. очень понравилась, решил написать свою но о PSoC 1, самом младшем семействе микроконтроллеров Cypress. Микроконтроллеры PSoC 1 восьмибитные. Их отличие от других производителей мк есть то что переферийные модули (таймеры,UART, и другие) можно добавлять в зависимости от потребности. Можно сказать что cypress микроконтроллеры смесь FPGA і uC.

Дня начала работы нам нужно:
  1. Микроконтроллер, у меня cy8c27443
  2. Программатор Cypress ICE-Cube, Cypress MiniProg или самодельный (видел в интернете, но точных ссылок дать не могу).
  3. Среда разработки PSoC Designer, скачиваем на официальном сайте.

Хорошо если есть борд, но можно и без него, просто распаять на макетке или при большом желании сделать свой. У меня CY3210-MiniEval1, и все примеры сделаны на ней.

По старинной традиции, первая программа будет мигать светодиодом :)Чтобы не было совсем скучно, используем для мигания светодиода модуль — даже об этом позаботились:) (конечно можно мигать светодиодом классическим способом — настроили порт, и кидаем туда 0 и 1 через задержки) и поработаем с DAC.

Запускаем среду PSoC Disigner 5.3 заходим в File -> New Project:


Задаем имя проекта, папку в которой будем сохранять, выбираем микроконтроллер из списка и язык С.

Кратко опишу среду разработки:



  1. Настройка глобальных параметров, таких как тактовая частота,3 разних частоты полученных с тактовой,PLL(умножение тактовой частоты на 2), опорное напряжение для АЦП, и другие. Подробно о каждом параметре можно почитать тут.
  2. Цифровые блоки и порты I/O. В каждой цифровой блок можно вставлять модуль переферии, и подключать к выводам портов.
  3. Настройка параметров модуля.
  4. Настройка выводов I/O.
  5. Аналоговые блоки и порты I/O.
  6. Структура проекта и сгенерированные библиотечные файлы.
  7. Модули переферии, которые вставляються в цифровые или аналоговые блоки.


*Не все модули занимают цифровой или аналоговой блок. Есть ограничение — не каждый модуль можно подключить к выводу порта который нужный.

Очень интересной и удобной особенностью среды, есть то что при установке также загружены даташиты. И посмотреть как работать с каждым модулем можно очень просто. Покажу на примере. Мы будем использовать модуль LED, но как с ним работать еще не знаем:



Открываем даташит, смотрим в самом верху страницы:


Видим что модуль не использует ни цифровых ни аналоговых блоков. Внизу схема для работы с разным включением светодиода. Дальше описание всех API функций, и пример программы на ассемблере и С:



С модулем познакомились, теперь добавим его к проекту, кликаем по нему два раза и он добавляеться:


Переходим в окно просмотра и редактирования параметра модуля:



тут все просто: для удобства редактируем имя модуля, выбираем порт, вывод к которому подключен светодиод, и схему включение с ОА или ОК.

Аналогическим образом добавляем модуль DAC. Модуль установился в ячейки ASC10, ASC20, но при желании можно переместить в другие ячейки. Чтобы посмотреть до которого вывода можно подключить выход DAC — нажимаем «Shift» и кнопкой мыши нажымаем на вывод модуля «AnalogBus», линия показывает нам что в этих ячейках, мы можем подключиться только до вывода Port_0_3 (порт 0, вывод 3):


чтобы соединить выход модуля с выводом порта, удерживаем «Shift» и кликаем на выходе модуля, и на выводе:


настраиваем параметры модуля:


Когда все модули будут настроены и соединены с выводами портов(если нужно). Заходим в Build — > Generate/Build project или нажимаем иконку:


Начнеться генерирование проекта и API функций.
Как настроены выводы, или их настроить можно здесь:



Когда проект сгенерируется заходим в структуру проекта, и выбираем сгенерированный файл для работы со светодиодом:


открываем файл, видим список функций, и копируем нужные в main.c:


напишем небольшую программу для мигания светодиодом, и выводом значений на DAC:

//----------------------------------------------------------------------------
// C main line
//----------------------------------------------------------------------------

#include <m8c.h>        // part specific constants and macros
#include "PSoCAPI.h"    // PSoC API definitions for all User Modules

unsigned char DAC_Counter = 0;

void Delay(unsigned int value)
{
	unsigned int i = 0;
	for (i = 0; i < value; i++);
}

void main(void)
{
	LED_TEST_Start();  
	DAC8_1_Start(DAC8_1_HIGHPOWER);
	
	//M8C_EnableGInt ; // Uncomment this line to enable Global Interrupts
	
	// Insert your main routine code here.
	while(1)
	{
		LED_TEST_Invert();
		
		DAC8_1_WriteStall(DAC_Counter);
		
		DAC_Counter += 10; 
		if (DAC_Counter == 250) DAC_Counter = 0;
		
		Delay(50000);
	}	
}


Прошиваем проект — заходим в Program -> Program Part. Идет процесс прошивки:


Осцилограмма сигнала на выходе DAC:



А теперь можно посмотреть сколько ресурсов занимает конфигурация и код. Заходим в View -> Resource Meter:



Всем спасибо за внимание!
  • +7
  • 12 декабря 2012, 23:40
  • Nemo

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

RSS свернуть / развернуть
кат! мать же ж вашу! когда народ научится!?
+2
  • avatar
  • xar
  • 13 декабря 2012, 00:01
простите, был взволнован
+3
не понял( пробовал cut, не получилось...(
0
Цитирую:
«Тег сокращает длинные записи, скрывая их целиком или частично под ссылкой («читать дальше»). Скрытая часть не видна в блоге, но доступна в полной записи на странице топика.»
0
ой, тег вырезало))) <(cut)>
0
круглые скобки "()" убрать…
0
На блоге увидел статью PSoC 5.Введение. Создание проекта. очень понравилась, решил написать свою но о PSoC 1, самом младшем семействе микроконтроллеров Cypress. Микроконтроллеры PSoC 1 восьмибитные. Их отличие от других производителей мк есть то что переферийные модули (таймеры,UART, и другие) можно добавлять в зависимости от потребности. Можно сказать что cypress микроконтроллеры смесь FPGA і uC.
ничего не изминилось
0
  • avatar
  • Nemo
  • 13 декабря 2012, 00:26
тоесть поставил после текста выше, но как было так и осталось
0
… все в порядке
0
Спасибо парни!)
0
Так а какие ограничения по количеству таймеров, UART-ов и т д?
0
Если взять например CY8C29466 то в ней 16 цифровых 8-битных блоков. Каждый из этих блоков может работать как 8-бит таймер/счетчик/PWM/много_еще_чего. 8 из 16 блоков — коммуникационные, каждый из них может работать как SPI или UART приемник/передатчик. Для полнодуплексного UART необходимы два блока. Итого аппаратных UART-ов — макс 4шт, SPI-макс 8шт. 8-разрадных PWM — макс 16шт. Цифровые блоки могут обьеденятся и формировать блоки с бОльшей разрядностью, например на 3х блоках можно сделать 24-бит таймер, ну и т.д.
0
Написанное верно только для семейства PSoC1. Для PSoC3/5 расчет сложнее.
0
Программатор Cypress ICE-Cube, Cypress MiniProg или самодельный (видел в интернете, но точных ссылок дать не могу).
Программатор микросхем PSoC, подключаемый к LPT порту компьютера
PSoC – Как начать работать
0
… а что за компилятор?
0
т.е. чей? В PSOC Creator можно выбирать между GCC и Keil. Здесь как?
0
т.е. чей? В PSOC Creator можно выбирать между GCC и Keil. Здесь как?
Точно не знаю, но он безплатный.
0
т.е. чей? В PSOC Creator можно выбирать между GCC и Keil. Здесь как?

Нашел, PSoC Disigner 5.3 использует С компилятор ImageCraft:
0
Так, раз такая петрушка выделю ка я для PSOC отдельный блог. Очень уж специфичные камни. Следующие посты, если будут, пишите туда.
+2
Так, раз такая петрушка выделю ка я для PSOC отдельный блог. Очень уж специфичные камни. Следующие посты, если будут, пишите туда.
если будет интересно, напишу и про другие модули.
0
отлично. постараюсь тоже выложить пару полезных статеек.
0
Отличная статья. Мне понравилась! И я напишу статью на выходных постараюсь.
+1
Отличная статья. Мне понравилась! И я напишу статью на выходных постараюсь.
Спасибо.
0
Интересные камешки. Вопрос по поводу средств разработки: есть ли плагины для «взрослых» IDE вроде Eclipse? Есть ли мозможность работать на Ubuntu/Linux? Какие фичи есть у встроенного редактора (подсветка скобок, автодополнение, форматирование С-кода согласно заданному стилю и т.д.)? Или в итоге получим блокнотоподобный редактор с невозможностью перехода на что-то другое (пусть и бесплатно)?
0
  • avatar
  • do_sl
  • 13 декабря 2012, 11:11
Интересные камешки. Вопрос по поводу средств разработки: есть ли плагины для «взрослых» IDE вроде Eclipse? Есть ли мозможность работать на Ubuntu/Linux?
к сожалению работал только под Windows, и про плагины ничего не знаю( Основным отличем от других IDE есть конфигурация цифровых блоков и модулей, я думаю они работают только с родной IDE.
Какие фичи есть у встроенного редактора (подсветка скобок, автодополнение, форматирование С-кода согласно заданному стилю и т.д.)? Или в итоге получим блокнотоподобный редактор с невозможностью перехода на что-то другое (пусть и бесплатно)?

форматирование настраиваеться:


есть нумерация строк программы, выдно линии открытой и закрытой скобок.
0
Спасибо. Про форматирование я несколько другое имел в виду. Например, Eclipse умеет такой код:
for (i=0;i<100;i++)
    {
         a[i] = i;
    }

приводить к виду
for (i = 0; i < 100; i++)
{
    a[i] = i;
}

или
for (i = 0; i < 100; i ++){
    a[i] = i;
}

автоматически в зависимости от настроек.
Сам использую Keil на работе с SiLabs'ами. Для общего развития поковырял немного Eclipse, там много такого вроде не особо (редко) нужного, но, тем не менее, приятного. Вот и подумал, может среда построена на базе какой-нибудь взрослой IDE.
Еще раз спасибо.
0
Тут кажеться таких настроек нет.
0
А как насчет средств кодонавигации? Автодополнение, подсказка с параметрами функций, переход к объявлению/реализации символа, браузер символов?
0
с этим плохо ( честно плохо…
0
Т.е. ничего нет? Или все же хоть что-то?
0
или я дурак, или лыжи не едут. в общем нет ничего (
0
А как насчет средств кодонавигации? Автодополнение, подсказка с параметрами функций, переход к объявлению/реализации символа, браузер символов?
все API функции для каждого модуля автоматически генерируються, просто копируем в мейн и используем как захочеться. Подсказок в коде нет. Поиск по коду, автозамена есть. Есть режим проверки — Design Rule Checker, но пока точно не знаю зачем он.
0
ух ты! автозамена! прям как в блокноте!
пысы к счастью никто не запрещает вести проект (только код естественно) в кодеблоксе
0
Что-то я на сайте Keil не нашел средств для этого камушка.
0
только оригинальная иде.
0
Что-то я на сайте Keil не нашел средств для этого камушка.
я думаю и не будеть, через специфику микроконтроллеров.
0
У Keil'а есть свой компилятор для 51-го ядра, на базе которого (судя по статье PSoC 5.Введение. Создание проекта.) построено 3-е семейство. Видимо, этот самый компилятор и можно подключить к оригинальной IDE.
0
а как вы будете конфигурировать модули?
0
с помощью прекомпилятора который идет с иде.
на деле имеется встроенный компилятор от кейл (есть бесплатная лицензия, условиями не интересовался) и имеется возможность использования внешнего компилятора от кейл.
0
Порбуйте, интересно. Но мне кажеться для 8-битных PSoC 1 удобнее работать в родной среде.
0
меня как всегда не поняли. я про то, что кипрес криейтор (родная среда для псок3/5) имеет подедержку компиляторов от кейл, один из которых идет в комплекте.
0
Сейчас для PSoC 1 поддерживаются два компилятора — ImageCraft (бесплатный) и ImageCraft PRO (платный). Раньше поддерживался еще HiTech, но потом его выкупила Microchip. Для PSoC 5 есть gcc, ARM MDK и ARM RVDS. Последние два платные.
Я работаю в Cypress Ukraine Solution Center в городе Львов, правда в TrueTouch команде но раньше работал с PSoC 1.
Не сочтите за рекламу, но после знакомства с PSoC я просто забыл о существовании Microchip и ATMEL, коими занимался ранее.
Могу помочь с возникшими вопросами.
0
Я работаю в Cypress Ukraine Solution Center в городе Львов, правда в TrueTouch команде но раньше работал с PSoC 1.
Передавайте привет Николаю Пазюку :)
0
Могу помочь с возникшими вопросами.
интерисует дебаг. в железе (ICE- Cube только прошивал) и симуляторе если можно.
0
В плане отладки существует два вида PSoC1 контроллеров:
1) Для применения в отладочных платах (DVK) которые можно приобрести у Cypress. Их можно отличить по наличию нулей в последних трех цифрах маркировки (например CY8C21001). Они поддерживают отладку с помощью ICE-Cube, для этого у них есть дополнительные пины.
2) Для применения в конечных продуктах. Как правило в маркировке нулей нет (CY8C21534). Не поддерживают внутрисхемную отладку.

PSoC3/5 этой проблеме не подвержены, все отлаживаются с помощью MiniProg3.
0
Сейчас для PSoC 1 поддерживаются два компилятора — ImageCraft (бесплатный) и ImageCraft PRO (платный).
Что дает платный компилятор по сравнению с бесплатным? Платный лучше опримизируе код, или делает проверку с правилами «MISRA C»?
0
Обещают лучшую оптимизацию, как на деле — не знаю. По работе 90% кода приходилось писать на ассемблере. Честно говоря Imagecraft довольно таки плохо оптимизирует код.
0
Может, как раз таки потому, что бесплатный?
0
Только зарегистрированные и авторизованные пользователи могут оставлять комментарии.