マイコンの基本ということで、PSoC FirstTouch KitでLEDチカチカを作ってみます。せっかくなのでPSoC Expressを使って0行プログラミングをしてみます。
PSoC Expressを使ったプログラミングの手順はおおまかに以下の4ステップです。
1. プロジェクトの作成
2. プログラムの組み立て
3. コンパイル (チップの選択とピン配置あり)
4. PSoCマイコンへの書き込み
普通の開発ツールと違うのは、3.でコンパイルするときにチップの選択とピン配置を行うことです。2.のプログラムの組み立てはチップに依存しない形でやるので、後でチップを選択します。その際、入力や出力をどのピンに配置するかを決めてやります。チップ選択やピン配置はプロジェクトに覚えているので、最初に一回やってやれば、その後変更がなければ二回目以降は何もする必要はありません。(とは言いつつプロジェクトを作る度にやらないといけないのは少し面倒です)
それでは、上の手順に従ってLEDチカチカを作ってみます。
1. プロジェクトの作成
PSoC Expressを起動した直後の画面です
FileメニューからNew Projectを選んでやると次のダイアログが出ます
上のエディットボックスにプロジェクト名を入力してOKボタンを押せばプロジェクト作成は完了です。プロジェクト名はflashled1にしました
プロジェクトを作るフォルダーを変えたいときはBrowseボタンを押します。
2. プログラムの組み立て
PSoC ExpressのプログラミングはGUIで部品を並べて、部品のプロパティを設定することで行います。今回はLEDしか使いません。
プロジェクト作成後の画面です。中央のペインには何もないのでプログラムはない状態です。
左側の部品一覧(Output Devices)で、CY3270 PSoC FirstTouch Kitのツリーを開いて、LED - On/Off/Blinkをダブルクリックします。もしくは右クリックメニューからAdd to Designを選びます。もしくは中央のペインにドラッグ&ドロップします。
するとプロパティの設定画面が出ます。ここで設定しなくても後で設定できますが、とりあえず設定します。
設定箇所は2箇所です。この部品の名前(Name)と初期状態(Initial Value)です。初期値はデフォルトでOFFになっていますが、OFF, ON, BLINKの3種類をメニューで選べます。OFFのところをクリックするとメニューが出ます。今回はLEDチカチカなのでBLINK(点滅)を選びます。
書き換えた様子です。
Blink Rateのところで点滅する周波数を選べます。デフォルトのままだと1Hzです。Current ModeではLEDの接続形態としてSourcing(LEDは電流制限抵抗を介してGNDに接続)、もしくはSinking(LEDは電流制限抵抗を介してVccに接続)の2種類を選択できます。PSoC FirstTouch KitのLEDはSourcingなので、そのままにしておきます。
OKを押せば部品配置完了です。
中央のペインにLEDという部品があるのが分かります。
(部品を選択すると右上にプロパティが表示されるので、ここでプロパティを変更できます。また、右下には部品のデータシートが表示されます)
今回は以上でプログラミング完了です。
ちなみに部品はドラッグ&ドロップして好きな配置にできます。中央のペインはctrl + クリックで拡大、shift + ctrl + クリックで縮小もできます。スクロールは alt + クリックです。
3. コンパイル
BuildメニューからGenerate/Buildを選んでやればコンパイルが始まります(F6でもいいです)
最初に出てくるのはチップの選択画面です。
デフォルトでは一番上にあるチップが選択されています。
PSoC FirstTouch Kitに載っているチップの型番はCY8C21434です。
ちょっと分かりづらいのですが、CY8C21030のツリーを開くとCY8C21434がいるので選択します。
CY8C21434を選択した画面です
Nextボタンを押すとピン配置のダイアログに変わります。
デフォルトでは勝手に配置されています。
PSoC FirstTouch Kitでは、青LEDが14pin、赤が10pin、緑が15pinに接続されています。
LEDが13pinになっているので、14pinにつなぎ直します。
つなぎ直しの方法は13pinのところの青い四角をドラッグして、14pinの四角にドラッグします(マウスボタンを離す)。
ドラッグした段階でピン配置できないところ(GND等)は白い四角に、ピン配置できるところは水色の四角になります。
ピン配置されていない状態に戻すにはドラッグしてから何もないところにドラッグします。
14pinにLEDをつないだ画面です
Nextを押してしばらく待つとコンパイル終了です。
flashled1.hexという実行ファイルができます。ファイル名はプロジェクト名.hexになるようです。
4. PSoCマイコンへの書き込み
いよいよ最終段階です。メニューのProgramからPSoC Programmerを選びます。
そうすると、PSoC Programmerが立ち上がってきます。
左上のPortでFirstTouchを選んでやります。他のDevice FamilyやDeviceはPSoC Expressで設定したチップが引き継がれます。hexファイルだけ入手して書き込むときとかはDevice FamilyやDeviceに適切なものを選択してやる必要があります。
下のActionとResultのペインは下から上に情報が進んでいきます。一番上が最新の情報です。慣れないと結構見づらいです。
PSoC FirstTouch Kitが正常に接続されていればSuccessful port connection for...というメッセージが出ます。出ないときは、例えば書き込み器のファームウェアが古いバージョンだったりします。その場合はPSoC Programmerの最新版をダウンロードしてインストールしなおす必要があります。ちなみにファームウェアのアップデートはPSoc ProgrammerのUtilitiesメニューのFirmware upgradeで行います。
いよいよ書き込みです。Programというボタンを押すと書き込みが開始します。
最後に(一番上に)、Programming Succeededと出れば書き込み完了です。PSoC FirstTouch Kitの場合は、即座にプログラムが開始されます。他の書き込み器の場合だとToggle Device Powerボタンを押してやらないといけないかもしれません。
まとめ
とりあえず設定するだけで、LEDチカチカはできました。
もっと高度なことをするときは、各部品のTransfer functionを決めてやる必要があります。Transfer functionは例えばボタンが押されていたらLEDが点くみたいな、部品間の依存関係を決めてやります。LEDチカチカもインターバルタイマーを使って作る方法もあります。
今回は出力デバイス(Output Devices)というカテゴリーの部品しか使いませんでしたが、他に入力デバイス(Input Devices)、変数(valuators)、インタフェース(interfaces)といったカテゴリーがあります。
GUIは目の前で実際に動かしているところを見ると分かりやすいのですが、言葉で説明しようとするとやたら面倒です。
PSoC Expressを使ったプログラミングの手順はおおまかに以下の4ステップです。
1. プロジェクトの作成
2. プログラムの組み立て
3. コンパイル (チップの選択とピン配置あり)
4. PSoCマイコンへの書き込み
普通の開発ツールと違うのは、3.でコンパイルするときにチップの選択とピン配置を行うことです。2.のプログラムの組み立てはチップに依存しない形でやるので、後でチップを選択します。その際、入力や出力をどのピンに配置するかを決めてやります。チップ選択やピン配置はプロジェクトに覚えているので、最初に一回やってやれば、その後変更がなければ二回目以降は何もする必要はありません。(とは言いつつプロジェクトを作る度にやらないといけないのは少し面倒です)
それでは、上の手順に従ってLEDチカチカを作ってみます。
1. プロジェクトの作成
PSoC Expressを起動した直後の画面です
FileメニューからNew Projectを選んでやると次のダイアログが出ます
上のエディットボックスにプロジェクト名を入力してOKボタンを押せばプロジェクト作成は完了です。プロジェクト名はflashled1にしました
プロジェクトを作るフォルダーを変えたいときはBrowseボタンを押します。
2. プログラムの組み立て
PSoC ExpressのプログラミングはGUIで部品を並べて、部品のプロパティを設定することで行います。今回はLEDしか使いません。
プロジェクト作成後の画面です。中央のペインには何もないのでプログラムはない状態です。
左側の部品一覧(Output Devices)で、CY3270 PSoC FirstTouch Kitのツリーを開いて、LED - On/Off/Blinkをダブルクリックします。もしくは右クリックメニューからAdd to Designを選びます。もしくは中央のペインにドラッグ&ドロップします。
するとプロパティの設定画面が出ます。ここで設定しなくても後で設定できますが、とりあえず設定します。
設定箇所は2箇所です。この部品の名前(Name)と初期状態(Initial Value)です。初期値はデフォルトでOFFになっていますが、OFF, ON, BLINKの3種類をメニューで選べます。OFFのところをクリックするとメニューが出ます。今回はLEDチカチカなのでBLINK(点滅)を選びます。
書き換えた様子です。
Blink Rateのところで点滅する周波数を選べます。デフォルトのままだと1Hzです。Current ModeではLEDの接続形態としてSourcing(LEDは電流制限抵抗を介してGNDに接続)、もしくはSinking(LEDは電流制限抵抗を介してVccに接続)の2種類を選択できます。PSoC FirstTouch KitのLEDはSourcingなので、そのままにしておきます。
OKを押せば部品配置完了です。
中央のペインにLEDという部品があるのが分かります。
(部品を選択すると右上にプロパティが表示されるので、ここでプロパティを変更できます。また、右下には部品のデータシートが表示されます)
今回は以上でプログラミング完了です。
ちなみに部品はドラッグ&ドロップして好きな配置にできます。中央のペインはctrl + クリックで拡大、shift + ctrl + クリックで縮小もできます。スクロールは alt + クリックです。
3. コンパイル
BuildメニューからGenerate/Buildを選んでやればコンパイルが始まります(F6でもいいです)
最初に出てくるのはチップの選択画面です。
デフォルトでは一番上にあるチップが選択されています。
PSoC FirstTouch Kitに載っているチップの型番はCY8C21434です。
ちょっと分かりづらいのですが、CY8C21030のツリーを開くとCY8C21434がいるので選択します。
CY8C21434を選択した画面です
Nextボタンを押すとピン配置のダイアログに変わります。
デフォルトでは勝手に配置されています。
PSoC FirstTouch Kitでは、青LEDが14pin、赤が10pin、緑が15pinに接続されています。
LEDが13pinになっているので、14pinにつなぎ直します。
つなぎ直しの方法は13pinのところの青い四角をドラッグして、14pinの四角にドラッグします(マウスボタンを離す)。
ドラッグした段階でピン配置できないところ(GND等)は白い四角に、ピン配置できるところは水色の四角になります。
ピン配置されていない状態に戻すにはドラッグしてから何もないところにドラッグします。
14pinにLEDをつないだ画面です
Nextを押してしばらく待つとコンパイル終了です。
flashled1.hexという実行ファイルができます。ファイル名はプロジェクト名.hexになるようです。
4. PSoCマイコンへの書き込み
いよいよ最終段階です。メニューのProgramからPSoC Programmerを選びます。
そうすると、PSoC Programmerが立ち上がってきます。
左上のPortでFirstTouchを選んでやります。他のDevice FamilyやDeviceはPSoC Expressで設定したチップが引き継がれます。hexファイルだけ入手して書き込むときとかはDevice FamilyやDeviceに適切なものを選択してやる必要があります。
下のActionとResultのペインは下から上に情報が進んでいきます。一番上が最新の情報です。慣れないと結構見づらいです。
PSoC FirstTouch Kitが正常に接続されていればSuccessful port connection for...というメッセージが出ます。出ないときは、例えば書き込み器のファームウェアが古いバージョンだったりします。その場合はPSoC Programmerの最新版をダウンロードしてインストールしなおす必要があります。ちなみにファームウェアのアップデートはPSoc ProgrammerのUtilitiesメニューのFirmware upgradeで行います。
いよいよ書き込みです。Programというボタンを押すと書き込みが開始します。
最後に(一番上に)、Programming Succeededと出れば書き込み完了です。PSoC FirstTouch Kitの場合は、即座にプログラムが開始されます。他の書き込み器の場合だとToggle Device Powerボタンを押してやらないといけないかもしれません。
まとめ
とりあえず設定するだけで、LEDチカチカはできました。
もっと高度なことをするときは、各部品のTransfer functionを決めてやる必要があります。Transfer functionは例えばボタンが押されていたらLEDが点くみたいな、部品間の依存関係を決めてやります。LEDチカチカもインターバルタイマーを使って作る方法もあります。
今回は出力デバイス(Output Devices)というカテゴリーの部品しか使いませんでしたが、他に入力デバイス(Input Devices)、変数(valuators)、インタフェース(interfaces)といったカテゴリーがあります。
GUIは目の前で実際に動かしているところを見ると分かりやすいのですが、言葉で説明しようとするとやたら面倒です。