SSブログ

タッチ・マウス・プログラムの不具合原因が見つかった [タッチ・スイッチ]

(2014.01.12)
タッチ・マウス・プログラムにUSBインターフェース機能(Device-HID-Mouse相当)を組み込んだのですが、マウスの動きがギクシャクして、正しく動作していないことが判りました。

”CTMUの計測結果を0にするとマウスがくるくる回りだす”ことを手がかりに、USBインターフェース機能に影響を与えている処理を絞り込んで行き、以下の処理にたどり着きました。
  if( averageData != 0 )
  {
    ctmu_average[num] = averageData;
    ctmu_log( num );   <== ここをコメント・アウトすれば不具合は無くなる
    update_ctmu_average = FLAG_ON;
  }


CTMUの計測結果を0にするとaverageDataが0になってctmu_log関数が呼び出されなくなります。そのctmu_log関数の呼び出しをやめると、CTMUの計測結果を0にしなくても不具合は出なくなるのです。どうやら不具合の本丸を見つけたようです。

そして・・・
UINT16 ctmu_log0[MAX_LOG_COUNT+2] @0x200;
UINT16 ctmu_log1[MAX_LOG_COUNT+2] @0x268;
UINT16 ctmu_log2[MAX_LOG_COUNT+2] @0x300;
UINT16 ctmu_log3[MAX_LOG_COUNT+2] @0x368;
UINT16 ctmu_log4[MAX_LOG_COUNT+2] @0x400; <== これ!
UINT16 ctmu_log5[MAX_LOG_COUNT+2] @0x468;
UINT16 ctmu_log6[MAX_LOG_COUNT+2] @0x600;
UINT16 ctmu_log7[MAX_LOG_COUNT+2] @0x668;

”Buffer Descriptor Table”を0x400にアサインしたときにctmu_log4とctmu_log5のアドレスを移す必要が有る事を失念していたのです。

0x400にアサインした”Buffer Descriptor Table”に何回も振り回されましたが、ようやく(本当にようやく!)タッチ・マウス・プログラムにUSBインターフェース機能を組み込むことが出来ました。

ヤレヤレ

------------------------------------
XC8のリンカがwarningで教えてくれれば、こんな苦労はしなくて済むのに・・・
ブツブツ
------------------------------------

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


nice!(0)  コメント(0)  トラックバック(0) 
共通テーマ:日記・雑感

nice! 0

コメント 0

コメントを書く

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

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

トラックバック 0

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