ブレッドボードで簡単PSoC

by K.I
2006/06/16 〜

Index


概要

CY8C27143


1こちらもPSoCの電子工作、いろいろ試されているようです。

[top]

LEDを点滅させる

MiniProgは裏返しに繋いでるので注意!

プログラムだけでやってみる

CY8C27443でも


2ポート設定は、DesignerのDeviceエディタでやるのが正道なんだろうけど。。
3プロジェクトは作り直す必要があるけど。

[top]

PSoC Designer 4.3 Beta を使ってみる

インストール

Registering LPTICE driver

新しいモジュール

 → 今後は、こんな風に輪っかアイコンで動作を区別するのかしらん?元からこうだっけ?

SleepTimerのコンパイルエラー

SleepTimerを使った点滅プログラム

#include "m8c.h"  
#include "PSoCAPI.h"  
void main()  
{  
   M8C_EnableGInt ;                      // Turn on interrupts   
   Sleep_1_Start();  
   Sleep_1_SetInterval(Sleep_1_64_HZ);   // Set interrupt to a  
   Sleep_1_EnableInt();                  // 64 Hz rate
   LED_1_Start();

   // The following loop should loop no faster than 8 Hz (64/8)  
   while(1) {  
        Sleep_1_SyncWait(32, Sleep_1_WAIT_RELOAD);  
        LED_1_Invert();
   }  
}  

[top]

UARTモジュールを使う

つまり、配線はLEDの点滅回路と全く同じということだ。 →MiniProgの代わりに、Comポートへ接続するアダプタを作っておくと便利。

UARTの設定

Global Resource Value
VC1=SysClk/N 12
VC3 Source VC1
VC3 Divider 26
User Module Parameters Value 説明
Clock VC3 VC3=24MHz/12/26/8=9600bps
RX Input Row_0_Input_1 GlobalInOdd1経由でP1[1]に繋ぐので..
TX Output Row_0_Output_0 GlobalOutOdd0経由でP1[0]に繋ぐので..
TX Interrupt Mode TXComplete よく分からないので適当に
ClockSync Sync to SysClk まぁ SysClk に合わせとけば良いか。。
RxCmdBuffer Enable 当然バッファが無いとダメでしょう
RxBufferSize 16 デフォルトのまま
CommandTerminator 13 コマンドの終りはリターンコード
Param_Delimiter 32 コマンドの区切りはスペース
IgnoreCharsBelow 32 スペースは基本的に無視するってことか?
Enable_BackSpace Backspace 何となくバックスペースを有効にしてみる
RX Output None よく分からないのでNone
RX Clock Out None 同上
TX Clock Out None 同上
InvertRX Input Normal RXを反転しない

試しプログラム

コマンド パラメータ 戻り値 説明
R なし 起動メッセージ表示 リセット
O 0 or 1 なし LEDの消灯・点灯(0で点灯、1で消灯)
I なし LEDの状態 LEDの状態を調べる
X なし 反転後のLEDの状態 LEDの状態を反転

UART用のプログラム


4久々に見ると自分でもどうやったのか良く分からん書き方してるなー。反省。
5何でこうなるんだろ?これはこれでちょっと疑問なんだけど。。
6グローバル割込み許可が抜けてました。

[top]

Gセンサを使ってみる

TRIADC8

コマンド パラメータ 戻り値 説明
R なし 起動メッセージ表示 リセット
O 0 or 1 なし LEDの消灯・点灯(0で点灯、1で消灯)
I なし LEDの状態 LEDの状態を調べる
X なし 反転後のLEDの状態 LEDの状態を反転
G なし X,Y,ZのA/D出力値 再度Gコマンドを入れるまで、値を連続表示する

設定見直し

Global Resource Value
VC2=VC1/N 16
Analog Power SC On/Ref High
Ref Mux [Vdd/2]+/-[Vdd/2]
Op-Amp Bias High
A_Buff_Power High
User Module Parameters Value 説明
ADC Input1 ACB00 PGA1を通してデータ入力
ADC Input2 ACB01 PGA2を通してデータ入力
ADC Input3 ACB02 PGA3を通してデータ入力
ClockPhase1 Norm これは普通で良いはず。。
ClockPhase2 Norm 同上
ClockPhase3 Norm 同上
Clock VC2 少し遅くしてみる
DataFormat Unsigned 0〜255出力とする
User Module Parameters Value 説明
Gain 1.000 単なる入力バッファなので増幅しない
Input AnalogColumn_InputMUX_0 これは各ポートにうまく接続するだけ
Reference AGND これはVdd/2を基準にすれば良いので
AnalogBus Disable 外部にアナログ出力しないので

原因は?

Gセンサの出力

Gセンサ用のプログラム

28PINでは無理かな?

→秋月の配線材を切ったり曲げたりしないで配線するように配置を工夫した
7回路図間違ってたので直しました(090123)。
8モジュールを良く知らなくても取りあえず探せるのがPSoCの良いところ。
9多くの人は、そうだと思いますが。。。
10自分は設定ミスで約3日掛かりました。まぁ、普通はこんなに失敗しないよな。。

[top]

LCDをブレッドボードで使いたいけど。。

PSoC EvalのLCD

→Cypressのキットに付属するLCD、この配置って海外ではポピュラーなのかなぁ
LCD PSoC
1 Gnd 14 Vss
2 Vdd 28 Vdd
3 VO
4 RS 6 P2_5
5 R/W 23 P2_6
6 E 22 P2_4
7 ?
8 ?
9 ?
10 ?
11 D4 20 P2_0
12 D5 8 P2_1
13 ?
14 ?
15 D6 21 P2_2
16 D7 7 P2_3

とりあえずブレッドボードにLCDを繋ぐ

LCD PSoC
1 Vdd 28 Vdd
2 Vss 14 Vss
3 VO Vss
4 RS 6 P2_5
5 R/W 23 P2_6
6 E 22 P2_4
7 D0
8 D1
9 D2
10 D3
11 D4 20 P2_0
12 D5 8 P2_1
13 D6 21 P2_2
14 D7 7 P2_3

11ただ単に、小さいブレッドボードでLCDを使いたい!というだけの理由で作ったようなもんだけど。。
12でも、あまりスマートじゃないよな〜。もっといい方法ないかしらん?
13Port0はアナログ関係で使うし、Port1はPSoCの書込みに使うので。
14何で電源が逆配列のものがあるんだろう。他の端子は全て共通の配置なのに電源だけ逆にするのは理解出来ないな〜。

[top]

GセンサをLCDで表示

プロジェクトの作成

LCD表示プログラム

 →傾きに合わせてバーグラフが動くのが面白い

TRIADC8のクロック設定について

Global Resource Value
VC1=SysClk/N 12
VC2=VC1/N 16

15ちゃんとした結論出せなかったなぁ。。


comments powered by Disqus