KSR用CDI 第2幕 そして途方に暮れる
バイクネタじゃなくてすみません。
案の定、KSRのCDIプログラムでハマってきます。
前回書いた通り、USBで接続できるようにして、点火時期の設定をPC経由でできるようにすることが目標です。
PC側のプログラムをどうするかというのが大きな問題なんですが、まずはPIC側から考えてます。
今回やりたいこと&やることは以下。
1.PICマイコンとPCをUSBでつなぎたい
2.PICマイコンは使い慣れたPIC24FJ64GB002
3.PIC24FにHIDデバイスとして作成したプログラムを書き込んで、HIDデバイスとして通信する
4.PIC側のプログラムはMicrochipのUSBフレームワークを使う
4.1 フレームワークの「Low Pin count USB Development Kit」というデモボード用のプログラムを参考にして改造
4.2 「Low Pin...」はPIC18F14K50が実装されているようなので、プログラムはPIC24FJ64GB002用に変更する
4.3 ブレッドボード上に組んだ回路(PICマイコン)にプログラムを書き込んでサクッと完成
具体的な作業は4のところになります。
早速、必要なファイルをピックアップしてプロジェクトに登録、エラーがなくなるまでデバックして、ブレッドボード上に組んだデバイスに書き込みました。
ここまではあっさりたどり着いたんですが、やっぱりそんなに簡単なわけないですわ。。。
文章にすると3行なんですけどねぇ。。。
USBケーブルでPCと接続してもUSBデバイスとして認識しません。
ん~ 困った。
すでに1カ月ほど停滞してます。
Microchipのサイトからダウンロードしたフレームワークのファイルは↓のディレクトリに格納しています。
C:\microchip\mla\v2017_03_06\apps\usb\device\hid_custom\firmware
ここからプロジェクトに登録したファイルは↓の感じ。
・USB関連の主要なファイルは…\firmwareの下のdemo_srcのディレクトリからコピー
・PIC24FJ64GB004ファミリ用のフォルダ(…firmware\exp16_pic24fj64gb004_pim.x)内のファイルをコピー
・io_mapping.hをPIC24FJ64GB002に合わせて修正。

コンパイルは通っているので、ファイルが足らないなんてことはないんですけどね。。。
USBの通信はおよそ以下の手順で開始されるらしいです。詳しく知りたい人はググって下さい。
ケーブル接続時に、PC(=ホスト)側がD+、D-ラインを一定時間Lowレベルとすることでリセットをかける。
リセット後、ホストからGetdevicerequestなるコマンドが送信され、このコマンドを受信したことをデバイス側であるPICが返信。
その後、PICのプログラム中に記述してある各種Discriptorの情報についてPC側と通信。
これによりPC側がUSBデバイスの種類 (HIDとかMSDとか)を認識し、所望の条件での通信が可能な状態(=Configured State)になる。
なんですが、最初のGetdevicerequestに対し、PIC側が応答していない模様。
D+,D-ラインの波形を見ているとハードウエアのリセットはかかっている。
こんな面倒なことを気にしなくてよいようにフレームワークとしてプログラムが提供されているはずなんですけどねぇ
Microchipのプログラムがおかしいとも思えないので、何かが間違っているんでしょうね。
仕事でやってるならすぐにメーカーさんにサポートをお願いするところですが、まあ、なんといってもプログラムも開発環境も全部タダな訳だし、個人がサポートしてくれと言っても相手にしてくれないだろうしね。
とにかくこの手の話は自力で何とかするしかないんですよね。。。
(*´Д`)。。。困った。。。
とりあえずこんな感じということで。
案の定、KSRのCDIプログラムでハマってきます。
前回書いた通り、USBで接続できるようにして、点火時期の設定をPC経由でできるようにすることが目標です。
PC側のプログラムをどうするかというのが大きな問題なんですが、まずはPIC側から考えてます。
今回やりたいこと&やることは以下。
1.PICマイコンとPCをUSBでつなぎたい
2.PICマイコンは使い慣れたPIC24FJ64GB002
3.PIC24FにHIDデバイスとして作成したプログラムを書き込んで、HIDデバイスとして通信する
4.PIC側のプログラムはMicrochipのUSBフレームワークを使う
4.1 フレームワークの「Low Pin count USB Development Kit」というデモボード用のプログラムを参考にして改造
4.2 「Low Pin...」はPIC18F14K50が実装されているようなので、プログラムはPIC24FJ64GB002用に変更する
4.3 ブレッドボード上に組んだ回路(PICマイコン)にプログラムを書き込んでサクッと完成
具体的な作業は4のところになります。
早速、必要なファイルをピックアップしてプロジェクトに登録、エラーがなくなるまでデバックして、ブレッドボード上に組んだデバイスに書き込みました。
ここまではあっさりたどり着いたんですが、やっぱりそんなに簡単なわけないですわ。。。
文章にすると3行なんですけどねぇ。。。
USBケーブルでPCと接続してもUSBデバイスとして認識しません。
ん~ 困った。
すでに1カ月ほど停滞してます。
Microchipのサイトからダウンロードしたフレームワークのファイルは↓のディレクトリに格納しています。
C:\microchip\mla\v2017_03_06\apps\usb\device\hid_custom\firmware
ここからプロジェクトに登録したファイルは↓の感じ。
・USB関連の主要なファイルは…\firmwareの下のdemo_srcのディレクトリからコピー
・PIC24FJ64GB004ファミリ用のフォルダ(…firmware\exp16_pic24fj64gb004_pim.x)内のファイルをコピー
・io_mapping.hをPIC24FJ64GB002に合わせて修正。

コンパイルは通っているので、ファイルが足らないなんてことはないんですけどね。。。
USBの通信はおよそ以下の手順で開始されるらしいです。詳しく知りたい人はググって下さい。
ケーブル接続時に、PC(=ホスト)側がD+、D-ラインを一定時間Lowレベルとすることでリセットをかける。
リセット後、ホストからGetdevicerequestなるコマンドが送信され、このコマンドを受信したことをデバイス側であるPICが返信。
その後、PICのプログラム中に記述してある各種Discriptorの情報についてPC側と通信。
これによりPC側がUSBデバイスの種類 (HIDとかMSDとか)を認識し、所望の条件での通信が可能な状態(=Configured State)になる。
なんですが、最初のGetdevicerequestに対し、PIC側が応答していない模様。
D+,D-ラインの波形を見ているとハードウエアのリセットはかかっている。
こんな面倒なことを気にしなくてよいようにフレームワークとしてプログラムが提供されているはずなんですけどねぇ
Microchipのプログラムがおかしいとも思えないので、何かが間違っているんでしょうね。
仕事でやってるならすぐにメーカーさんにサポートをお願いするところですが、まあ、なんといってもプログラムも開発環境も全部タダな訳だし、個人がサポートしてくれと言っても相手にしてくれないだろうしね。
とにかくこの手の話は自力で何とかするしかないんですよね。。。
(*´Д`)。。。困った。。。
とりあえずこんな感じということで。
- 関連記事
-
-
KSR CDI 課題と秘密兵器投入
-
KSR CDI 第2幕 解決しました!
-
KSR用CDI 第2幕 そして途方に暮れる
-
KSR用CDI リスタート
-
CDIのその後
-
コメント