以前のリビジョンの文書です


PSoC 4 Prototyping Kit で遊ぶ

Cypress CY8C4245

PSoC 4200 Prototyping Kit (CY8CKIT-049-42xx)

ピィィィソック!

ブートローダー内臓のプロジェクトにする

Prototyping Kit はパソコンのUSBへ直接差し込める基板になっており、搭載されているUSB=シリアル変換チップにより、パソコンからプログラムを書き込むことができる。

PSoC Creator

プロジェクトの作成時には Application type を Bootloadable にしておく。 (Project - Build Settings からも変更できる)

System - Bootloadable コンポーネントを貼りつける。

Configure - Dependencies にてブートローダーのファイルを指定する。

ファイルは CY8CKIT-049-42xx Example Projects.zip に含まれている。

Bootloader Host

PSoC Creator からは Tools - Bootloader Host によりプログラムを書き込む。

基板上のタクトスイッチを押しながら(P0_7 を Low にする)電源ONまたはリセットするとブートローダーが起動し、P1.6 へ接続されたLEDが点滅する。 P4_0, P4_1 は自動的に UART となり待機状態になる。

この状態で書き込みボタンを押すと、プログラムが書き込まれる。

LEDチカチカ

マイコンの Hello World、Lチカしてみよう。

Prototyping Kit 基板上の LED は P1.6 、タクトスイッチは P0.7 につながっている。

PSoC Creator

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);
    }
}

Segment LCD Direct Drive を使う

7セグメント液晶パネルを PSoC内臓のLCDコントローラーで表示する。

生の液晶パネルを直接制御できるので、LCDモジュールが不要になる。

PSoC Creator

Display - Segment LCD コンポーネントを貼りつける。

クロックへは 1MHz を加える。

使用した液晶のコモンは1つ。

セグメントは “8”表示が3セットと、”1”表示が1セット、”.”が3セットで、合計25使うことにする。

3・1/2桁の液晶パネルの都合上、一番頭の桁は1しか表示できないので、Helperでは3桁分マッピングする。

ピンを割り当てる。

基板イメージ

CPUと液晶をつなぐだけ。

プログラム

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)

メモ

  • ペリフェラルはレジスタをいじって初期化したい派としては、PSoC Creator の吐くコードをどれくらい信用してよいやら。。。
  • 各コンポーネントの使い方は Conficure 画面にある Datasheet ボタンをクリックするとPDFが表示される。
文書の先頭へ
psoc.1413360484.txt.gz · 最終更新: 2014/10/15 17:08 by sugakoubou