- ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:プロポからのパルス値解析ソースのコンパイルエラー(PICマイコン))
プロポからのパルス値解析ソースのコンパイルエラー(PICマイコン)
このQ&Aのポイント
- プロポの1Chと2Chからの出力パルスをポートA0、A1ピンより、読み込みPC画面でその値を確認するためのコードですが、コンパイルが成功せずエラー行の表示はありません。使用コンパイラーはCCS社C(PCM版)、PICは16F873Aを使用しています。どこにコンパイル上の問題が生じているのかわからず、2つのチャンネルからの信号を読み取ることができるのかも不明です。ご教示いただけると幸いです。
- プロポからのパルス値解析ソースのコンパイルエラー(PICマイコン)について
- プロポの1Chと2Chからの出力パルスをポートA0、A1ピンより、読み込みPC画面でその値を確認するためのコードですが、コンパイルが成功せずエラー行の表示はありません。使用コンパイラーはCCS社C(PCM版)、PICは16F873Aを使用しています。2つのチャンネルからの信号を読み取ることができるのかも不明です。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
エラー内容が書かれていないので想像するしかありませんが、 コンパイルエラーが出るとしたら、関数宣言と呼出部との相違とか、マクロが定義されていないとか、そういうところの可能性が高いです。あるいは関数に見えてるのが実はマクロ定義された処理で、前提となる記述がされていないとか…… #エラーが出てるのはコンパイルであって、リンクとかじゃないんですよね? ロジック的な面で見ると、input関数とかset_timer、get_timerの動作仕様がわからないので正確なところはわかりませんが、これでパルスが正しく読み取れるようには思えません。 > while (input(PIN_A0)); > while (!(input(PIN_A0))); > set_timer0(0); > while (input(PIN_A0)); > data = get_timer0(); この部分の動作が何をやっているのか説明できますか?
その他の回答 (1)
- oresama777
- ベストアンサー率16% (1/6)
回答No.2
エラーメッセージが表示されないのに、何故コンパイルエラーだとわかったのでしょうか? もしも何らかのメッセージが表示されたのならそれを示さないと回答できないと思います。 まさかちゃんとコンパイラが実行できてないとかではないでしょうね?
補足
早速 不明解な質問にも係わらず、ご回答頂きありがとうございます。CCS-Cコンパイラーは、独自の決まりがあり、一般的C言語からすると難解な部分が多々あります。それでは動作部分の解説してみます。 1.while(input(PIN_A0)); 2.while(!(input(PIN_A0))); 3.set_timer0(0); 4.while(input(PIN_A0)); 5.data = get_timer0(); 行頭の番号で解説します。 まず、パルス幅の途中からカウントしないように 1.A0ピンがhigh+5v(パルス入力)状態から パルスがlow-5vに下がる迄を繰返し調べる。 2.その後パルスがlowからhighに立ち上り変化するまで繰返し調べる。 3.2.の状態を感知すると同時に、内蔵のタイマー0カウンターを 0に初期設定する。(カウント開始) 4.次に、A0ピンのhighの状態がある時間続く。 その間、timer0カウンターが、内部でカウントしている。 その後A0ピンの状態がlowになると、その時点でカウントが終了。 5.ここで、timer0カウンターに読込んだカウント数を変数dataへ代入する。 と言う様な動作予定の説明になりますが、その後の動作説明では、dataの数値を ハイパーターミナル通信ソフトを介して、PC画面でモニター表示させ、0.5秒後に 次のピンA1も同様な流れで繰返し、data1 の数値をモニター表示させする。 その後については、コード作成してありませんが、読込んだdata,data1の数値で プロポのスティック位置を判定し、それぞれのサーボに任意の動作をさせる。 これが、最終目的です。 エラー表示についてですが、エラー行が無いので伝えられないのですが、 Build completed successfullyとならない為、オブジェクトファイルが生成されません。 以上が動作の説明で、解かりずらいかと思われますが、何かの解決の手がかりにでもなればと 再度お願い申しあげます。