Bluetoothドライバインストール失敗まるけ

PICでBluetoothのRFCOMMの実験がどうもうまくいかないので、
ドライバを新しくしてみたり、Win標準のBluetoothドライバを入れてみたりした時
にPlanex標準の東芝ドライバ関連がインストール出来なくなった
Toshibaのプロトコルスタックとドライバインストール時に

"Could not resolve path for shell folder 23"

と出てインストールが強制終了してしまうのでありました
検索したところレジストリをいじったりすると発生してしまうようで、、、、
そういえば動作がノロイパソコンを早くしようと一ヶ月くらい前にレジストリ書き換えまくった経緯がありました

で、対処方法の覚書
レジストリのHKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion
\Explorer\Shell Folders
内が下図の項目があるか確認 無ければ追加
a0147557_1393312.gif

再起動後ドライバをインストール、エラーは吐きませんでした
うーーん、、、とんだ寄り道をしてしまった

※上記記載内容で発生した不具合は自己責任でお願いします
[PR]

  # by komoremi | 2010-02-20 01:40 | PC関連

PICでEthernetだも

PICでEthernetのカテゴリを追加します
以前、ENC28J60とPIC24HJ128GP502とでEthernet-シリアルコンバータを作成しましたが、
作成途中に漂流してしまいUSBホストに目がいってしまった経緯があります
USBホストの実験も時間の合間をみて続けていこうと思いますが、
明日からはこちらをメインに実験を進めていこうと思っています
(USBホスト基板はこっちの気分転換時に進めます)

ひとまず、以前(一年位?前)に作成した基板の写真をアップ
a0147557_1423421.jpg


LCDの下にPIC24HJ128GP502が埋もれています
これまでにやったこと
EthernetでパソコンとTCP通信、UDP通信、HTTP通信、SORP通信(途中)
TCP-シリアル(232C)変換(途中)
PIC24HJ128GP502はDIPタイプのPICの中でも比較的プログラム容量の大きい(128Kbyte)
ものです
確かサンプルが無料だった時に手に入れた記憶が、、、
RAMは8Kなので、プログラム容量が間に合えば安価で手に入りやすいPIC24FJ64GA002に乗せかえ予定


プログラムが肥大化しすぎて忘れてまってる、、、、自分の作ったプログラムの解析から始めます
[PR]

  # by komoremi | 2010-02-19 01:54 | PIC-Ethernet

PICで USBだも26(RFCOMM不具合編)

PIC24FJ64GB002を使ったPICでUSBホスト(Bluetoothドングル)の追記

RFCOMMの64byte以上のデータ送信エラーの原因が分かった
ヒープメモリ設定が少なすぎたのが原因でした
mallocを使ってメモリ領域を確保していましたが、ここのエラーチェックが抜けていた
NULLを返すのでBUSY状態となっていたのが原因だったようです
(本当かな?しばらく様子見)

あと、RPNの送信と受信が多いとRFCOMMのPC側からの送信が遅くなる現象が発生しています
(PIC側の受信が遅い?)
それが原因でPC側のソフトでタイムアウトが発生してしまう
PC側ソフトでフリーズ状態になるのはこれが原因だ
PC側のBluetooth設定で"COM自動接続設定"のチェックを外しても症状はかわらず、、、
一度転送が遅くなる現象が現れると、DISCONNECTイベントが発生しないと改善されず、、、
まいったなー、やっぱりもう一つ作ってシリアル経由で送信するしかないのかなー
[PR]

  # by komoremi | 2010-02-18 22:53 | PIC-USBホスト

PICで USBだも25(RFCOMM編)

PIC24FJ64GB002 を利用した Bluetoothドングルの制御RFCOMM編

PC側から送り出すシリアル通信設定をPIC側の機器に反映するプログラムが完成しました
これで7,8bit長や様々なパリティのシリアル機器に対応できる

ところが!!
ここで新たな問題が発生!!
なんと送信データが64byte以上の時に送信フラグがフリーズする、、、
うーん、、多分MAXパケットサイズが64byteだからだろうか、、、
よい場合と駄目な場合があるから困る
64byte以下は転送を分割するで回避しました

あと致命的な仕様として、
PC側のソフトがシリアルポートを頻繁にオープンクローズするシステムになってる場合

Bluetooth側のポートオープンクローズに時間がかかるので、
PC側が半分フリーズした状態になってしまう
これはPC側も想定してないシステムだろうから仕方がないのだろう、、
PC-シリアル-PIC-Bluetooth   ・・・・・・  Bluetooth-PIC-相手機器
とすればここら辺の問題も回避できるのだろう
てことで、PIC24FJ64GB002を使ってもう一つ小さい基板を作る予定です
[PR]

  # by komoremi | 2010-02-18 20:07 | PIC-USBホスト

PICで USBだも24(RFCOMM設定編)

PIC24FJ64GB002を利用したUSBホスト Bluetooth(RFCOMM)の追記

RFCOMMでシリアル通信設定をした場合の設定をPIC側に反映するプログラムを作成中
RFCOMM仕様の「Remote Port Negotiation Command (RPN)」
を見ながらプログラムを作成していますが
メンドクセーーーーー!!!

PICのUARTが7bit長を標準で扱えないため、7bit長を利用する場合
パリティ計算をするルーチンを作らなければならない
8bit長のODD EVEN NONE
7bit長のODD EVEN NONE
2400bps~115200bpsを利用できるようにプログラミングする予定

現在RPNデータ受信後の場合分けで奮闘中
ここで新たなバグを発見
RPN設定を新たに送信した後、PC側から送信を行う際データ転送が異常に遅くなる現象
多分RPNの返信方法が間違っていると思います

全てうまくいけば、PC側からはBluetoothを意識しないで232C通信する事が可能になるはず
従来の機器とPCとの通信をプログラムそのままで無線化ができるなんて夢のよう?
(COMポート設定は変える必要はあります)
[PR]

  # by komoremi | 2010-02-16 01:06 | PIC-USBホスト

PICで USBだも23(RFCOMM送信編)

PICでUSBホスト Bluetooth(RFCOMM)追記

a0147557_23571661.jpg


a0147557_030467.gif


FCSのデータを付け忘れ、フリーズする状態がありましたが、
FCSデータを付けたら、RFCOMMの送信はすんなり?うまく出来ました


127byte以上のデータは扱えない、、、、(RFCOMM仕様?)
ま、よしとしよう

次はPC側のデータ長やフロー制御の通信設定をPIC側に反映するように
したいと思います
RFCOMM仕様書の旅に出発します
[PR]

  # by komoremi | 2010-02-12 23:58 | PIC-USBホスト

PICで USBだも22(バグ修正編2)

PICでUSBホスト Bluetoothドングルの追記

今日は送信プログラムを作ろうと思っていましたが、RFCOMMの受信抜けが頻発する症状が出たので
RFCOMM受信抜けのデバックを行いました

RFCOMM受信抜けが発生したりしなかったり
現象としては、
1byte~30byte付近の受信は正常
30byte~50byte付近の受信は抜ける
50byte~ の受信は正常
当初、USBのバルク転送バッファの容量が少ないために起こる現象かと思い
Microchip社のUSBプロトコルを眺めていたのですが、50byte以上で発生しない事を確認
したため、違う事が原因だと考え、作成したプログラムをもう一度見直しました

受信抜けの原因がACL受信が二重で入ってくる為に起きていた事を確認
その箇所をダブルバッファにして対処しました
ついでにDETACH割込みがかかってしまう症状のバグもACLデータ送受信フローを変えて
対応した所、DETACH割込みがかかってしまう症状が無くなりました
とりあえずこれで様子を見ようと思います

いまから送信プログラムを作成します
すんなりいくかな、、、
[PR]

  # by komoremi | 2010-02-12 22:05 | PIC-USBホスト

PICで USBだも21(バグ修正編)

PIC24FJ64GB002を使ったBluetoothドングルの無線通信実験追記

通信中にDETACH割込みが発生する症状がとりあえず軽減しました
まだ完全に無くなった訳ではないので真の原因はつかんでいませんが
なんとなく原因は分かりました(連続通信中数時間に1回程度発生)
完全にバグを取り除く為には、プログラムシステム全体を改造しなくてはいけないので
とりあえずこれで良しとして明日からは次に進もうと思っています

DIP28PのPICを使ってUSBホストを実装しています
これまで実装したUSBデバイスは、USBメモリ、Bluetoothドングル(途中)です
また、USBデバイスとしてはCDC通信を実装しました

使用したUSBプロトコルスタックは、Microchip社のMCHPFSUSB Framework v2.6
この中にあるサンプルプログラムを利用しています

BluetoothドングルでのUSBホスト実装は、このプロトコルスタック群の
USB Host - MCHPUSB - Generic Driver Demo
を参考にしてプログラミングしています

またBluetoothプロトコルの仕様は、
BLUETOOTH SPECIFICATION Version 2.1 + EDR [vol 0]
を参考にしています

Bluetooth上のRFCOMMプロトコルの仕様は
RFCOMM with TS 07.10
ETSI TS 101 369 V7.1.0
を参考にしています
[PR]

  # by komoremi | 2010-02-12 02:53 | PIC-USBホスト

PICで USBだも20(RFCOMM受信編)

PICでUSBホスト(Bluetoothドングル)の追記
ようやくPICに接続したBluetoothドングルでRFCOMMを受信することができた
でもまだ時々ポートオープン時にDETACH割込みがPICで起こってしまう
うーーん、、、なんでだろう

まだ受信段階、送信はこれからコーディングします
でも、受信が時々抜ける状態でもあります

うーーん、、、なんでだろう
RFCOMMのプロトコルはBluetoothのプロトコルから抜け
別のパケット通信規格によるもので、当初この仕様がサッパリ分からんかった
今でも一部分しか分かってないけれど、、、、
TS07.10といわれる仕様書を探すのに半日費やす始末でした

とりあえず、PIC24FJ64GB002で完全仕様どおりでは無いけれど
RFCOMMは実装できると思います

とりあえず受信確認画像添付
a0147557_1535121.jpg


a0147557_1541643.jpg

[PR]

  # by komoremi | 2010-02-11 01:55 | PIC-USBホスト

PICで USBだも19(RFCOMM始動編)

PICでUSB HOST の続き
USBでの受信データが飛んでしまう現象が現れ,
デバックで奮闘しておりました
ACL送受信はMicrochip社USBプロトコルスタックの、HOSTWRITEの命令を使っていたのですが
私のプログラムが駄目駄目ちゃんのせいか
受信データが吹っ飛ぶ現象がたまに発生

結局USBHostGenericWrite、Readでイベントが発生するソースを参考にしながら、
USBHostACLWrite、Readの関数でイベントを発生するように
generic.cのソースを改造しました

Bluetoothのドングルからの受信をEP0→HCIイベント受信→ACL受信→ACL送信
のシーケンスでイベントが発生したら各処理プロセスに移動するというルーチンで
とりあえずは送受信の吹っ飛びはなくなったようです(たぶん)

現在SDPの処理プログラムはごまかして終了
RFCOMMの接続シーケンスのプログラムをガリガリつくっております
現在の処理プログラムで、PIC24FJ64GB002のプログラムメモリは40%使用
RAMは60%使用となっております
駄目駄目プログラムをなんとかせねば、、、、
[PR]

  # by komoremi | 2010-02-03 20:26 | PIC-USBホスト

SEM SKIN - DESIGN by SEM EXE