[PSoC1] Counter8
デジタルの入出力
ポートと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) を経由する。
GOE、GOO とも、0~7 の8本ある。
(PSoC Designerの配線画面では、右側の緑の縦線16本。)
同様に、ユーザモジュールの入力とポートとを接続する際、Global Input Even (GIE)
および Global Input Odd (GIO) を経由する。
GIE、GIO とも、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] | GOE0、GOE4、GOO0、GOO4 | P0[0]、P1[0]、P2[0]、P0[4]、P1[4]、P2[4] |
ROx[1] | GOE1、GOE5、GOO1、GOO5 | P0[1]、P1[1]、P2[1]、P0[5]、P1[5]、P2[5] |
ROx[2] | GOE2、GOE6、GOO2、GOO6 | P0[2]、P1[2]、P2[2]、P0[6]、P1[6]、P2[6] |
ROx[3] | GOE3、GOE7、GOO3、GOO7 | 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
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=24MHz、VC1=12、VC2=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のパラメータ
設定項目 | 概要 |
---|---|
Name | モジュール名。プログラム内でも使われる。 |
Clock | クロック源を選択。VC1、VC2、VC3 など |
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=High で InvertEnalbe=Normal なら正論理(比較条件成立で 1 出力)となる。 |
Counter8の配線
Count8 → RO0[0]
パラメータ設定で済み。
RO0[0] → GOE0
- RO0[0] の Digital Interconnect をクリックして、ダイアログ表示。
- GEO0とつながるバッファ(三角)をクリック。
-
メニューから GlobalOutEven_0 を選択。
- [Close]ボタン。
GOE0 → P0[0]
アナログのIO
アナログのブロック・アレイは、縦の並びで出力ポートが決まる。
今回、P0[2]からAGNDを出力するが、P0[2]は、右端のブロック・アレイとなる。
RefMuxの配置
[User Modules]ウィンドウにて、[MUXs]-[RefMux]をダブルクリック。左端のブロック・アレイ(ACB00)に配置される。
さらに、ドラッグ&ドロップして、右端(ACB03)へ移動する。
RefMuxのパラメータ
Reference Select を AGND にする。
RefMuxの配線
RefMux → 出力バス
RefMux を配置することで、自動的に出力バス(縦線)に接続される。
出力バス → ポート
出力バスの先のバッファ(三角)をクリックし、Port_0_2 を選択する。
ユーザモジュール起動コードとビルド
Generate Configuration (モジュールのAPI生成)
Generate Configuration で、上で配置したユーザモジュールをAPI化する。
これを先にしておくと、コード入力時にコードヒントが表示できる。
[Build]メニュー - [Generate Configuration Files for 'プロジェクト名' Project]
あるいは [Ctrl] + [F6]
あるいは [Generate Configuration Files for 'プロジェクト名' Project]アイコン。
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]ダイアログの 右下の電源っぽいボタン。
写真
« [PSoC1] 信号経路 | トップページ | [PSoC1] PGA »
「マイコン」カテゴリの記事
- [PSoC1] LPF2(2013.08.06)
- [PSoC1] PGA(2013.08.05)
- [PSoC1] Counter8(2013.08.01)
- [PSoC1] 信号経路(2013.07.29)