PIC16F1455でUSBデバイスをつくる(その2)

USB用マイコンPIC16F145xについて、昨年末にCDCデバイスで実験したのだが、マイクロチップのライブラリのバージョンが上がっているので少しは改善されているかチェックしてみた。

ライブラリは最新として2013-02-15バージョンのものを使用する。PIC16F145x関連のサポートが充実したらしいが、相変わらずMPLAB8のMCPプロジェクトがないのでPIC18F14K50のものを直して使うことにするが、変更点は、コンパイラをXC8に、チップをとりあえずf1459に、ヘッダファイルをF1459用に、リンカファイルを削除することである。

とりあえず、DTRなどのカスタマイズをしないのであればコンパイルは成功してできているように見える。ただし、このままではほとんどの人は動作しないと思われる。デフォルトでは外部OSCを使用するようになっているためで、まずは以下の部分を修正する。

・HardwareProfile – LPC USB Development Kit – PIC16F1459.hの
#define USE_INTERNAL_OSC
がコメントアウトされているのではずして有効にする。

通常のシリアルコンバータであればこれでOKとなる。

次にF1455用にカスタマイズする。先ほどのプロジェクトでチップをF1455にしただけではコンパイルできない。想定がすべてF1459となっているためで、

#if defined (_16F1459)

と記述されているところは要注意である。F1459特有のものもあるのですべてとは言えないのが痛いところで、内容をチェックしながら、必要なところにはf1455の記述を追加していく。

・HardwareProfile.hの_16F1459のみチェックしている箇所を以下のように修正
#if defined(_PIC14E)
#if defined (_16F1459) || defined (_16F1455)

・main.cのUARTポートの初期化部分でANSB5を参照しているので1459の時のみ初期化する
(1455ではRC5にアナログ機能がないので初期化不要)
#if defined(_16F1459)
ANSELBbits.ANSB5 = 0;   //Make RB5 digital
#endif

前回指摘したその他の部分(usb_function_cdc.cなど)は修正されているので、単なるシリアルコンバータであればf1455対策は終了となる。ずいぶん楽になったもんだ。

次にPicoBasicなどのDTRを使用するためのカスタマイズとしては・・・

・DTRでPicoBasicなどをリセットをするための処理としてusb_config.hの
#define USB_CDC_SUPPORT_DTR_SIGNALINGを有効にする
#define USB_CDC_DTR_ACTIVE_LEVEL    1に変更する(通常のRS232Cは0)

・LPCデモボードのLEDを制御しているポートがDTRのポートと競合しているのでLED処理させないようにする。HardwareProfile – LPC USB Development Kit – PIC16F1459.hの

#define mInitAllLEDs()      ;//LATC &= 0xF0; TRISC &= 0xF0;
#define mLED_2             LATCbits.LATC2    // DTRはC3なので差し障りのないC2にしておく

以上の処理を施し完成した1455用のHexファイルはこれ。

USBserial1455-2.hex(DL時に拡張子をhexに変更してください)

DTRでリセットするのでArduinoなどのシリアルコンバータとしても使えるのではないかと思うが、使ったことがないので詳細は不明。とりあえず、PicoBasic用としてはOK!回路図、その他は前回の記事を参照のこと

    • じじじ
    • 2013年 6月 19日

    こんにちは

    私も1455サンプル取り寄せて遊んでいます
    ICD3で書き込んでいるんですが、これでもDEVICE IDが読み出せないですね。まあ直接指定で書けるので影響ありませんが。
    HIDキーボードにしてPCからの操作でキーボード入力できるコード書いて遊んでいます。
    フラッシュメモリに余裕があるしUSBブートローダが欲しいです。

  1. DEV IDが読めないとのことですが、当方でもPICkit3で5Vを供給すると失敗することがあり、4.5Vまで落とすとうまくいったりします。その辺に問題があるのかもしれません。
    ところで、やはりこのチップは様々なHIDデバイスを作るところに意味があると思うのでいろいろ試してみたいところです。
    海外ではブートローダを組み込んでやっている人がいるみたいですが、マイクロチップのライブラリが大きいので別のライブラリを使っているみたいです。この辺はまだまだ情報収集しきれていません。小型のブートローダやライブラリが揃ってくると、さらに夢が広がりますね。

コメントを残す

以下に詳細を記入するか、アイコンをクリックしてログインしてください。

WordPress.com ロゴ

WordPress.com アカウントを使ってコメントしています。 ログアウト / 変更 )

Twitter 画像

Twitter アカウントを使ってコメントしています。 ログアウト / 変更 )

Facebook の写真

Facebook アカウントを使ってコメントしています。 ログアウト / 変更 )

Google+ フォト

Google+ アカウントを使ってコメントしています。 ログアウト / 変更 )

%s と連携中

%d人のブロガーが「いいね」をつけました。