以前のリビジョンの文書です
Prototyping Kit はパソコンのUSBへ直接差し込める基板になっており、搭載されているUSB=シリアル変換チップにより、パソコンからプログラムを書き込むことができる。
プロジェクトの作成時には Application type を Bootloadable にしておく。 (Project - Build Settings からも変更できる)
System - Bootloadable コンポーネントを貼りつける。
Configure - Dependencies にてブートローダーのファイルを指定する。
ファイルは CY8CKIT-049-42xx Example Projects.zip に含まれている。
PSoC Creator からは Tools - Bootloader Host によりプログラムを書き込む。
基板上のタクトスイッチを押しながら(P0_7 を Low にする)電源ONまたはリセットするとブートローダーが起動し、P1.6 へ接続されたLEDが点滅する。 P4_0, P4_1 は自動的に UART となり待機状態になる。
この状態で書き込みボタンを押すと、プログラムが書き込まれる。
マイコンの Hello World、Lチカしてみよう。
Prototyping Kit 基板上の LED は P1.6 、タクトスイッチは P0.7 につながっている。
Ports and Pins - Digital Output/Input Pin コンポーネントを貼り付ける。
Conficure - Pins で HW Connection のチェックは外しておく。
タクトスイッチのピンは Pull Up 設定しておく。
ピンを割り当てる。
タクトスイッチを押すと点滅が早くなるサンプル。
#include <project.h> int main() { for(;;) { LED_Write(1); CyDelay(BUTTON_Read() ? 500 : 100); LED_Write(0); CyDelay(BUTTON_Read() ? 500 : 100); } }
7セグメント液晶パネルを PSoC内臓のLCDコントローラーで表示する。
生の液晶パネルを直接制御できるので、LCDモジュールが不要になる。
Display - Segment LCD コンポーネントを貼りつける。
クロックへは 1MHz を加える。
使用した液晶のコモンは1つ。
セグメントは “8”表示が3セットと、”1”表示が1セット、”.”が3セットで、合計25使うことにする。
3・1/2桁の液晶パネルの都合上、一番頭の桁は1しか表示できないので、Helperでは3桁分マッピングする。
ピンを割り当てる。
AD値(を1/2して)液晶へ表示するサンプル。
#include <project.h> void digit (int n) { int i; i = n % 10; LCD_7Seg_Write7SegDigit_0(i, 0); i = (n / 10) % 10; LCD_7Seg_Write7SegDigit_0((i || n >= 10) ? i : 16, 1); i = (n / 100) % 10; LCD_7Seg_Write7SegDigit_0((i || n >= 100) ? i : 16, 2); i = (n / 1000) % 10; LCD_7Seg_WritePixel(0x305, (i & 1) ? LCD_7Seg_PIXEL_STATE_ON : LCD_7Seg_PIXEL_STATE_OFF); } int main() { int ad; ADC_SAR_Start(); LCD_7Seg_Start(); LCD_7Seg_ClearDisplay(); for(;;) { ADC_SAR_StartConvert(); ADC_SAR_IsEndConversion(ADC_SAR_WAIT_FOR_RESULT); ADC_SAR_StopConvert(); ad = ADC_SAR_GetResult16(0) / 2; digit(ad); CyDelay(200); } }
Helperでマッピングした桁は Write7SegDigit で簡単に表示できる。 (数値に10~15を指定するとa~f、16は非表示)
LCD_7Seg_Write7SegDigit_0(数値, 桁)
その他のセグメントは WritePixel で表示できる。 (ピクセル番号は、11~8bit目がマルチプレクス行番号、7~4bit目が行内のアドレス、2~0bit目がビット位置)
LCD_7Seg_WritePixel(ピクセル番号, LCD_7Seg_PIXEL_STATE_ON / OFF)