So-net無料ブログ作成
検索選択

シリアル・コマンド(一部)の受信まで動いた [ステッピング・モータ・コントローラ]

(2012.10.18)
ステッピング・モーター・コントローラの接続試験用にテスト冶具を作りました。
2012_1018.pngテスト冶具
手始めに、SW入力機能をテストします。
(1)SW1==ONのとき LED オン
(2)SW2==ONのときLED オフ
(3)両方OFFなら1秒間隔で点滅
こんなプログラムをコマンド・コントローラとモーター・コントローラのメイン・ループに組み込み、RESET==>RUNで起動して、LEDが1秒間隔で点滅、消灯時にSW1を押すとLEDオン、点灯時にSW2を押すとLEDオフすることを確認しました。

ここまでは順調でしたが、シリアル・コマンドの送受信テストで躓きました。最初のトラブルはシリアル・クロックで、コマンド・コントローラが出力しません。前回行った『フォト・アイソレータを介した双方向の信号線接続の確認』でTMR2をOFFしたことを、すっかり忘れていたのです。PICkit3をコマンド・コントローラにつなぎ替え、デバッグ・モードでプログラムの動作を追いかけ、ようやく以下のコードを見つけました。
// for DEBUG
   T2CONbits.TMR2ON = 0;           // stop timer2

これをコメント・アウトして、モーター・コントローラ側で、シリアル・クロック割り込みをテストしました。シリアル・クロック(2500Hz)の立ち上がりと立下りのそれぞれで割り込みフラグが立つので、割り込みハンドラの先頭に5000カウントでLEDを点滅するコードを組み込むと、1秒間隔で点滅しました。(パチパチパチ~)

立ち上がり割り込みのところでは2500カウントでLEDを点滅させ、さらに立ち下がり割り込みのところでも同様にして、それぞれ1秒間隔でLEDが点滅することを確認しました。(再びパチパチパチ~)

ここまで動いたので”今度こそ”と意気込みましたが、スタート・ビット検出処理に組み込んだ”LED=1"というコードが実行されません。LEDを点滅させるコードをあちこちに置いて、ジリジリと動作を追っていきます。そしてついに・・・


#define SERIAL_IN PORTAbits.RA5

#define SERIAL_IN PORTAbits.RA4

ピン番の間違いを見つけ、STEPコマンドでLEDオン、STOPコマンドでLEDオフする所まで確認できました。

ヤレヤレ

にほんブログ村 IT技術ブログへ
に

ほんブログ村 ネットブログ コミュニティサイトへ
にほんブログ村 IT技術ブログ オープンソースへ


nice!(0)  コメント(2)  トラックバック(0) 

nice! 0

コメント 2

nobcha

こんばんは。鋭い追い込み、良い仕上がり具合ですね。
書き込み内の「パチパチ」数からしても上り調子のように思います。

ところで、実はワタシもLEDを100mSで5回点滅とか、200mS3回とか言うのをあちこち入れまくってデバッグしているのですが、broadbeansさんも
>LEDを点滅させるコードをあちこちに置いて、ジリジリと動作を追っていきます。
ということなので、なるほどと思った次第です。

by nobcha (2012-10-18 18:25) 

broadbeans

こんにちは、nobchaさん!
お褒めの言葉、有難うございます。『ほぼ動く』と判っているところを敢えて確認することで、萎えがちな開発マインドを鼓舞しています。¥(^_^)

”LEDを100mSで5回点滅”
う~ん、そうか!そういう技がありましたか。これは良いことを伺いました。私のは、プログラム・パスにLEDオンとLEDオフを順に挿入して走らせるという、単純な方法でしたが何とか目的を果たすことが出来ました。

コマンドの受信確認に早速利用させて頂きます。余裕があれば”モールス符号化する”なんていうのも良いかも・・・




by broadbeans (2012-10-19 10:50) 

コメントを書く

お名前:
URL:
コメント:
画像認証:
下の画像に表示されている文字を入力してください。

※ブログオーナーが承認したコメントのみ表示されます。

トラックバック 0

この記事のトラックバックURL:
※ブログオーナーが承認したトラックバックのみ表示されます。

この広告は前回の更新から一定期間経過したブログに表示されています。更新すると自動で解除されます。