USB CDC BDT」も初期設定の一部ですが、USB機能を使う為の初期設定について説明してみます。 <PICデバイス=18F2550> ターゲットは秋月電子通商さんの USBマイコンボード 完成品(PIC18F2550) +α の RRP2550-0 です。

<<< USBモジュールのエンドポイント設定 UEPn >>>
ハンドシェークモード、Control モード、OUT、IN、Stall を設定するレジスターですが、データシートを見るとUEP0を先頭(若いアドレス F70H )に連続する16個のSFRでしたから、ここでは下図のデータをブロック転送して設定しています。

UEPn_usb_tbl

<<< USB割り込み制御用SFR >>>
通信時のエラーを知らせる割り込み許可は全て禁止にしています。
( UEIE )=00H
 通信状態を知らせる割り込みは RESET と転送完了割り込みだけ許可します。
( UIE )=09H
以上で許可された割り込みの代表する割り込み USBIF を高位割り込みとして許可します。
 IPR2 <USBIP>=1 、 PIE2<USBIE>=1
(事前に割り込み優先順位有効の設定が必要です。)
全ての割り込み許可の前に当該割り込みフラグをクリアして下さい。

<<< 基本動作モードの設定 >>>
内臓トランシーバーをプルアップ付きで使い、FullSpeed でピンポンバッファ無しにします。
( UCFG )=14H
パケット転送許可状態で、USB モジュールを動作開始します。
( UCON )=08H
セットアップ中の UCON<PKTDIS>は SIE (シリアル・インターフェース・エンジン)によって頻繁にセットされ、送受信の都度プログラムでクリアする必要があります。

以上の初期設定を済ませ、今後の記事で説明する割り込み処理を実現した状態で RRP2550-0 を Windows PC に接続し、RESET と転送完了割り込み( Get_Descriptor( device ) )を確認出来ています。

今回は、様々な書籍や Web ページを参考にさせて頂いていますが、多くの資料が広範囲に説明している為に、「今の自分に必要なこと」に行きあたらずイライラする場面が多かったと思います。 ここで紹介する一連の記事では PIC18F2550 内臓の USB モジュールを使い、アセンブラで CDC を実現することに特化して、実際の設定値等をズバリ紹介する予定です。 広く USB を知りたい方には不向きな内容になる点、ご了承ください。

PIC18F2550 の USB 機能の理解も不十分で、USB の規格やプラグ&プレイ( Enumeration )の間にホスト( PC )が行う手順の実例も知らないと言う情報不足の中にあって、推理ゲームのような試行錯誤を強いられています。 当初、試行錯誤の過程も記事にしようと考えていましたが、自分自身も混乱するような推理ゲームを記事にしたのではご迷惑をお掛けすると考え直したところです。

完成を待たずに記事にしながらも、記事を書く時点で自分なりに納得できたものを紹介する予定です。 ただし、途中で間違いに気付いて修正する可能性を否定出来ません。 間違った記事は履歴付きで修正する予定ですが、事情を御理解の上で参考にして下さいますようお願いします。


USB関連記事のインデックスは右記事の末尾にあります。→ USB CDC 


楽々PIC」は楽しい道具を作りながら学ぶブログを目指します。