2013/02/16からのアクセス回数 5160 今日も大野さんの「アナログ・マイコン!?PSoCに目覚める本」の5章に挑戦します。 配線だけでポートをつなぐ †大野さんの本は分かりやすく、デジタルブロックの紹介もPSoC Designerを使ったポートの結線方法から始まっています。 大野さんの本の図5-2の回路をブレッドボードに作成しました。 PSoCのレジスタ番号とピンの関係をすぐ忘れてしますので、以下にPSoC1*1のピン配置を以下にメモしておきます。 ブレッドボードの配線は以下の様にしました。 PSoCのデジタルブロック †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はすごいです! コメント †皆様のご意見、ご希望をお待ちしております。 Tweet |