Пример вашего первого проекта на CY8C27443

(чтобы быстро получить первый результат и уверенность в своих силах)

Заставим микросхему издавать непрерывную трель (чередование двух тонов) с синхронным миганием светодиода. Функционирование осуществим исключительно конфигурированием аппаратной части микросхемы (собственно это и представляет основной интерес ее использования). Процессорное ядро в этом случае не задействуется.

Пьезик для издавания звуков подключаем к ножкам 25, 26 микросхемы (P0[2], P0[4]), а светодиод – к 12 ноге (P1[3]) через токоограничительный резистор сопротивлением около 0,5 – 2 килоом. Если мы используем плату Invention Board, то все это монтируем на отдельной панельке. У нас должна получиться такая схема:

Sch.gif

Внутренняя структура DD1 создается в среде разработки PSoC Designer, о чем рассказывается далее. Мы организуем на кристалле два генератора звуковой частоты, которые будут включаться поочередно по сигналу от третьего генератора. В качестве первых используем цифровые Модули Пользователя Counter8 (8-разрядные счетчики), в качестве последнего – модуль Counter16 (16-разрядный счетчик), которые просто поделят внутреннюю тактовую частоту 32 кГц до приемлемых значений. Выбор этих модулей (как и выбор внутренней структуры) не является единственно возможным решением для данной задачи. Например, в качестве делителей могут работать модули PWM8 и Timer8. Для получения большей стабильности можно было бы использовать внутренний источник 24 МГц, но тогда потребовались бы модули большей разрядности, либо дополнительный счетчик-предделитель. Можно было бы не разрешать работу счетчиков, а коммутировать их выходные сигналы с помощью внутренней логики и т.д. Мой выбор обусловлен желанием иметь в будущем два одновременно работающих звуковых генератора на единую нагрузку, не используя при этом дополнительный смеситель.

1. Запустим PSoC Designer и создадим новый проект с использованием ассемблера и чипа CY8C27443-24xxx.
Многие параметры проекта выставятся по умолчанию. Далее перейдем в "Device Editor" (кнопка на панели инструментов) и выберем режим "Interconnect View (кнопка ) – появится окно с мнемосхемой внутренней структуры кристалла. Пока здесь еще пусто.

2. Занесем в проект и расположим на кристалле один 16-разрядный и два 8-разрядных счетчика. Первый будет генератором для мигания светодиода, два других – генераторами тонов. Чтобы всё это осуществить, есть несколько способов. Например, в раскрывающемся списке User Module Types выберем тип "Counters", а затем в другом раскрывающемся списке User Modules, выберем тип счетчика "Counter16". Кнопкой "+" ("Select") выбранные модули заносятся в проект (позже можно будет задать их индивидуальные параметры). Нажатием кнопки "Place User Module" (или контекстной командой Place) выбранный модуль установится в место, отмеченное прямоугольником-курсором в матрице мест. Занесение модулей постепенно "отжирает" ресурсы микросхемы.

3. Далее выполним внутренние межсоединения. Достаточно навести курсор на активный компонент мнемосхемы, щелкнуть – и в появившемся списке или картинке можно будет выбрать позволенный вариант. У нас должна получиться такая схема:

Создавайте её так.
1. Тактовые входы Clock у всех счетчиков соедините с источником тактовой частоты "CPU_32KHz".
2. Выход CompareOut 16-разрядного счетчика соедините с горизонтальной шиной Row_0_Output_3. Эта шина станет разрешающей для других 8-разрядных счетчиков (соедините с ней их входы Enable). Также сигнал с этой шины будет выводиться вовне и включать светодиод.
3. Чтобы вывести этот сигнал, воспользуемся вертикальной шиной GlobalOutOdd_3. Соединим с ней шину Row_0_Output_3, а с другой стороны – ножку Port_1_3.
4. Аналогично выведем на ножки микросхемы выходы 8-разрядных счетчиков. Делаем это цепочками Row_0_Output_0 –> GlobalOutEven_4 –> Port_0_4 и Row_0_Output_2 –> GlobalOutEven_2 –> Port_0_2

4. Проверим на всякий случай, какие драйверы выходов установлены – для ножек P0[2], P0[4], P1[3] должен быть режим Strong. Также проверяем, чтобы тактовая частота процессорного ядра CPU_Clock была установлена 3MHz, и был выбран внутренний ("Internal") осциллятор 32 кГц (окно "Global Resources").

5. Осталось задать параметры счетчиков. Делается это в окне "User Module Parameters". Нас интересуют только следующие параметры:
Period, CompareValue, CompareType и InvertEnable (период счетчика, значение компаратора, при котором вых. сигнал устанавливается в 1, условие срабатывания компаратора, инверсность сигнала разрешения). Попутно замечу, что счетчики в PSoC обратноотсчитывающие (после перехода через ноль в счетный регистр снова записывается значение Period).

Для 16-разрядного счетчика задайте 4000, 2000, "Less Than", "Normal",
для первого 8-разрядного – 10, 5, "Less Than", "Normal",
для второго 8-разрядного – 12, 6, "Less Than", "Invert".

Это в принципе – все, исключая самую малость: счетчики при старте микросхемы останутся незапущенными. А запускаются они программно.

6. Для этого надо написать короткий код, для чего перейдите в режим "ApplicationEditor" (кнопка ), в дереве файлов проекта найдите модуль main.asm и двойным щелчком вызовите текст этого модуля. Между меткой main: и командой ret впишите:

; Insert your main assembly code here
call Counter16_1_Start
call Counter8_1_Start
call Counter8_2_Start

где Counter16_1, Counter8_1, Counter8_2 – имена наших счетчиков (их система дала по умолчанию, но мы всегда можем их поменять на свои), а Counter16_1_Start и др. – имена стандартных процедур.

7. Вот теперь точно все, даем команду Build, ждем "отсутствия ошибок" и ищем в поддиректории нашего проекта ..\output\ образовавшиеся файлы .hex и .rom.

8. Запускаем программатор и записывем прошивку в память микросхемы.
Если мы макетировали устройство с использованием платы Invention Board, то проверяем установку джампера на этой плате (должен находиться в ближнем к краю положении – в этом случае устройство будет запитывается от USB-порта компьютера). Подключив эту плату к компьютеру, запускаем PSoC Invention Board Programmer (не забудьте установить его с CD!). Галка "Connect" должна быть установлена по умолчанию, а "External" – снята, что означает готовность внутренней микросхемы PSoC к программированию. После этого наблюдаем сообщение "Connected to CY8C27443 Revision 12".

Далее выбираем (выбирать надо всегда, если проект заново перекомпилируется!) файл .hex либо .rom (последний зашиваться будет быстрее), жмем на кнопку "Program", и через несколько секунд прошивка – в микросхеме.

9. Подаем питание на устройство.
В случае с Invention Board сбрасываем галку "Connect" – микросхема с радостным пиликаньем стартует!

Успехов!

PS. Еще не надоели однообразные звуки?
Вы хотите песен – их есть у меня!
Здесь продолжение освоения чипа: теперь задействуем микропроцессорное ядро для управления генераторами и получим полифоническую мелодию.


antiradio.narod.ru/psoc
Дата создания документа: 06.01.2004. Последнее обновление: 15.04.2008.

Сайт создан в системе uCoz