« [PSoC1] 信号経路 | トップページ | [PSoC1] PGA »

2013年8月 1日 (木)

[PSoC1] Counter8

アナログ・マイコン!? PSoCに目覚める本(28ピンDIP型PSoC&書き込み器&CD-ROM付き) マイコンと電子工作 No.7 (CQ出版) のメモ。

デジタルの入出力

ポートとEvenとOdd

CY8C29466-24PXI のポートは、P0、P1、P2 の3個。
さらに、これら3つのポートそれぞれに、0~7の8本のピン(端子)がある。
(このため、CY8C29466-24PXI は、24本の入出力端子を持っている。)

各端子を示す際に、Px[?] と表記する。
 Px は、ポート名で P0~P2
 [?] は、ピン番号で 0~7
たとえば、ポート0 の 4番ピンは、P0[4]

ポート(P0~P2)の数字が偶数か奇数かで、Even/Odd と呼ぶ。
 ポート0とポート2が Even  ポート1が Odd

行入出力線

ユーザモジュールから信号を出力する場合、まず、行出力線と接続する。
(PSoC Designerの配線画面では、ブロックアレイの下の青い横線4本。)
行出力線は、Row_0_Output_? ~ Row_3_Output_? が用意されている。
ここで、? は、線番号で 0 ~ 3 の4本。
行出力線は、RO0[?] ~ RO3[?] と省略される。

同様に、ユーザモジュールへ信号を入力する場合、行入力線と接続する。
(PSoC Designerの配線画面では、ブロックアレイの上の赤い横線4本。)
行入力線は、Row_0_Input_? ~ Row_3_Input_? が用意されており、 RI0[?] ~ RI3[?] と省略される。

Global Output Even/Odd、Global Input Even/Odd

ユーザモジュールの出力とポートとを接続する際、Global Output Even (GOE) および Global Output Odd (GOO) を経由する。
GOEGOO とも、0~7 の8本ある。
(PSoC Designerの配線画面では、右側の緑の縦線16本。)

同様に、ユーザモジュールの入力とポートとを接続する際、Global Input Even (GIE) および Global Input Odd (GIO) を経由する。
GIEGIO とも、0~7 の8本ある。
(PSoC Designerの配線画面では、左側の緑の縦線16本。)

Digital Interconnect

行入出力線とGlobal Input/Output Even/Oddとを接続するには、Digital Interconnect を利用する。

Digital Interconnect は、行入出力線にひも付いている。
PSoC Designerの配線画面では、行入力線の左端の四角、行出力線の右端の四角が Digital Interconnect

出力の Digital Interconnect は、内部で4つに分岐できるため、最大4本の GOE/GOO に接続できる。
どの GOE/GOO かは、行入出力線の線番号で決まる。

行出力線 接続可能なGOE/GOO ポート
ROx[0] GOE0GOE4GOO0GOO4 P0[0]P1[0]P2[0]P0[4]P1[4]P2[4]
ROx[1] GOE1GOE5GOO1GOO5 P0[1]P1[1]P2[1]P0[5]P1[5]P2[5]
ROx[2] GOE2GOE6GOO2GOO6 P0[2]P1[2]P2[2]P0[6]P1[6]P2[6]
ROx[3] GOE3GOE7GOO3GOO7 P0[3]P1[3]P2[3]P0[7]P1[7]P2[7]

ポートと Global Input/Output Even/Odd

Evenのポート(ポート0とポート2)は、GOE/GIE と接続できる。
Oddのポート(ポート1)は、GOO/GIO と接続できる。

ポートには、0~7のピン番号があるが、ピン番号と同じ番号の GOE/GIE/GOO/GIO と接続できる。

たとえば、ポート2の 7番ピン (P2[7]、PSoC Designerの配線画面では Port_2_7 ) から出力したいときには、
 ポート2 → Even
 出力 → Globa Output Even (GOE)
 7番ピン → GOE7

さらに、上表より、GOE7 と接続できるのは、行出力線の 3番 となるので、
ROx[3] を利用する必要がある。

やること

Counter8 の出力を P0[0] へ。
AGND を P0[2] へ。
両者でイヤホンから周期的な音を鳴らす。

Global Resources

Global Resources

Ref Mux は、デフォルト値 (Vdd/2)+/-BandGap を使用。([PSoC1] 信号経路)
これは、AGND = Vdd / 2 = 2.5V で、出力する範囲が ±1.3V → 1.2V~3.8V となる。
しかし、上の「やること」のとおり、AGND と Counter8出力(デジタルで 0V か 5V) を利用するので、Ref Mux の出力範囲は関係ない。(AGNDのみ使用する)
したがって、実際の出力は、AGNDをグランドとみなすので、
 AGND = 2.5V
 出力範囲 = -2.5V ~ 2.5V

SysClk=24MHzVC1=12VC2=10
したがって
VC2 は、24 x 10^6 / 12 / 10 = 2 x 10^5 = 200kHz

さらに、これを Counter8 で 100分の1 にして利用する。
(Counter8 で、1周期 100カウントとする。)

Counter8の配置

[User Modules]ウィンドウにて、[Counters]-[Counter8]をダブルクリック。
あるいは、右クリックして [Place] とか、ドラッグ&ドロップ。

Counter8のパラメータ

[Parameters]ウィンドウ

設定項目 概要
Name モジュール名。プログラム内でも使われる。
Clock クロック源を選択。VC1VC2VC3 など
ClockSync
Enable 常時動作させる場合 High
CompareOut 信号を出力する行出力線。PSoC Designerの配線画面にも接続線が描画される。
TerminalCountOut カウントアップ時(ダウンカウントなので0の次)に信号出力する行出力線。None は利用しない。
Period 1周期のカウント値。カウント開始の初期値。
CompareValue パルス幅のカウント値。比較条件(CompareType)が成立したとき 1 を出力(IvertEnable=Normlaのとき)。
CompareType 比較条件。Less Than Or Equal (現在のカウント値 <= CompareValue) と Less Than (現在のカウント値 < CompareValue)。
InterruptType 割り込みの指定。
InvertEnable 出力信号の極性。Enable=HighInvertEnalbe=Normal なら正論理(比較条件成立で 1 出力)となる。

Counter8の配線

Count8 → RO0[0]

パラメータ設定で済み。

RO0[0] → GOE0

  1. RO0[0]Digital Interconnect をクリックして、ダイアログ表示。
  2. GEO0とつながるバッファ(三角)をクリック。
  3. メニューから GlobalOutEven_0 を選択。
    GlobalOutEven_0を選択
  4. [Close]ボタン。

GOE0 → P0[0]

  1. Port_0_0 をクリック。
  2. Select から GlobalOutEven_0 を選択。
    GlobalOutEven_0を選択
  3. [OK]ボタン。

できあがり。
できあがり

アナログのIO

アナログのブロック・アレイは、縦の並びで出力ポートが決まる。
今回、P0[2]からAGNDを出力するが、P0[2]は、右端のブロック・アレイとなる。

RefMuxの配置

[User Modules]ウィンドウにて、[MUXs]-[RefMux]をダブルクリック。左端のブロック・アレイ(ACB00)に配置される。
さらに、ドラッグ&ドロップして、右端(ACB03)へ移動する。
ドラッグ&ドロップして、右端(ACB03)へ移動

RefMuxのパラメータ

RefMuxのパラメータ

Reference SelectAGND にする。

RefMuxの配線

RefMux → 出力バス

RefMux を配置することで、自動的に出力バス(縦線)に接続される。

出力バス → ポート

出力バスの先のバッファ(三角)をクリックし、Port_0_2 を選択する。
Port_0_2を選択

できあがり。
できあがり

ユーザモジュール起動コードとビルド

Generate Configuration (モジュールのAPI生成)

Generate Configuration で、上で配置したユーザモジュールをAPI化する。
これを先にしておくと、コード入力時にコードヒントが表示できる。

[Build]メニュー - [Generate Configuration Files for 'プロジェクト名' Project]
あるいは [Ctrl] + [F6]
あるいは [Generate Configuration Files for 'プロジェクト名' Project]アイコン。
Generate Configuration

main.cを開く

[Workspace Explorer]ウィンドウの [Workspace 'ワークスペース名'] - [プロジェクト名] - [プロジェクト名]フォルダ - [Source Files]フォルダ - [main.c]

main関数内にモジュール起動のコードを書く

デジタル系は、モジュール名_Start()
アナログ系は、モジュール名_Start( モジュール名_HIGHPOWER )
だそうだ。

void main(void)
{
	Counter8_1_Start();
	Refmux_1_Start( RefMux_1_HIGHPOWER );
}

ビルド

[Build]メニュー - [Build 'プロジェクト名' Project]
あるいは [F7]
あるいは [Build 'プロジェクト名' Project]アイコン。
ビルド

転送と実行

[Program Part]ダイアログ

転送や実行を行うには、[Program Part]ダイアログを利用。
ダイアログを表示するには、[Program]メニュー - [Program Part]。

転送

転送するには、[Program Part]ダイアログの 右下の矢印ボタン。
矢印ボタン

転送には、結構時間がかかる。

実行

実行するには、[Program Part]ダイアログの 右下の電源っぽいボタン。
電源っぽいボタン

写真

Cnt8photo

« [PSoC1] 信号経路 | トップページ | [PSoC1] PGA »

マイコン」カテゴリの記事

2017年11月
      1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30    

Amazonリンク

ダイビング写真(swf)

ブログ内検索

  • Google
    WWW を検索
    ブログ内を検索

リンク(いつもお世話さま)

  • ソニーストア
     iTunes Store(Japan)
    Just MyShop(ジャストシステム)
    ブックオフオンライン
無料ブログはココログ