Microchip PIC24Fの UARTに Software FIFOを実装したシリアルドライバです。 シリアルドライバは、PIC24Fのハードウェア UART 割込 (_U1TXInterrupt, _U2TXInterrupt, _U1RXInterrupt, _U2RXInterrupt) から呼ばれます。また、 2チャンネルの UARTに対して、送信/受信バッファサイズを任意に設定できます。
UARTxは、UART1またはUART2と置き換えてください
libuart.hのマクロを変更してからコンパイルします。
#define UART1_TX_BUFFER_SIZE 128 #define UART1_RX_BUFFER_SIZE 128 #define UART2_TX_BUFFER_SIZE 50 #define UART2_RX_BUFFER_SIZE 70
UARTを初期化します。回路によって TX/RXのピンを変更する場合は、UARTx_init()関数内を変更してください。
送信/受信バッファを両方ともクリアします。
受信バッファから 1バイトを取り出します。バッファが空のときは、-1を返します。
送信バッファへ、1バイトを送ります。バッファが空のときは、-1を返します。
送信バッファへ、複数のバイトを送ります。戻り値はありません。送信に失敗した場合は、途中で途切れます。
整数 -99999 〜 99999を文字列へ変換してから送信バッファへ出力します。戻り値はありません。送信に失敗した場合は、途中で途切れます。
浮動小数点数 -99999.999 〜 99999.999を文字列へ変換してから送信バッファへ出力します。引数 size2で、小数点以下の出力桁数を指定します。戻り値はありません。送信に失敗した場合は、途中で途切れます。
1バイトを 16進数文字列へ変換してから送信バッファへ出力します。戻り値はありません。送信に失敗した場合は、途中で途切れます。
空き送信バッファサイズを取得します。
空き受信バッファサイズを取得します。
送信/受信のサンプルソースコードです。回路図は、OpenSSM Rev.A を想定しています。
#include <p24FJ64GA002.h>
#include "table.h"
#include "libuart.h"
_CONFIG1( JTAGEN_OFF &
GCP_OFF &
GWRP_OFF &
BKBUG_OFF &
WINDIS_OFF &
COE_OFF &
ICS_PGx1 &
FWDTEN_ON &
WDTPS_PS256)
_CONFIG2( IESO_OFF &
FNOSC_FRCPLL &
FCKSM_CSDCMD &
OSCIOFNC_ON &
IOL1WAY_OFF &
I2C1SEL_PRI &
POSCMOD_NONE)
int main(void)
{
int buf;
/* Fosc = 8.96MHz, Fcy = 17.92MHz, Core 35.84MHz */
CLKDIV = 0;
OSCTUN = 0b0000000000011111;
SRbits.IPL = 0;
TRISA = 0b0000000000000011;
TRISB = 0b0000111101100001;
UART1_init(115200);
UART2_init( 4800);
/* 送信受信をループバック. エコー */
while(1){
ClrWdt();
if((buf = UART1_getch()) > 0){
UART1_putch(buf);
}
if((buf = UART2_getch()) > 0){
UART2_putch(buf);
}
}
return(0);
}
コンパイルの確認はしていません (^^;