信大ロボ研のブログ

信州大学ロボット研究会のブログです。

PIC16F84A間で通信をする

やあ、2年のたぬでござる。
メカトロで遊ぶ会が開発した『PICを使用している入門者向け自律型ロボットキット』である梵天丸をアセンブリ言語で制御する研究は一通り終わったので、脳であるPIC16F84Aの研究の報告である。
本日のお題は「PIC16F84Aの間で通信をする」。

頭のいい人なら、「ああ、きっとI2Cの記事なんだろうな」と、タイトルを見た時点で閃くだろうが……。
はっはっは!私がI2Cなんぞ使えるわけが無いorz
今回は、独自(=手抜き)仕様のプロトコルを使っています。

軽くI2Cについて。
結論:ググればわかるはず
私も詳しくは知らない。
送信側と受信側を明確に定めることで、クロックとデータ用の2本の線だけで、たくさんのマイコンと通信できるという技術らしい。
使い方とか通信プロトコルは不明。
ていうか、どういう風にデータを通信すればいいのかわからなかったからあきらめた。

私が使用した独自(手抜き)プロトコルは……
ただディレイを使用しただけだ。
今回は、下の写真を見ればわかるとおり、「サーボを制御して、サーボに流しているPWMの波形を数値化したものをLCDに表示する」という回路である。
サーボ側をメイン、LCD側をサブで使用しているので、送信側はサーボ、受信側をLCDにすればいい。
送るデータは8bitでOK。
通信するマイコンは固定。
以上から、送信側のマイコンから1本線を出して受信側のIOポートにつなぎ、定時間ごとにHorLを制御、受信側は定時間ごとにそれを読み込んでいけば通信できる。
何という手抜き仕様。
ちなみにもう1本通信用線を用意して、Busyチェックに使用。何という無駄づかい。

LCDがうまく映っていないorz
I2Cについては、今後PIC16F8Aを使用していくにあたって必須の技術になるので、すぐに勉強したい。教科書になる本さえあればの話だが……。
つーか、素直にusart勉強すればいいじゃん。
(というか、今回使用した手抜き使用通信プロトコルがそのままuartに近い仕様だったりするのはこの記事を書いてからずいぶん後になってから気づく話である)

今後の課題は
●PID制御を学習する
アセンブリ言語でPID制御を記述する
●簡単な回路を作る
●通信技術について軽く学習する