• 締切済み

PIC18F2550のUSBでのインタラプト通信について

"PICで楽しむUSB機器"(後閑哲也 著)を参照しながら工作しているのですが、USB通信におけるインタラプト方式でのPICからPCへのデータの転送方法で、PICの設定とそのプログラムがよくわからずに困っています。 何か良い参考資料等がございましたら教えていただけないでしょうか。

みんなの回答

  • zwi
  • ベストアンサー率56% (730/1282)
回答No.2

使用目的からすると仕様的には問題なさそうなので、実装方法だけですね。 HIDクラスを使うと簡単に実装できる気がするのですが、本には細かい説明が無かったのでしょうか?私も使ったことが無いので具体的なアドバイスが出来ませんがWEBサイトを紹介します。 とりあえず、これが参考になると思います。 http://www.mars.dti.ne.jp/~m7030/pic_room/mouse/

  • zwi
  • ベストアンサー率56% (730/1282)
回答No.1

EZ-USBでしかUSBは扱ったことが無いのですが参考になればと思いかきこませてもらいます。 まず質問があります。 ・インタラプト転送の仕組みは理解されてますでしょうか? ・インタラプトを使うということは、HIDデバイスとして実装する予定でしょうか? ・インタプラトでPC側に送りたいデータの規模(最大の1秒あたりのデータ転送バイト数)を教えてください。

SHOO-3
質問者

補足

>インタラプト転送の仕組みは理解されてますでしょうか? わかってるのと言えば、 ・必ず1msで転送をおこなう ・そのために割り込みによるデータ取得を行う ことくらいです。 >インタラプトを使うということは、HIDデバイスとして実装する予定でしょうか? オシロスコープのようなものを作りたいのですが、最終的にはHIDを目標としています >インタプラトでPC側に送りたいデータの規模(最大の1秒あたりのデータ転送バイト数)を教えてください。 1度の転送に64byte、1秒間だと合計で64,000byteになります。

関連するQ&A

  • USB経由でPIC自体をプログラミングできますか?

    PIC18のUSB通信機能を使って内部フラッシュメモリにデータ(プログラム)を書き込めますか? 要は、PIC18のUSBインターフェイスを使ってPIC自体をプログラミングしたいのですが、可能でしょうか? イメージ的には次のような仕組みです。 1)PICをUSBでPCにつなぐ。 2)PCからPICへプログラムまたはマクロ命令データを送信する。 3)PICはどこかにそのプログラムまたはデータを保存する。 4)PICをUSBから切り離す。 5)こちらの思い通りにPICが動く。 USB通信を行う場合、本来フラッシュメモリにはUSB通信関係のプログラムを書き込んでおくと思うのですが、 USB通信で受信したデータをフラッシュメモリの別領域に書き込んだりすることができるのでしょうか? あるいは、USB経由で受信したデータを汎用レジスタにいったん書き込んでおいて、 書き込みが終わってから、汎用「レジスタのデータを 読み取りつつ、PIC事態を制御することは可能でしょうか?

  • USBの通信シーケンスについて調べています。

    今後、USB関係の仕事をするらしいので、通信シーケンスを調べています。 現在エニュメレーションまでは理解したのですが、その後が良く分かりません。 特に以下の2点が分からず困っています。 ・エニュメレーション処理が終了した時点でコントロール通信によるデータ送受信は可能なのか? ・バルク転送やインターラプト転送等を使用するにはどのような処理を行わなければならないか? 出来ればUSBの通信シーケンスについて詳しく解説している資料があれば教えて欲しいです。 よろしくお願い致します。

  • PICのI2C通信のプログラムについて

    I2Cの同報機能を使いたいのですが、プログラムの書き方がよく分かりません。 後閑さんの電子工作の実験室も見たんですが、そこに書いてあったのは多分アセンブラのプログラムで、CCSを使っている自分には理解できませんでした。 CCSで同報機能は使えるのでしょうか?もし使えるのなら、プログラム例などをいただけると助かります。 ちなみに、使っているPICはマスターが16F873でスレーブが16F819です。 よろしくお願いいたします。

  • PIC18F2550でのUSARTの使い方について

    フリーのC18コンパイラで電子工作をしています。 今回18F2550でシリアル通信に挑戦していますが、自分の目的の動作のためのレジスタ設定が理解できません。教えて下さい。 動作内容はPICからシリアル通信でデータを送り12ビットシリアル-パラレル変換の「NJU3714」でシリパラ変換させることです。PICのデータ受信は今のところしないつもりです。

  • PICのUSBホストコントローラーについて

    初心者です。 PIC24FJ64GB002のUSBホストコントローラーを使用し、USB機器との通信を行っています。 USB機器との通信制御を行っていない時に、PICの汎用ポートからシリアル通信の信号(パルス幅=10μsec、50ビット)を出力しているのですが、不特定ヶ所でパルス幅が50μsec程延びます。 USB機器との通信制御を行っていない時に、通信端子に『通信時間=50μsec、1msec間隔 』の信号が出力されています。 ●この通信制御が汎用ポートの処理の邪魔をしている(割込みが入っている)のでしょうか? ●割込みが原因の場合、割込みを避けて汎用ポートの出力を行いたいのですが、どのようにすればよろしいでしょうか? ご教示下さい。 よろしくお願い致します。

  • PICのアセンブラー言語の擬似命令

    後閑哲也先生の「電子工作のためのPIC18F本格活用ガイド」という本で、PICのアセンブラーの勉強をしている初心者です。 今、セグメントLEDを使ったダイナミック点灯の所をやっていますが、その中にある テーブル定義用の擬似命令 DT とか、それと一緒に使われるという RETLW の関係がよくわかりません。 DT の後にセグメントLEDのどのセグメントを点灯させるのかというパターンが、0から16進のFまで並んでいるのですが、ある瞬間に点灯したいパターンがどのようにして選択されるのでしょうか? またDTは「プログラムメモリー内にRETLW命令として1バイトごとの定数テーブルを作成する。」とあるのですが、この意味がよくわかりません。 どなたか、DTとRETLWの関係を詳しく解説していただけないでしょうか。 よろしくお願いいたします。

  • USBの通信速度を調べられられませんか?

    パソコンに接続したUSB機器がどのくらいの通信を行っているか分かる方法はないでしょうか。 USB端子が二つあるノートパソコンにUSBハブを使って端子を五つにしています。しかし、つないでいるUSB機器のうち二つが通信データが多いらしく、ハブで分けた方につないだ機器が安定しません。そこで二つの機器がどのくらいの通信速度なのかを調べたいのですが、方法はないでしょうか。ありましたら教えてください。

  • PIC-PCシリアル通信プログラム

    PICとPCでRS232のシリアル通信を行おうとしているんですけれど、 PICからPCに文字列を送ろうと たとえば PIC側からプログラムで puts("A\0");とデータを送信して ReadFile()関数でPC側で受信しているんですけれど、 受信したデータを画面表示されると Aフフフフフフフフフフフフフフフフフフフフフフフフと表示されてしまいます。 ちなみに送信データをNULLだけにしても フフフフフフフフフフフフフフフフフフフフフフフフフを表示されます。 これを解決する方法がわかりません。 どなたか教えてください。

  • VC++でUSB通信がしたいのですが

    VCで作ったアプリケーションでデータ通信をしています。 今まではRS232Cを使っていて、これをUSB通信にしたいと思っているのですが、 なかなか参考になる資料が見つからなくて困っています。 なるべく簡単に出来る方法があったら教えてください。 あんまり難しいようなら諦めます。

  • PIC18F67J60で外部オシレータが発振しない

    これまでにENC28J60+PIC18F系の組み合わせでイーサネットと接続するガジェットをC18でいくつか作ったことがあるレベルのホビイストです。 このたび後閑さん著の「PICで楽しむネットワーク」を購入し、PIC18F67J60で同様のアプリケーションを作ろうとP91の汎用ユニット回路を組んで、書籍添付のプログラムをコンパイルしてICSPでセットしてみたところ、エラーも発生せずLCD上にも文字列を表示します。 しかしRJ45とのやりとりができておらず、オシロで見ると外部オシレーターの25MHzクリスタルが発振していないことがわかりました。 問題を切り分けるために、オシレータを取り外して先のENC28J60につなぐと正しく発振します。 さらにシンプルにするために、PIC18F67J60と電源周りやパスコン、動作確認用のLEDと外部オシレーターだけという構成にしてみましたが、ICSPでLED点滅のプログラムは書き込め、動作していますが外部オシレーターが発振していません。 外部オシレーターは39,40ピンに接続し、22pFのパスコンをつけています。 TQFPの変換基板にブリッジがないか、またチップが壊れていないかを確認するために、同様の基板をもう一度作ってみましたが同じ結果になりました。 このような場合、問題を切り分けるためにはどこから進めていけば良いでしょうか? アドバイスくださると大変助かります。

専門家に質問してみよう