USB_Controler(PIC18F2550)とパソコンを接続した [電子工作]
(2012.02.11)
PIC18F2550とパソコンのUSB接続は既に一度試したことがあります(この辺です)。そのプログラム・ソースをそっくり取り込んで、USB_Controlerとパソコン間の通信機能をサクッと確認するつもりでしたが、思う通りには進みませんでした。
USB通信制御について詳しいことは判らないまま、Microchip Solutionライブラリ(USB Device CDC Basic Demo)をPIC18F2550用に書き換えて動かしてみただけなので、上手く動かなかったときに何をどう確認すれば良いか判りません。
”Initialize.cにUSB_DEVICE.Hをインクルードし忘れた(それでもコンパイルは通る)”とか、”USB_HAL_PIC18.Hの設定が合っていなかった”とか、少しずつ、少しずつ合わせ込んでいって、最後にクロックの設定を見直して(以前USB接続を試したときと同じ設定にして)、PIC18F2550とパソコンのUSB接続が出来た”と思ったら、PIC10F322とのシリアル通信が出来なくなっていました。orz
PIC18F2550のクロック設定
PIC10F322は内部クロック8MHz(デフォールト設定)で動作しています。USB_Controlerもそれに合わせて8MHzの水晶発信器を外部に設けて、Fosc=8MHzで動作させています。USBモジュール用にPLLを有効にして、CPU用は従来通りのクロックを供給するように設定したかったのですが・・・
上図(PIC18F2550のマニュアルから抜粋)の赤線部分(FOSC3:FOSC0)4ビットとセレクタの0/1がどのように対応するのか説明がありません。親族SNS管理人が試した限りでは、PLLを有効にする(FOSC:ECPLL/ECPIO/etc.)とセレクタは1、PLLを無効にする(FOSC:EC/ECIO/etc.)とセレクタは0になるようです。
つまり、PLLを有効にするとCPU用Primary Clockの選択肢は16MHz/24MHz/32MHz/48MHzに限られる(8MHzは選べない)ということです。幸い、Primary Clockに32MHzを選び、TMR2のプリスケーラで1/4に落として、これまでと同じクロック・レートでシリアル通信を行うことが出来ましたが、もう少しでPIC10F322のプログラムに重大な変更を迫られる所でした。(危ない危ない!)
PIC18F2550とパソコンのUSB接続は既に一度試したことがあります(この辺です)。そのプログラム・ソースをそっくり取り込んで、USB_Controlerとパソコン間の通信機能をサクッと確認するつもりでしたが、思う通りには進みませんでした。
USB通信制御について詳しいことは判らないまま、Microchip Solutionライブラリ(USB Device CDC Basic Demo)をPIC18F2550用に書き換えて動かしてみただけなので、上手く動かなかったときに何をどう確認すれば良いか判りません。
”Initialize.cにUSB_DEVICE.Hをインクルードし忘れた(それでもコンパイルは通る)”とか、”USB_HAL_PIC18.Hの設定が合っていなかった”とか、少しずつ、少しずつ合わせ込んでいって、最後にクロックの設定を見直して(以前USB接続を試したときと同じ設定にして)、PIC18F2550とパソコンのUSB接続が出来た”と思ったら、PIC10F322とのシリアル通信が出来なくなっていました。orz
PIC18F2550のクロック設定
PIC10F322は内部クロック8MHz(デフォールト設定)で動作しています。USB_Controlerもそれに合わせて8MHzの水晶発信器を外部に設けて、Fosc=8MHzで動作させています。USBモジュール用にPLLを有効にして、CPU用は従来通りのクロックを供給するように設定したかったのですが・・・
上図(PIC18F2550のマニュアルから抜粋)の赤線部分(FOSC3:FOSC0)4ビットとセレクタの0/1がどのように対応するのか説明がありません。親族SNS管理人が試した限りでは、PLLを有効にする(FOSC:ECPLL/ECPIO/etc.)とセレクタは1、PLLを無効にする(FOSC:EC/ECIO/etc.)とセレクタは0になるようです。
つまり、PLLを有効にするとCPU用Primary Clockの選択肢は16MHz/24MHz/32MHz/48MHzに限られる(8MHzは選べない)ということです。幸い、Primary Clockに32MHzを選び、TMR2のプリスケーラで1/4に落として、これまでと同じクロック・レートでシリアル通信を行うことが出来ましたが、もう少しでPIC10F322のプログラムに重大な変更を迫られる所でした。(危ない危ない!)
|
|
|
コメント 0