MICROCHIPのUSBライブラリにバグあり

正月休みを利用してUSB-MIDIインタフェースをPICで作ろうと試みている。マイクロチップのUSBライブラリにUSB-MIDIのサンプルがあるのでこれとシリアル通信をくっつけてやればできそうなので、とりあえず、USB-MIDIとCDC Serial Emulatorの2つのプロジェクトを組み合わせていたところ、CDC Serial Emulatorの”HardwareProfile – PICDEM FSUSB.h”にバグを見つけてしまった。
なんと、こともあろうにUARTの定数宣言が”HardwareProfile – Low Pin Count USB Development Kit.h”のUARTの定数宣言部分をコピーしているだけなので、ポートの設定がむちゃくちゃです。
これが、コンパイルエラーとかを吐いてくれればすぐわかるのだが、エラーにならないし、下手するとそのままコンパイルして実行しても動くかもしれないというオチまであって、たぶん気がつかないままになっているのだろう。本来ならマイクロチップのフォーラムに投稿すればいいんだろうけど、面倒なのでこっちで勝手に修正して使うことにしよう。
で、やばい部分は以下の部分w
/** RS 232 lines ****************************************************/
#define UART_TRISTx TRISBbits.TRISB7
#define UART_TRISRx TRISBbits.TRISB5
#define UART_Tx PORTBbits.RB7
#define UART_Rx PORTBbits.RB5
#define UART_TRISRTS TRISBbits.TRISB4
#define UART_RTS PORTBbits.RB4
#define UART_TRISDTR TRISBbits.TRISB6
#define UART_DTR PORTBbits.RB6
本来RxやTxはポートC、RTSやDTRはポートAにつながっているので、
/** RS 232 lines ****************************************************/
#define UART_TRISTx TRISCbits.TRISC6
#define UART_TRISRx TRISCbits.TRISC7
#define UART_Tx PORTCbits.RC6
#define UART_Rx PORTCbits.RC7
#define UART_TRISRTS TRISAbits.TRISA3
#define UART_RTS PORTAbits.RA3
#define UART_TRISDTR TRISAbits.TRISA2
#define UART_DTR PORTAbits.RA2
のようになる。
誰か暇な人、フォーラムにアップしてやってくれぃw

  1. トラックバックはまだありません。

コメントを残す

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

WordPress.com ロゴ

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

Twitter 画像

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

Facebook の写真

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

Google+ フォト

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

%s と連携中

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