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;