posted by rerofumi
2007/3/13 火曜日 1:01:27
PSoC と PC を繋ぐシリアル通信部分の検証を行う。
今回 LCD 表示ユニットとか付いていないから、デバッグの要となるのは PC とのやりとりに使うシリアル通信になるのです。PC から動作チェック用のコマンドを送ったり、動作状況を返したり。
なので、シリアル通信部分を真っ先に動作確認してここを手がかりに進めていくといった作戦。
シリアルポートとしては前回書いたように、USBシリアルコンバータを使用。
私がこれを好んで使うのは、MAX232系の余計なレベルコンバータを必要とせずに、5V I/O でマイコンに直接繋げるから。
それと、バスパワーでマイコンを駆動できるのもお手軽でよいよい。
PSoC でシリアル通信を行うには DigitalCOMM の UART モジュールを使う。
PSoC からの送信だけで良いなら TX モジュール、受信だけで良いなら RX モジュール。UART は TX/RX の両方を備えているのでデジタルブロックを 2つ使う。
今回は P1(6),P1(7) をシリアル通信として使うので、配線をその様に設定しつつモジュールを配置。
与えるクロックでボーレートが決まるのだけれども、19200bps に設定したい場合は VC=1, VC2=6, VC3in=VC2, VC3=26 と分周していった VC3 を入れると良い。
それ以外は、こっから適当に増減すると簡単。
まあ、一度は計算機弾いて自分で数字出してみると良いかも。
簡単なループバックコードを書いてチェック。
mov a, UART_PARITY_NONE
lcall UART_1_Start
.read_serial:
lcall UART_1_cReadChar
cmp a, 0x00
jz .read_serial
lcall UART_1_PutChar
jmp .read_serial
PC 上のシリアルコンソールからキー入力をすると、そのキーと同じ文字が表示されれば動作しているということで確認終了。
PSoC の UART ライブラリには上位ルーチンとしてコマンドバッファが存在している。これは割り込みを使って PC からの入力をバッファリングしていきターミネータ(通常は改行)が来たらコマンド受付とするコンビニエンスルーチン。
必要ないときは disable にしておくと ROM 節約になるのです。
今回はこのコマンドバッファを使って PC からの要求を待ち受けるのが良さそう。
取り敢えず使い方だけ確認しておく。
PC から 0〜3 を入力するとそれに応じて LED が光ったり消えたりするサンプルコード。(アセンブラ)
main.asm
これで、PSoC とやりとりができるようになったので色々とチェックが進むというものです。
—–
Leave a Reply