昨日は夕方にスタバに行って、PSoCいじってきました

真ん中のLEDがPWMで0.3秒間隔ぐらいで点滅する。PWM(Pulse Width Modulation)はON/OFFの振幅幅を指定して自動的に波形を作るしくみの事で、カウントアップするタイマカウンタに対してduty値を指定してそれより大きい時は出力をHI、小さければLOWにする。

つまり波形を操作するにはduty値、カウントアップの間隔(システムクロックを分周したりして調節できる)、カウントアップの初期値、最大値、1クロックあたりのカウントアップ値、などのレジスタ(たいてい普通の変数として代入できる)を設定しなおす事で動的に波形を変える事が出来る。

CY8C29466 PWM

PastelMagicの桑野さんが書かれた「はじめてのPSoCマイコン」の第1章 PSoCチュートリアル (p.25-53)を、PSoC MiniProgを買った時に付いてきたミニ評価ボード(CY3210-MiniEval1)にCY8C29466乗っけた版としてやってみた。

(この本ではCY8C27443を使っているが、ピンコンパチで上位版なので俺は29466をメインに使っていく予定)

はじめてのPSoCマイコン—周辺アナログ&ディジタル回路を自由自在にプログラミング!!
桑野 雅彦

CQ出版 (2004/11)

売り上げランキング: 137445
おすすめ度の平均: 4.0

5 PSoCをはじめる一冊

4 $10マイコンがバージョンアップ!

3 PSoCの基本が解ります

ちなみに29466はGainerでも使われている。

■用意するもの

・プログラムを書くIDE → PSoC Designer(Cypressダウンロードページ)

・ISPライター制御プログラム → PSoC Programmer(Cypressダウンロードページ)

・PSoC C言語コンパイラ → 秋月電子通販

・PSoC MiniProg → 秋月電子通販

・CY8C29466 → 秋月電子通販



■PSoC Designer

PSoC ExpressではなくDesignerを使って、C言語で直接プログラミングします。

参照:s.h.log: PSoC Expressセミナーに行ってきた

Expressとどのように使い分けるかを探ってみたいので。

こいつにはエディタとビューが沢山あります。

PSoC Designer

右上のツールバーのボタンで切り替えます。今回は、

1.「Device Editor」の「User Module Selction View」でPWMモジュールを選択し、

2.「Device Editor」の「Interconnect View」でモジュールの動作設定と、出力先のピンを結線し、

3.「Application Editor」でプログラムを書き、

4.ライターでマイコンに書き込む

で終わりです。基本的に1~3を何度も反復してデザインを進めるらしい。

■PSoC Designer 手順1.PWMモジュールを選ぶ

「Device Editor」の「User Module Selction View」を選択

PSoC Designer

左側のツールパネルからPWM16bitを右クリックして、「Select」

PSoC Designer

すると配置されて、

PSoC DesignerPSoC Designer

DigitalBlockが2つ消費される。FFみたいでかっこいい。

8bitPWMなら1つ消費です。

■PSoC Designer 手順2.PWMモジュールをLEDに繋がっているピンに結線する

「Device Editor」のまま「Interconnect View」を選択します

モジュールの設定と、入出力ピンへの結線を行なうビュー

PSoC Designer

上にあるPWMモジュールを右クリックして、「Place」を選択

PSoC Designer

すると、真ん中の回路図みたいな所に配置できる。緑色になって2ブロック占有したら配置成功

PSoC Designer

ここから更に、モジュールの動作設定を行なう。

その前にマイコンの動作設定を行なおう。

PSoC Designer

特にPWMはクロックソースの設定次第で動きが変わるので、先にマイコンの設定をしておく。

PWM16_1モジュールの設定。

PSoC Designer

ここで「Compare Out」で出力先を「Row_0_Output_3」に指定する。

すると、PWMモジュールからRO0[3]に接続される。

PSoC Designer

そのままつながった先の一番右端の四角をクリック。

クリックしたら出てくる画面で、さらに三角形をクリックして「GlobalOutEven_3」を指定

PSoC Designer

青くなったらClose

さて、段々とPWMが外側のピンに向けて結線されてきました。

今度は外から攻めます。

ミニ評価ボードの回路を見ると、マイコン左側の7番ピンがLEDに接続されているので

CY8C29466 PWM

そいつがPort_2_3という名前だと確認。

PSoC Designer

Port_2_3をクリックして、「Select」を選択

PSoC Designer

さっきも出てきた「GlobalOutEven_3」を選択すると、PWMからピンまでが1本に繋がります

PSoC Designer

ちゃんと1本に繋がってる。

PSoC Designer

■PSoC Designer 手順3.プログラムを書く

プログラムはmain以外ほぼ自動で書かれます。

Interconnect Viewの「Generate Application」のボタンを押すと

PSoC Designer

アプリケーションを書くためのAPIが全部作られます。

「Application Editor」に移動する。

PSoC Designer

普通のIDE

PSoC Designer

モジュールを操作するためのAPIが自動生成されているので、「Library Headers」の「pwm16_1.h」を開くと

PSoC Designer

コードが見れる。ソース嫁

ソース読むのが一番楽。C言語なのでヘッダファイルにユーザが使うべき関数がわかりやすい名前で書いてある。

PWMの初期設定はDevice EditorのInterconnect Viewで済ませてあるので、そのようにレジスタも代入されている。

素直に PWM16_1_Start(); だけmain()の中に書けばok

PSoC Designer

これだけでPWMが動く。

ツールバーから「Build」して、「Program Part」すると

PSoC Designer

PSoC Programmerが起動する。

PSoC Programmer

そのまま「Program」ボタンを押して書き込む。30秒ぐらいかかる。

書き込んだら、右側の「Toggle Device Power」でUSBで5V電源だけ供給してやると動く。

LEDをPWMで点滅させる



デジカメで撮影すると点滅がよくわからないな…