鳥なき里のマイコン屋(53) PSoC Creator その2、回路図エントリにハマる

JosephHalfmoon

別件(別ボードでと言うべきか)でセンサなどを工作していたので、Cypress社のPSoC開発環境であるPSoc Creatorの勉強がお休みになっておりました。PSoCで工作したいセンサも出てきたので、今回は接続のための下準備を始めてみたいと思います。PSoCの「売り」であるアナログ・コンポーネントの使用に入るのですが、思わぬところでハマって一刻空費してしまいました。何のことはない、回路図の編集で「ツボにハマって」いたのです。

前回は、トラ技の付録の基板が手に入ったので、ピンヘッダ立てていわゆる「Lチカ」するところまででした。今回はLEDを光らせておしまいというわけにもいかないので、まずは、PSoC Creatorのデバッグ環境を調べました。

マイコン用のIDEでありがちな「虫」のアイコン

があることに気付いていたので、それを押せばデバッガ起動できるのかなと思いましたんです。しかし、虫のアイコンは「アクティブ」でなく、クリックできないことに気付きました。ちょっと調べてみて分かったのは、

そのままでは「ブートロダブルプロジェクト」はデバッガモードで実行できない

ということであります。トラ技付録の基板はFlashの先頭にブートローダが書き込まれていて、それにUARTで接続して、ブートローダブルな(アプリ)プロジェクトを書き込んで起動するようになっています。PSoC専用の書き込み兼デバッグインタフェースのハードなしでもボードだけで動かせるようにするためです。しかし、ブートローダからブートローダブルなアプリへのジャンプはソフトウエア制御のデバイスリセットによって状態遷移を行うようです。これは数限りないともいえるPSoC各部のハード設定を再初期化するためらしく、このときデバッガインタフェースも「リセット」されてしまうようです。実際には、デバッガを起動する方法もあるようなので後で試してみますが、とりあえず今は、printf式デバッグで良いことにいたしました。

プログラムの書き込みに使っているUART接続を実行時にデバッグ出力に使う

のは、簡単でした。UARTのモジュールを回路図に配置して(ソフトウエアで扱うだけなので、結線する必要もない)、Configureからボーレートを設定し、後は、UARTのインスタンスのStart()関数を呼んでやれば初期化は完了。UartPutString()関数を使えば文字列出力できますし、UartGetChar()関数で1文字入力も可能です。なお、デフォルトではprintfそのものは無い(多分、printfは仕様が大きくて限られたメモリを食いつぶすからだと思います)ので、sprintfの「サブセット」関数で出力文字列を作るのが定番のようです。「サブセット」というのは書式指定子の選択肢が少ないように見えるからです。とりあえず符号無整数出力に”lu”が使えたので、これを使って書き出すことにしました。

アプリの実行に入ってから、PSoCに接続している仮想COMポートに端末を接続すれれば、出力は左のような感じで読めるように設定してみました。一番左に起動からの秒数が出て、その後、これから取り上げる電流型の7ビットDAコンバータへの出力値、一番右の+は、+とーのキャラクタを仮想COMポートからボードに送って、DAの出力値を調整できるようにしたので、送信キャラクタのコールバックです。+の数だけ、DAの出力設定値が上がっているのが分かると思います。しかし、おやおや

DAの出力する端子をマルチメータで見ていても電圧でてこない!

端子には電流を電圧変換するため、10kΩ(手元にあった5%精度の抵抗つかった。実測値は9.8kΩくらい)の抵抗つけてあります。DAの設定は、2.4μA/bit にしてあるので、ぶっちゃけ、IDACの設定値100なら

2.4Vくらい

の値が見えてよい筈。ピンを間違えてないか、IDACの設定がおかしくないか、API関数の使い方がおかしくないか、さんざん調べ回って最後に分かったのは、これです。下の図はPSoC Creatorの回路図エディタの端子なのですが、デジタル用の端子には左側に小さな四角があり、アナログ用の端子には右側に小さな四角があります。

Digital用の端子を並べてクリクリと結線した後、IDAC出力のアナログ端子に接続をしたつもりだったのですが、左側の「パッド」に見える部分に結線しただけだったのです、ビルドの時に1度何かウォーニングが出たのですが、他のエラーもあり、やり直したら消えていたので気にせずオブジェクトをボードに書き込んでいたのです。結果、IDACの出力は実際にはピンに接続されていなかったです。つまり、右側の小さな四角にまで配線を接続しないとならなかったのです。以下のような感じに。

 

回路図の信号はなるべく左から右へというお作法で描いている人は、注意した方がいいかもしれません。アナログ端子は、右側の飛び出し部分が接続点なので上のように「パッド」を乗り越えたところまで線を引っ張らないと接続したことにならない。なんのことはない、接続したら問題なく電圧出力できました。

 

ハンディマルチメータで測ったら、それらしく電圧は出力されており、+キー連打で電圧が上がり、-キー連打で電圧が下がります。設定値100のおきに2.295V。抵抗の実測値とIDACの設定からの期待値は2.35Vくらいなのでざっくり誤差2%くらい。後で予定しているアプリではあまり精度の要求は高くないので十分でしょうかね。やっぱり、

ツールは慣れ

ていないとつまらないところで時間を使います。遊んでいる内には段々慣れてきますかね。

鳥なき里のマイコン屋(52) トラ技の付録でPSoC Creator その1へ戻る

鳥なき里のマイコン屋(54) PSoC Creator その3へ進む