USB-Functionの割り込み
動作しなかったUSB-Functionの割り込みですが、やっと動作するようになりました。
ポイントを書き留めておきます。
ポイントを書き留めておきます。
1.USB-Function機能を利用するためには、MPUの動作モードを16bitバス幅にします。
具体的には、ベクタテーブル0x000FFFF8Hに0x05000000を配置しておきます。
※直接レジスタのMODRは書き換えできませんので注意。
★詳しくは、ハードウェアマニュアル
・3.9 動作モード P61
・3.10.3 リセットシーケンス P68
具体的には、ベクタテーブル0x000FFFF8Hに0x05000000を配置しておきます。
※直接レジスタのMODRは書き換えできませんので注意。
★詳しくは、ハードウェアマニュアル
・3.9 動作モード P61
・3.10.3 リセットシーケンス P68
2.外部バスインタフェースの設定を行う。
USB-Functionや、OSDC機能・USB-HOST機能は、外部バスに接続されているので、利用できるように、
CSの設定を行う。ハードウェマニュアルのP669に、推奨設定があるのでそのまま利用する。
USB-Functionや、OSDC機能・USB-HOST機能は、外部バスに接続されているので、利用できるように、
CSの設定を行う。ハードウェマニュアルのP669に、推奨設定があるのでそのまま利用する。
3.割り込みコントローラと、USBの外部割込みの設定を行う。
USB-Functionは、外部割込みの4番目なので、割り込みの許可と、割り込みレベルを31以外にする。
注意すべきは、割り込みのレベル指定が、ドキュメントには無いが、「立ち上がりエッジ」で要求あり
★ハードウェアマニュアル
・11.2 割り込みコントローラのレジスタ P274
・12.1 外部割込み/NMI 制御部の概要 P284
USB-Functionは、外部割込みの4番目なので、割り込みの許可と、割り込みレベルを31以外にする。
注意すべきは、割り込みのレベル指定が、ドキュメントには無いが、「立ち上がりエッジ」で要求あり
★ハードウェアマニュアル
・11.2 割り込みコントローラのレジスタ P274
・12.1 外部割込み/NMI 制御部の概要 P284
4.USBのENDPOINTバッファの設定を行う。
・18.3.5 ENDPOINT BUFFER の設定 P441
FIFO2のバッファを利用して、20BYTEの設定データを書き込み、CONT1.CFGEN=1に設定後、ST3.CFENDになるまで待ちます。
★ハードウェアマニュアル・18.3.5 ENDPOINT BUFFER の設定 P441
5.ENDPOINTごとのACK/NACK/STALL要因マスクビットを解除する。
具体的には、CONT7,8,9が0でマスクされているので、許可するために必要なbitを1にします。
★ハードウェアマニュアル
・18.3.6 ソフトウェア制御例( 暫定) P442
具体的には、CONT7,8,9が0でマスクされているので、許可するために必要なbitを1にします。
★ハードウェアマニュアル
・18.3.6 ソフトウェア制御例( 暫定) P442
とりあえず、割り込みが入るようになったので、後はなんとなくできそうな予感。
詳しくは、そのうち雑誌で紹介されるのでしょうが、せっかちな方のお役に立てれば・・・
今のところサンプルはありません。
詳しくは、そのうち雑誌で紹介されるのでしょうが、せっかちな方のお役に立てれば・・・
今のところサンプルはありません。
つまずいたのは、1.のMPU動作モード。結構悩んだ。しかし、OSDCを動かそうとしている方(http://d.hatena.ne.jp/pcm1723/20080329/1206806725 )の事例を見て気付きました。