2013年9月6日金曜日

シリアル通信

PICでプログラムしていて、変数の値を確認したくなることがありますが、ディスプレイとかついていないので、なかなか思うように行かず、赤外線モジュールのプログラミングの時にはかなり苦労しました。

が、ちょうど、中華通販で間違って送られてきたものが、5Vの信号をRS-232Cレベルに変換する基板だったこともあり、PICマイコンでシリアル信号を送信するプログラムを作ってみました。

まだ、PICからの送信しかできてませんが、9600bpsでちゃんと送信できるようになりました。ふー。

しかし・・・1バイトの送信に1msecくらい時間がかかってしまって、いろいろな処理をしている中でPCに数値を送信するのは基本的にむりかなー。デバッグの一つの手段としては使えると思いますですけど。

やはり、シリアル通信の回路が入ったマイコンで、レジスタに送信したいデータをセットして、送信コマンド叩くと、あとは自動的に送信してくれる・・・というマイコンじゃないと、通常使用には耐えられませんですね・・・。

ま、おもしろいから、いいかぁ。


---追記---
PCで送信したデータをPICで折り返すプログラムを作ってみた。

とりあえず19200pbsで折り返せるようになった。ヤター!!

ただ、データ送信にやはり結構なサイクルを必要としちゃう。

ビットとビットの間に無駄に待つ時間があるけど、この時間に割り込みとかで何かを処理しようとしたら、多分、ビットタイミングがずれて送受信がうまく行かなくなっちゃうんじゃないかなー。

とは言え、例えば、光送信モジュールなんかだと、PPM信号を数値に変換→光で送信したあとは、100msec程度waitを入れているので、この時間にPCに数値を送信するなんてのは余裕でできる。1文字送るのに10bit。19200bpsなら約500usecで送信できる。

とりあえず、これで秋の自由研究の第一歩が踏み出せたかな(^^ゞ



0 件のコメント:

コメントを投稿