2013/02/16からのアクセス回数 5662
今日も大野さんの「アナログ・マイコン!?PSoCに目覚める本」の5章に挑戦します。
大野さんの本は分かりやすく、デジタルブロックの紹介もPSoC Designerを使ったポートの結線方法から始まっています。
大野さんの本の図5-2の回路をブレッドボードに作成しました。
PSoCのレジスタ番号とピンの関係をすぐ忘れてしますので、以下にPSoC1*1のピン配置を以下にメモしておきます。
ブレッドボードの配線は以下の様にしました。
PSoCのデジタルブロックの配線は、以下の様になります。
準備ができたので、プログラムをPSoC1に書き込み、動作を確認します。
プッシュボタンを押すとP0[0]がGNDレベルになり、その値がP2[0]につながっているので、 LEDが点灯します。
プッシュボタンを離すと10KΩの抵抗でプルアップされ、LEDは消灯します。
次の例題には、インターコネクトを使った結線方法が紹介されています。
GIE0をダブルクリックするとでてくる設定でInterconnectの欄にInputToOutputを指定すると、
以下のようにGIE0とGOE0が線で結ばれます。
次に紹介されているのが、デジタルバッファを使った例です。
回路は、以下の様になります。
ブレッドボードの配線は以下の様にしました。
デジタルブロックで、ユーザモジュール(Misc Digitalカテゴリ)からDigBufをダブルクリックで配置します。
DigBuf_1のパラメータは以下の様にします。
結線は、以下の様にします。
ユーザモジュールを使っているので、Start関数を呼ぶ必要があります。
main関数を以下の様にします。
void main(void) { // M8C_EnableGInt ; // Uncomment this line to enable Global Interrupts // Insert your main routine code here. DigBuf_1_Start(); }
これぞPSoCと思わせる例題がレッスン5_4の「アナログ・ブロックからディジタル・ブロックへ入力する」でした。
以下の様な回路をブレッドボードに組み立てます。
ブレッドボードは以下の様にしました。
この例は、アナログの信号をCOMPモジュールを使ってAGNDと比較し、その結果をDigBufに出力するものです。 最初にDigBufを配置します。Output1をRIO[0]に出力し、GOE0と結線し、p2[0]に出力します。
DigBufのパラメータ設定で、input1にComparatorBus_0をセットします。
次にアナログブロックにコンパレータを配置します。 ユーザモジュールのAmplifier->COMPをダブルクリックCOMPZを選択し、一覧したのOKボタンを押します(画面が小さいとここが分かりにくい)。
COMPモジュールのinputという文字をダブルクリックすると、以下のinput選択画面がでますので、AnalogColumn_inputMUX_0を選択します。
入力ポートには、P0[1]を選択します。
これで、ブロック図の設定は完了です。
main.cに以下の2行を追加します。
void main(void) { // M8C_EnableGInt ; // Uncomment this line to enable Global Interrupts // Insert your main routine code here. DigBuf_1_Start(); COMP_1_Start(COMP_1_HIGHPOWER); }
プログラムを書き込んで実行すると、半固定抵抗を回していくとLEDが点灯することを確認できました。
こんなに簡単にアナログとデジタルを融合できるとはPSoCはすごいです!
皆様のご意見、ご希望をお待ちしております。