トップページ > dsPIC入門 >

UART_ALTRX_ALTTXのバグ

コンパイルエラーになってしまう場合・・・

dsPIC30F4012を使ってUARTのプログラムを書いて、そのままコンパイルするとエラーになることがあります。 エラーメッセージを見ると「UART_ALTRX_ALTTXが定義されていません」という記述があります。 ちゃんとデバイスのライブラリ・ファイルを読み込むように指定して、uart.hもインクルードしているのに おかしいなぁ・・・と思うところですが、どうやらこれはC30コンパイラのバグのようです。 また、このバグによるトラブルは全てのPCで発生するわけではなく、同じバージョンのC30であるにも関わらず あるPCでは正常にコンパイルできて別のPCではコンパイルエラーになったりします。

これを解決するには、 “#define UART_ALTRX_ALTTX 0xFFE7” をソースファイルの最初のほうに書き足します。 とりあえずこれでコンパイルが可能になり、正常に代替ピンを使ったUARTが動作します。

こんな感じです

//====================================================================

//コンフィギュレーション
_FOSC(CSW_FSCM_OFF & XT_PLL8);     //10MHzセラロックを使っているのでクロックは80MHz。
_FWDT(WDT_OFF);
_FBORPOR(PBOR_ON & BORV_20 & PWRT_64 & MCLR_EN);
_FGS(CODE_PROT_OFF);


//自分で定義しておきます

#define UART_RX_TX       0xFBE7
#define UART_ALTRX_ALTTX 0xFFE7


//UARTのコンフィグ

unsigned int config1 = UART_EN & UART_IDLE_CON & UART_ALTRX_ALTTX & UART_NO_PAR_8BIT & UART_1STOPBIT
                     & UART_DIS_WAKE & UART_DIS_LOOPBACK & UART_DIS_ABAUD;

unsigned int config2 = UART_INT_TX_BUF_EMPTY & UART_TX_PIN_NORMAL & UART_TX_ENABLE & UART_INT_RX_CHAR 
                     & UART_ADR_DETECT_DIS & UART_RX_OVERRUN_CLEAR;






前へ   戻る