RS232C非同期通信関数です。PICではUARTと呼ばれますが、一般的にわかりやすいRS232Cとします。
わずらわしRS232Cの通信速度設定は選択するだけです。
関数名 内容 void OpenCOM1(void) COM1ポートをオープン。8ビット、パリティなし、1ストップビット。 void PutcCOM1(unsigned int a) 1文字出力 unsigned int GetcCOM1(void) 1文字入力、入力するまで待ちます。 void PutsCOM1(unsigned char *a) 文字列出力、文字列はNULLターミネート(\0) unsigned int GetsCOM1(unsigned int l, unsigned char *a) 文字列入力、文字数はl、入力がないとタイムアウト。戻り値は入力されなかった文字数 void CloseCOM1(void) COM1ポートをクローズ
- RS232C.hをインクルードしてください。
- 動作クロックに応じてRS232C.cファイル内のFOSC,PLL,FCYを指定してください。
例、7.37MHz Internal RC oscillator, 16x PLL enabled #define FOSC 7372800UL #define PLL 16 #define FCY FOSC*PLL/4- RS232C.cファイル内で転送レートを選択してください。必要なBaudRateをコメントアウトします。
//#define BaudRate 1200 //#define BaudRate 1800 //#define BaudRate 2400 //#define BaudRate 4800 //#define BaudRate 9600 //#define BaudRate 19200 //#define BaudRate 38400 //#define BaudRate 57600 #define BaudRate 115200 //#define BaudRate 230400 //#define BaudRate 460800- トランジスタ技術2007年8月号のdsPIC30F2012では標準UARTピン(U1TX,U1RX)ではなく代替UARTピン(U1ATX,U1ARX)を使用しています。
標準UARTピン使用の場合、RS232C.c内のUART_ALTRX_ALTTX の指定をコメントにしてください。
- 通信条件は一般的な8ビット、パリティなし、1ストップビット固定です。
- UART2をもつdsPIC/PIC24はCOM2を使用できます。
- 内蔵発振の7.37MHzのときはFOSC=7370000ではなくFOSC=7372800としてください。 FOSC=7370000では通信速度を決定する_U1BRGの計算が割り切れなくなり、 小数点以下が切り捨てられるため誤差を生じます。
- 内蔵発振は7.372MHz±2%でキャリブレーション(工場出荷時調整)されています(±0.14744MHz)。
- MPLAB C30 3.11 ではdsPIC30F2012で UART_ALTRX_ALTTX が定義されていないというバグがあります(uart.h内)。
error: 'UART_ALTRX_ALTTX' undeclared (first use in this function)
C30 3.02 では定義されています。一時対策としてRS232C.c内で定義します。
#define UART_ALTRX_ALTTX 0xFFE7
RS232C.zip(C)2009 All rights reserved by Einstein.
- RS232C.h
- RS232C.c
- Sample.c