• ベストアンサー

AKI-H8-USBについて

秋月のH8/3052FのUSB開発キットを使っています。 1.USBケーブルを接続しても認識されません。不明なデバイスというのであればわかるのですが、接続自体認識していないようです。どういったことが原因なのでしょうか? 2.キットに入っている説明書をそれぞれ一通り読みましたが、結局訳が分からずどういった手順を踏めばきちんと動作するのかがいまいち飲み込めませんでした・・・ 本当に初歩的な質問で申し訳ありません。 どなたかAKI-H8-USB開発キットを使ったことがある方は教えていただければ幸いです。

質問者が選んだベストアンサー

  • ベストアンサー
  • pyonmae
  • ベストアンサー率64% (40/62)
回答No.2

こんばんは。 そこまで理解されているなら、実はそんなに難しく考える必要はなかったりします。 何せ面倒くさいことはだいたいH8がやってくれるので、あなたはオイシイところを実装すれば良いのです。 下手な例え話ですが、リクエスト、レスポンスといったデータを「手紙」、デバイスを「あなたの家」、デバイスのUSBコントローラを「ポスト」、デバイス内で動くソフトウェアを「あなた」とします。 お話はUSBケーブルをホストとデバイスに接続した所から始まるのですが、家にはポストが最初から付いているものの、最初これには鍵がかかっていて、あなたは外界の様子を知ることができません。ホストの方でも鍵のかかったポストは相手にしません。 あなたはまずこの「鍵を開ける」事から始めます。(USBコントローラの初期設定) 鍵が開いた時点で、ホストとデバイス間での通信が可能となります。 そもそも、ホストがデバイスを認識してくれないのは、「あなたという存在に気づいていないから」であり、「通信ができないから」ではないのです。 例え話に戻りますが、首尾よく鍵が開くと、そのニュースはあっという間にホストに伝わります。 ニュースを聞いたホストは、早速あなたに手紙を書きます。「あんた誰?」と。 この手紙も、即座にあなたの家のポストに届きます。 手紙を受け取ったあなたは、「手紙をポストから取り出して」、「読んで内容を理解」した上で、 「返事を書いて」「ポストに返事を投函する」という事をしなければなりません。ここの部分を実装するわけです。 なお、JPとは違って、家のポストに投函しても、返事はちゃんとホストに届きます。 その後、あなたの返事を受け取ったホストは、次々と手紙を送りつけてきますので、あなたは先ほどの要領でそれら全てに正直に答えます。 一連の手紙のやり取りであなたの事を理解したホストは、次に「この人、もしかしてどこかで会ったことあるかな?」と考え始めます。 つまり、デバイスドライバがインストールされているかどうかです。  1.思い出した、あの人だ! → 該当デバドラをロード。使用可能状態へ  2.知らない人だ → 「不明なデバイス」表示 こんな感じだと思いますが、どうでしょうか。ますます意味不明だったらごめんなさい・・・。

htk433
質問者

お礼

いえいえ、pyonmaeさんの説明のおかげで全体の流れはだいたい理解できました。ありがとうございます。 ただいくつかまだ不明な点がありまして・・・ コントロール転送でのやりとりがどうもモヤモヤして理解しづらいのでそこを。とりあえず今の私の解釈はこんな感じです。 コントロール転送のセットアップ・トランザクションでホストがSetupパケット、DATA0(何を送信しているのかわからない!)を送信、デバイスはACKを返す。 その後のトランザクションでデバイス・リクエストとその応答がやりとりされ、すべてが終了したら(何をもって終了とするのか…?)ホストがデバイスを認識できるようになる・・・といった感じです。どうでしょうか? 実装の必要がある部分についてですが、そこにはパケットIDなどの解析も含まれているのでしょうか?できればここら辺の事までUSBコントーローラの方でやってくれないかな・・・という気持ちなのですがそれは期待しすぎですよね。。。 それともう1つ、これまた初心者丸出しのですがお聞きしてよろしいでしょうか? プログラム書き込みの際に出る「CPUからの応答がありませんでした」というエラーの原因としてはどのようなことが考えられるのでしょうか?ブートモードにするために必要なことは一応やっているつもりなのですがどうもうまくいかず・・・ USB通信についての勉強はするものの肝心のH8は動かせない、と言う状況が情けないながらもしばらく続いていまして。 何かご存知であれは教えていただければ助かります。

その他の回答 (3)

  • pyonmae
  • ベストアンサー率64% (40/62)
回答No.4

こんにちは。 ご期待どおり、SetUpだのData0/1だのACK/NAKだのPIDの識別だのといったパケットレベルの処理は、全てH8がやってくれます。 「手紙」の例でいくと、封を切った状態で手紙が届くので、あなたはそれを読むだけです。 逆に、返事は便箋に書いて「出しといて」と言うだけで、あとはH8君が封筒に入れて宛名を書いて切手を貼ってホストに届けてくれます。 No.3の方が言われるように、パケットとトランザクションが混同されがちです。乱暴なやり方ですが、USBコントローラの初期化さえ正しくできていれば、PCに接続した時点で「何か」を受け取るはずです。(もちろん、ハードウェアが正しく作成されている事が大前提ですが)その「何か」の内容を調べる事で、H8君が一体何をしてくれたのか理解できると思います。 ブートモードについてですが、もう少し状況を詳しく書いて頂かないと原因が絞れません。(最初の質問でもそうでしたが) 相変わらずAKI-H8の事は知らないので、たぶん的外れだと思いますが、パッと思いつくのは以下のようなところです。 ・CPUのモードは正しくブートモードになっているか?(意外なDipSwの設定に左右されたりするので(FWEとか)、色々パチパチやってみましょう) ・どのポートにつないでいるか?(シリアル?USB?シリアルならどのチャンネルか?) ・PC側で、COMポートの指定を間違えていないか? ・ケーブルはクロス/ストレート間違えていないか? ・そもそもハードウェアは正しく実装されているか? 「AKI-H8 USB」でググると、トップに出てくるサイトに同じような問題を解決された方の記述があるようですが、これは違いますか?

htk433
質問者

お礼

返答が遅くなってすいません!! 流れはだいたい理解できましたし、とりあえずUSB通信のサンプルプログラムも動作させることができました。 ご回答本当にありがとうございました。

  • bug_bug
  • ベストアンサー率78% (36/46)
回答No.3

1.LCD表示等でダウンロードしたプログラムの動作確認は取れていますでしょうか。 2.キット購入直後からの流れは A.USBキット、3052ボードのパーツ実装。 B.サンプルプログラムダウンロード。 C.ホストPCにドライバをインストールし動作確認。 ここまで行ってボードに異常が無いかHWのテストを行います。 ココまで確認が取れないなら、USB開発以前の話です。 これ以降の話であれば、USBエニュメレーションに失敗してますので、 実装プログラムの検証ですね。サンプル動作プログラムからコンフィギュレーションディスクリプタを変更していたら変更内容の確認が必要かもしれません。 以下、簡易にUSB接続後の流れです。 1-1.デバイスがD信号線をLOWに引いて接続をホストに知らせる。 1-2.ホストはUSBエニュメレーションを開始。 1-3.ホストはターゲットを識別し、レジストリ情報からドライバーをロード 以下、1-2について簡易にUSBエニュメレーションの流れです。 ここはご存知の通りEndPoint0を使用したコントロール転送で行われます。 2-1.ホストはターゲットに対しコンフィギュレーションディスクリプタを一部要求する。 2-2.ターゲットはコンフィギュレーションディスクリプタを一部返答する。 2-3.ホストはターゲットに対し、アドレスを指定する。 2-4.ターゲットは指定されたアドレスを取り入れる。 2-5.ホストはターゲットに対し必要なディスクリプタを全部要求する。 2-6.ターゲットは必要なディスクリプタを全部返答する。 ここまでできれば、ホストPCにドライバがロードされUBSデバイスとして認識されます。症状から察するに、不明なデバイスとも表示されないのであれば、USBエニュメレーションが開始されていないものと思われます。 過去開発した実績のあるPCだった場合、ドライバ削除などでレジストリ情報に誤記があると何も起こらなかったりしますが、案外別UBSポートに接続するとあっさり認識したり。 USB習得時のコツですが、パケット単位のやりとりと、トランザクション単位のやりとりとの違いをしっかり意識して区別しないと混乱の元です。ターゲットの開発ではパケット単位のやりとりについてはUSBデバイスが担当してくれますのでトランザクションだけ意識する必要があります。 素人のたわごとですが、ご参考まで。

htk433
質問者

お礼

返事が遅くなってすいません!! あれからサンプルの動作は無事に確認できました。 デバイスとして認識されるまでの流れもなんとなく理解できました。 ご回答ありがとうございました。

  • pyonmae
  • ベストアンサー率64% (40/62)
回答No.1

AKI-H8は使用していませんが・・・。 「USBケーブルを接続」した時の状況が今ひとつ分かりませんが、もしかして買ってきてすぐにとにかくつないでみた、という事でしょうか。 (そうでないならこの回答は無視してください。) USBは、ケーブルをつなげば即通信ができるような甘いモノではありません。 普段何気なくPCにつないでいるUSBですが、ケーブルを接続した瞬間には、想像を遥かに上回る情報が交換されます。 簡単に言うと、ケーブルをホスト(PC)に挿すと、ホストからデバイス(H8)に「あんた誰?」と聞いてきます。 それに対して、デバイスは「私はxxxです」と答えます。 次に、ホストは「で?名前は?どこの人?何してる人?」などと矢継ぎ早に質問を浴びせ、デバイスはそれら全てに回答します。 こんなやり取りを経て、やっと初めて「不明なデバイス」と表示されるわけです。 まず、USBの通信プロトコルの勉強が必要です。(参考URL、その他ググって下さい) 1.ホストとデバイスでどのようなやり取りが行われるかを理解する 2.その上で、H8のUSBコントローラがどのような事を行ってくれるのかを理解する 3.上記を理解した上で、H8のUSBプログラムを実装する 事が必要かと思います。 1.が分かってきたら、トラ技のサイトにサンプルプログラムが落ちていると思いますので、探して参考にされてもよいと思います。

参考URL:
http://www.picfun.com/
htk433
質問者

お礼

こんな初心者丸出しの質問に答えていただいて、ありがとうございます。 接続時にホストからのデバイス・リクエストがあり、そこでデバイスがディスクリプタを返すことでデバイスとして認識される。という解釈でよろしいのでしょうか。 参考書やサイトでの解説の1つ1つはまだ理解できるのですが、ケーブル接続からUSBデバイスとして認識されるまでの流れは?必要なもの(事)は?というとなんだか頭がこんがらがってしまいます・・・ そもそもケーブルをつないだだけの状態ではデバイスとして認識されないのだから、デバイス・リクエスト自体不可能なのでは・・・? と考えてしまいます。 私の学習が足りないのか解釈が間違っているのか、そのどちらかではあると思うのですが、よろしければご指摘お願いします。

関連するQ&A

  • AKI-H8 3048 USB開発のドライバ

    AKI-H8/3048F USB開発セット(http://akizukidenshi.com/catalog/g/gK-00172/) を買い、USBでの開発をしようと思ったのですが、USBのドライバのインストールができません。 色々なサイトやデータシートを読むと、付属のCDのサンプルを書き込み、 マイコンの電源をつけてUSBを接続すれば不明なデバイスが見つかり、 その後、CDに入っているものを指定すればドライバはインストルーされると書いてあります。 しかし、自分の場合、不明なデバイスが見つからず、デバイスマネージャなどを見ても全く反応していません。 けれども、USBから電源はきていて、マイコン自体はUSBで動作することができます。通信は全くできません。 (開発環境はwindows7 64bit です) 原因が分かる方は教えていただけないでしょうか?よろしくお願いします。

  • H8で自作マウス

    秋月電子の『AKI-H8/3048F USB開発キット』を使って、ボタンを押すとポインタが動くマウスのようなものを作ろうと思っています。 ボタンを押すと、今ポインタのある場所から少し動くという風にしたいのですが、どういう関数を使ってデータをパソコンに送ればいいのでしょうか?

  • H8マイコンによる組み込みプログラミング入門

    この分野の初心者です.マシン語,アセンブラ,CPUの仕組みは理解できていますが,CPUと周辺との入出力,デバッグ環境等はまったく自信なしです. H8マイコンを使って,組み込みプログラミングを学習したいと思います.秋月から出ている,AKI-H8~ が手頃なようですが,どれを購入したら良いのかよくわかりません.ゆくゆくは,自分で回路なんぞ組み立ててH8から制御してみたいのですが,現時点では,LCDへの表示やLEDの点灯等の簡単なものを行いたいのです.C言語はできるので,開発環境一式そろったものが良いのです. AKI-H8/3052F USB開発キット(フルセット) AKI-H8/3052F開発セット(H8マザーボードセット) AKI-H8/3048開発キット(即使えるキット) など,8000円台前後でいろいろあるようですが (1)組み立ては難しいですか? (2)パソコンと接続するのに,他に何か必要なのですか? (3) ROMに焼けるのですか?(何回も) (4)最初に述べた目的を達成するには,何を購入すれば良いですか.

  • 秋月のAKI-H8ライターについて

    秋月のAKI-H8ライターを使っているのですが、通信ポートがRS-232C専用のため、RS-232Cが無いパソコンでも使用できるように、USBポートをRS-232Cに変換する変換コネクタを買いました。しかし、使ってみると動いてはいるのですが肝心なところでエラーが出て使えません。 何か設定を変える必要があるのでしょうか? ちなみに、ロボットの大会を見に行ったときにちゃんと動いてるところを見たのでもとから使えないということは無いはずです。

  • AKI-H8/3048Fマイコンボードについて質問

    毎度お世話になっております。 H8マイコンについて質問があります。 以前から、秋月電商さんのAKI-H8/3048F基板の組み立てキットを使用しております。 が、秋月電商さんの方で組み立てキットの販売が縮小され、組立済みの基板の方でないと入手が困難になってきましたので、先日、初めて組立済みのAKI-H8/3048Fを使用してみました。 キットと組立済み製品では完全にピンコンパチなので、何も考えずに同一のプログラムを書き込んで見たところ、液晶表示器の制御で誤作動が起きました。 状況を列挙しますと、 1)症状 3回に2回程度の割合で、電源投入直後からLCDが全ビット点灯で真っ黒な状態で、何もデータが表示されない。 組み立てキットの方では、同一プログラムを書き込み、同一の装置に差し込んだ状態で問題なくデータが表示される。 それぞれ電源のON/OFFを十数回繰り返して検証したが、現象はかわらなかった。 2)H8マイコンの書き込みモード モード7 3)H8マイコンのピンの割り当て H8マイコンのポート3を下記の様に使用。 /*****************************************************/ H8マイコンのP3をLCD制御に使用 7  6  5  4   3   2   1   0 - RW  E RS DB7 DB6 DB5 DB4 /*****************************************************/ AKI-H8/3048F上では、P3はCN3の13,14,15ピンになります。 DB0~DB3はセオリー通りGNDに落としています。 4)回路基板 基板は手配線ではなく、PCBに起こした物。 AKI-H8/3048Fのソケットから液晶表示器まで直結していて、 各信号線は10kΩの抵抗で5Vにプルアップされている。 5)電源 H8基板のレギュレータは使用せず(取り外してある)、回路基板 上の5V電源から供給(LCDも同一電源から供給)。 ちなみに電源は、1A5Vの三端子レギュレータで作っており、特にリップル等もない。 6)LCD POWERTIP PC1602-Lを使用しています。 上記の様な状態です。 ちなみに、組み立てキットと完成済み製品で基板のパターンを比較したところ、違いはCN3-14(P3-4)が、H8/3048FのICのパスコンの下をくぐっていところくらいでした。 それと、LCDの初期化の所で、E信号の間に設けるディレイを、200usecから700usecに変えたところ、症状がおさまった様にみえます。 本来であれば制御信号をモニタしてみるのが第一だとは思うのですが、適当な計測機器が手元に無く解析に苦労しております。 もし、 ・同様の症状の経験 ・原因について心当たり ・原因の調査方法についての助言 等のある方がおられましたら、是非ともアドバイスをお願い致します。 それと、上記で不明な情報がありましたら、なるべくすぐに追記致しますので、お申し出下さい。 よろしくお願いいたします。 訂正です。 >ちなみに、組み立てキットと完成済み製品で基板のパターンを比較したところ、違いはCN3-14(P3-4)が、H8/3048FのICのパスコンの下をくぐっていところくらいでした。 H8/3048のICのP3-5(E信号)ピンからCN3-14番ピンまでの配線パターンが、完成品ではH8/3048のICのパスコンのチップコンデンサの下をくぐっている。 でした。

  • AKI-H83048で割り込みを使用してLEDを点滅させたいのですが、、、、

    はじめまして、組み込みソフト超初心者です。 割り込みタイマを使用してLEDを特定時間点滅させる、ということを行いたいのですが、コンパイルができず、頓挫しております。どなたか、アドバイス頂けませんでしょうか。 ・開発環境はAKI-H8 3048 ・割り込みを使用してLEDを点滅させるということを目的にCでソースをコーディングしています。 ・巷の参考書など参考にしてmain、割込関数、コーディングしました。 ・コンパイラはAKI-H8マイコンキットについてきた専用CコンパイラCC38Hを使用しています。(統合開発環境はありません) 上記の条件でコンパイルすると、interruptがイリーガルとエラーが出ます エラーの出ているコードは #pragma interrupt itu0_int(vect=24) の部分です。 参考書で、interruptはコンパイラによって使用できないようなことも読んだのですが、どうすればコンパイルできるのでしょうか、また、何が足りないのでしょうか なにぶん初心者なもので、正直質問の的が絞れていないのかも解らないのですが、とにかくまず動かしたいと思い質問させて頂きました。 同じ開発環境の方が居られましたら有難いです。 何とぞよろしくお願い致します。

  • USBハブが接続しても認識しません

    NECノートパソコンLaVieS LS46H/24Dですが、他のパソコンで正常だったUSBケーブルを接続しても認識しません。USBコントローラーのプロパティーでもこのデバイスは正常に動作していますと表示されています。またデバイスの使用状況も有効になっています。あとはどこを調べて、対処したらよいか教えてください

  • USB デバイス 認識

    PCとPSPをUSBケーブルで接続すると認識されなくなりました 接続後ツールバーにUSBのアイコンが表示され 表示してみると[USB デバイスが認識されません]と出てしまいます。 デバイス位置は [USB Root Hub(6 ポート)] ↓ [不明なデバイス] となっています。 iPodやGW-US54Mini2B等も同じ場所で止まっています…

  • HEWでのプログラミングについて

    秋月のH8-3052(USB開発キット)を使っています。 開発環境はルネサスのHEWです。 USB通信を行うプログラミングを作りたいと考え、参考書やサンプルプログラムのコード、電子工作室(PICFUN)のサイトなどを見て学んでいます。 だいたいの手順は理解できたのですが、そのプログラムを自分で書くとなると???となってしまい困っています。 電子工作室では『基本デバイスプログラム』というプログラムが公開されていますが、HEWでそれと同じことをするにはやはり基本デバイスプログラムの流用では駄目なのでしょうか?

  • USBがこわれた?!><

    パソコンは、シャープのPJ120HでWindowsXPを使っています。 USBにマウスをさしこむと、 「このコンピュータに接続されているUSBデバイスの1つが 正しく機能していないことが、Windowsによって認識されていません。」 とでてきて、その下に 「不明なデバイス」と太字で表示されます。 マウス以外のものをさしても、同じ現象が起こります。 どうすれば直るんでしょうか>< 教えてくださいm(__m)゛

専門家に質問してみよう