May 31, 2006プロポとPCの接続完了プロポとPCを接続する話ですが、コンパイラのバグに遭遇するなど不運な事態に遭遇したものの、ようやく完成しました。回路図(EPS版)と使用したPIC(16F648A)に焼きこむためのバイナリ(HEXフォーマット)、PCからのコントロールライブラリ(C++ヘッダファイル)をおいておきます。
コンパイラのバグですが、結局バージョンをあげる(3.174->3.249)ことで解消されました。バグと戯れている間にPICのアセンブラが読めるようになったので、その成果がプログラムにも反映されているかと思います。 set_TIMER1(get_TIMER1());
などとすると、思ったとおりの動作が実現できず、タイムラグが発生します。これはタイマー1が16bitタイマーであるのに対し、PIC16には16bit操作命令が存在しないため、8bit命令を駆使して実行されます。そのためタイマー1のカウント値を読み込んだ直後にカウント値が設定されることはなく、タイムラグが生じているようです。
そのようなことを踏まえて、今回のソースを書きました。一部書き方が素のC言語のようになっている部分がありますが、その部分がタイミングシビアな部分です。あと、結局バグが生じていたINT_RDAはバージョンをあげることにより解消したものの、今回は使用しないことにしました。 現在快適にプロポのコントロールができています。室内飛行機の自律制御に向けて、次は機体搭載機器の検討をしてみる予定です。 ※その後、接続部分を基板化しました。 コメント
まずは解決されて良かったですね。 3.174はある意味暗黒時代のバージョンです。(T_T) しかもこのバージョンは3年以上前だと思います。 バージョンアップはどうやって行ないましたか? 私の場合はチップの不具合(仕様)に泣きました。 fenrirさんのblogは巡回していますので、疑問に思ったらblogに書いていただければ私の出来る範囲でサポートします。 Posted by: 軽石 : June 1, 2006 09:39 PM>軽石さん コメントする
|
スポンサード リンク
|