Indoor airplane world
 



 以前PICマイコンで作ったパルスチェッカをPSoC(CY8C29466-24PXI)で作ってみました。

 PSoCにはLCDユーザモジュールが用意されているので、簡単に液晶表示できます。ただし取得したデータをそのまま表示すると16進表示になってしまうので、10進表示への変換が必須です。そこでのこちらのホームページの変換プログラムを参考にさせていただきました。

 パルスチェッカでは負数は扱わないので2バイト符号なし整数を符号なし10進文字列に変換するように手直ししました。扱うパルス幅は1000usから2000us程度なのでLCDで4桁表示します。



 パルス幅を正確に測定するためには、クリスタル発振器を使って外部からクロックを供給しますが、今回はプログラムの勉強なので内部クロックを使っています。

 外部クロックに切り替える場合はOscillator Control 0 register(OSC_CR0)のbit7をセットする(デフォルトではOFFになっている)。



 GPIO割り込み(FallingEdge)でCounter16のスタート・ストップを行います。最初の割り込みでカウンタをスタートし、次の割り込みでカウンタをストップします。

 スタート時のカウンタ値65535(0xffff)から1クロックごとに減算されるので、ストップ時のカウンタ値(Counter16_wReadCounter()で取得)差し引いてLCDに表示してます。



 赤外線受光素子は負論理出力なので、3チャンネル赤外線送信機から信号した立下りパルスで割り込みを発生させています。1フレームが約20msでその立下りパルスはスタート時、チャンネル1終了時、チャンネル2終了時、チャンネル3終了時と1フレームで4回発生します。



 赤外線受光素子の出力は抵抗で電源にプルアップされているので、入力ポートのDriveをHigh Z、InterruptをFallingEgdeに設定しています。

 PSoCGPIOINT.asmへの記述部分


 main.cプログラム


プロジェクトファイル一式(PULSE_CHECKER.zip) プロジェクトファイルの中にはHEXファイルも含まれているので、プログラムを書き込んでパルスチェッカの動作を確認することもできます。(PSoC MiniProg等のライタが必要)。

 ダウンロードして解凍後、PULSE_CHECKERフォルダの配下にあるPULSE_CHECKER.appをダブルクリックするとPSoC Designerが起動して自動的にすべてのファイルをロードしてくれます。プロジェクトファイルはPSoC Designer 5 + HI-TECH-C Lite(Free)で作っています。



 パルスチェッカのLCD表示。FutabaフォーマットなのでC1がエルロンチャンネル(スティック・ニュートラル)、C2がエレベータチャンネル(固定)、C3がスロットルチャンネル(スティック・ロー)。



 赤外線受光素子の出力波形(PSoCの入力波形)。



 波形を拡大してオシロスコープにカーソルを表示させ、チャンネル2(固定)の波形のスタートとストップ位置にカーソルを合わせると⊿t=1.53msと表示され、波形の上下にカーソルを合わせると⊿V 5.00Vと表示されるのが確認できます。

 LCDの表示とオシロスコープの表示にずれがあるのは、別々にテストしているため。

 今回のパルスチェッカが動作するようになるまで試行錯誤の連続でした。送信機から送られてくる1フレーム3チャンネル分のパルスを、どのように取り込んだらよいのかずいぶん悩みました。

 割り込みが発生してから次の割り込みが発生するまでの(短い場合で約1ms)時間で、割り込みルーチン内でLCDへの表示が正しく行えませんでした。

 LCDへの表示処理に時間がかかっているのが原因だと気づくまでに相当の時間を費やしてしまいました。

 割り込みルーチンではできるだけ短い処理にとどめ、LCDへの表示処理はメインルーチンで行うように変更して良い結果が得られました。

 PSoCのレッスンもここまで一気に進めてきましたが、他にもいろいろやらなければならないことがあるので、このあたりで少しテンポを緩めようと思います。

コメント ( 2 ) | Trackback ( 0 )


« デジタル・オ... PSoC マイコン... »
 
コメント
 
 
 
aSudio4の操作方法について (石原 健二)
2009-06-21 18:23:28
 
 自分で自作予定の JtagICEボードをPCのrs232c経由で接続し aStudio4 (460)を起動して
 デバックをしたいと思っています。

 もしお時間がありましたら one-step, breakpoint駆動できます assembler、C言語について詳しい
デバック方法を 教えて頂けませんでしょうか。
 
 よろしくお願いいたします。
E-mail:  nanohana_007@mail.goo.ne.jp
 
 
 
初心者なので (toko)
2009-06-21 19:14:49
石原様、タイトルの通りでとても教えられる立場ではありません。
お役に立てなくて申し訳ありません。
 
コメントを投稿する
 
名前
タイトル
URL
コメント
コメント利用規約に同意の上コメント投稿を行ってください。
数字4桁を入力し、投稿ボタンを押してください。