通信を行おうとすると、当然通信相手が必要となります。
CAN通信を行うにしたがい、通信相手が更に欲しくなります。
しかし、現在のブレットボードでは限界を感じずにはおれません。
従って、新しいノードをユニバーサル基盤に作りましたYO。
基本は前回作ったノード1とほぼ同じものを移植です。
ほぼとは、リセット回路を若干いじってみました。
こんな感じの構成となりました。
左からノード2、ノード1、ノード3
これが新規のノード3
オシレータを水晶振動子にしています。
また、リセット回路を教科書通りにしました。
プログラムについては、ノード1,3は同じものをインスコ。
ただ、データを送るのみ。
今回は標準IDを指定し、指定したIDのノードがレスポンスします。
ノード2はフィルタにてIDを設定。
自分宛に来たデータを受け取り、LCDに表示。
また、データが奇数の場合はLEDを点灯するようにプログラム。
モーターは五月蝿いのと、ノイズ対策が不十分なのでやめました。
で、動作を確認すると・・・
動きません。
試行錯誤して分かったのは、リセット時間の違いのようです。
PICとMCP2515には同じ容量のコンデンサと抵抗を使用していましたが、
ばらつきによりPICが先に起動してしまいMCP2515に命令が送れていなかった模様。
コンデンサの容量をPICが大きくなるように変更しとりあえず動作しました。
しかし、まだ問題がアリアリ。
新規のノード3のリセットが働きません。
電圧がリセット電圧まで下がらず、リセットが効かない模様。
これまた試行錯誤の末、使用していた抵抗10kΩ、30kΩを、
1kΩ、30kΩに変更して解決。
つまり、MCLR側を1/10にしただけ。
教科書通りだとリセットできませんでした。
今回の教訓
・PICよりも先にCANコントローラを起動させるべし。
・リセット回路の抵抗はMCLR側を1kΩ、Vpp側を30kΩ程度にするべし。
0 件のコメント:
コメントを投稿