マクロ定義 | 関数

C:/PIC/OpenSSM/libuart.h

このグラフは、どのファイルから直接、間接的にインクルードされているかを示しています。

ソースコードを見る。

マクロ定義

#define UART1_TX_BUFFER_SIZE   60
#define UART1_RX_BUFFER_SIZE   8
#define UART2_TX_BUFFER_SIZE   50
#define UART2_RX_BUFFER_SIZE   68

関数

void UART1_init (unsigned long baud)
void UART1_buf_clear (void)
int UART1_getch (void)
int UART1_putch (unsigned char buf)
void UART1_putstr (char *buf)
void UART1_putint (int digit)
void UART1_putdouble (double digit, unsigned char size2)
void UART1_puthex (unsigned char a)
unsigned char UART1_get_sendbuf (void)
unsigned char UART1_get_recvbuf (void)
void UART2_init (unsigned long baud)
void UART2_buf_clear (void)
int UART2_getch (void)
int UART2_putch (unsigned char buf)
void UART2_putstr (char *buf)
void UART2_putint (int digit)
void UART2_putdouble (double digit, unsigned char size2)
void UART2_puthex (unsigned char a)
unsigned char UART2_get_sendbuf (void)
unsigned char UART2_get_recvbuf (void)
unsigned int UART_get_brg (unsigned long baud)
unsigned long UART1_get_baud (void)
unsigned long UART2_get_baud (void)

マクロ定義

#define UART1_RX_BUFFER_SIZE   8

libuart.h26 行で定義されています。

参照元 UART1_get_recvbuf(), と UART1_getch().

#define UART1_TX_BUFFER_SIZE   60

libuart.h25 行で定義されています。

参照元 UART1_get_sendbuf(), と UART1_putch().

#define UART2_RX_BUFFER_SIZE   68

libuart.h28 行で定義されています。

参照元 __attribute__(), UART2_get_recvbuf(), と UART2_getch().

#define UART2_TX_BUFFER_SIZE   50

libuart.h27 行で定義されています。

参照元 UART2_get_sendbuf(), と UART2_putch().


関数

void UART1_buf_clear ( void   ) 

libuart.c216 行で定義されています。

参照先 uart1_rx_enptr, uart1_rx_stptr, uart1_tx_enptr, と uart1_tx_stptr.

参照元 SSM_init(), と UART1_init().

呼出しグラフ:

unsigned long UART1_get_baud ( void   ) 

libuart.c521 行で定義されています。

参照先 cpu_fcy.

{
    return( (unsigned long)(cpu_fcy[ OSCTUN ] >> 2) / (unsigned long)(U1BRG + 1));
}

unsigned char UART1_get_recvbuf ( void   ) 
unsigned char UART1_get_sendbuf ( void   ) 

libuart.c484 行で定義されています。

参照先 UART1_TX_BUFFER_SIZE, uart1_tx_enptr, と uart1_tx_stptr.

参照元 CONFIG_dump_config().

呼出しグラフ:

int UART1_getch ( void   ) 

libuart.c242 行で定義されています。

参照先 uart1_rx_buf, UART1_RX_BUFFER_SIZE, uart1_rx_enptr, と uart1_rx_stptr.

{
    unsigned char buf;
    unsigned char nxptr;
    unsigned char ipl;

    ipl = SRbits.IPL;
    SRbits.IPL = 5;
    Nop();

    /* バッファが空 */
    if(uart1_rx_stptr == uart1_rx_enptr){
        SRbits.IPL = ipl;
        return(-1);
    }

    /* バッファから1byte取り出す */
    buf = uart1_rx_buf[ uart1_rx_stptr ];

    /* ポインタ更新 */
    nxptr = uart1_rx_stptr + 1;
    if(nxptr >= UART1_RX_BUFFER_SIZE) nxptr = 0;
    uart1_rx_stptr = nxptr;

    SRbits.IPL = ipl;
    return(buf);
}

void UART1_init ( unsigned long  baud  ) 

libuart.c165 行で定義されています。

参照先 UART1_buf_clear(), と UART_get_brg().

参照元 main(), と SSM_main().

{
    RPINR18bits.U1RXR = 5;              /* RXD : RP5 */
    RPOR2bits.RP4R = 3;                 /* TXD : RP4 */

    U1MODE = 0b1000100000001000;
    U1STA  = 0b0010010000000000;
    U1BRG  = UART_get_brg(baud);

    /* 送信割込 */
    IPC3bits.U1TXIP = 3;
    IEC0bits.U1TXIE = 1;
    IFS0bits.U1TXIF = 0;

    /* 受信割込 */
    IPC2bits.U1RXIP = 4;
    IEC0bits.U1RXIE = 1;
    IFS0bits.U1RXIF = 0;

    UART1_buf_clear();
    return;
}

関数の呼び出しグラフ:

呼出しグラフ:

int UART1_putch ( unsigned char  buf  ) 

libuart.c302 行で定義されています。

参照先 uart1_tx_buf, UART1_TX_BUFFER_SIZE, uart1_tx_enptr, と uart1_tx_stptr.

参照元 CONFIG_dump_config(), UART1_putdouble(), UART1_puthex(), UART1_putint(), と UART1_putstr().

{
    unsigned char nxptr;
    unsigned char ipl;

    ipl = SRbits.IPL;
    SRbits.IPL = 4;
    Nop();

    if(uart1_tx_stptr == uart1_tx_enptr){
        while(!U1STAbits.TRMT);
        U1TXREG = buf;
        SRbits.IPL = ipl;
        return(buf);
    }

    nxptr = uart1_tx_enptr + 1;
    if(nxptr >= UART1_TX_BUFFER_SIZE) nxptr = 0;
    if(uart1_tx_stptr == nxptr){
        SRbits.IPL = ipl;
        return(-1);
    }

    /* 送信バッファに1文字入れる */
    uart1_tx_buf[uart1_tx_enptr] = buf;
    uart1_tx_enptr = nxptr;

    SRbits.IPL = ipl;
    return(buf);
}

呼出しグラフ:

void UART1_putdouble ( double  digit,
unsigned char  size2 
)

libuart.c422 行で定義されています。

参照先 abs, と UART1_putch().

{
    if(digit < 0) UART1_putch('-');

    digit = abs(digit);

    if(digit > 9999) UART1_putch('0' + (unsigned char)(digit / 10000) % 10);
    if(digit >  999) UART1_putch('0' + (unsigned char)(digit /  1000) % 10);
    if(digit >   99) UART1_putch('0' + (unsigned char)(digit /   100) % 10);
    if(digit >    9) UART1_putch('0' + (unsigned char)(digit /    10) % 10);
    UART1_putch('0' + (unsigned char)digit % 10);
    UART1_putch('.');
    UART1_putch('0' + (unsigned int)(digit * 10.0) % 10);
    if(size2 > 1)   UART1_putch('0' + (unsigned int)(digit *   100.0) % 10);
    if(size2 > 2)   UART1_putch('0' + (unsigned int)(digit *  1000.0) % 10);
    if(size2 > 3)   UART1_putch('0' + (unsigned int)(digit * 10000.0) % 10);

    return;
}

関数の呼び出しグラフ:

void UART1_puthex ( unsigned char  a  ) 

libuart.c466 行で定義されています。

参照先 hex, と UART1_putch().

参照元 CONFIG_dump_config().

{
    UART1_putch(hex[(a >> 4)    & 0x0f]);
    UART1_putch(hex[ a          & 0x0f]);
    return;
}

関数の呼び出しグラフ:

呼出しグラフ:

void UART1_putint ( int  digit  ) 

libuart.c392 行で定義されています。

参照先 abs, と UART1_putch().

{
    if(digit < 0) UART1_putch('-');

    digit = abs(digit);

    if(digit > 9999) UART1_putch('0' + digit / 10000 % 10);
    if(digit >  999) UART1_putch('0' + digit /  1000 % 10);
    if(digit >   99) UART1_putch('0' + digit /   100 % 10);
    if(digit >    9) UART1_putch('0' + digit /    10 % 10);

    UART1_putch('0' + digit % 10);
    return;
}

関数の呼び出しグラフ:

void UART1_putstr ( char *  buf  ) 

libuart.c368 行で定義されています。

参照先 UART1_putch().

{
    while(*buf){
        while(UART1_putch(*buf) < 0);
        *buf++;
    }

    return;
}

関数の呼び出しグラフ:

void UART2_buf_clear ( void   ) 

libuart.c227 行で定義されています。

参照先 uart2_rx_enptr, uart2_rx_stptr, uart2_tx_enptr, と uart2_tx_stptr.

参照元 SSM_init(), と UART2_init().

呼出しグラフ:

unsigned long UART2_get_baud ( void   ) 

libuart.c526 行で定義されています。

参照先 cpu_fcy.

{
    return( (unsigned long)(cpu_fcy[ OSCTUN ] >> 2) / (unsigned long)(U2BRG + 1));
}

unsigned char UART2_get_recvbuf ( void   ) 
unsigned char UART2_get_sendbuf ( void   ) 
int UART2_getch ( void   ) 

libuart.c270 行で定義されています。

参照先 uart2_rx_buf, UART2_RX_BUFFER_SIZE, uart2_rx_enptr, と uart2_rx_stptr.

{
    unsigned char buf;
    unsigned char nxptr;
    unsigned char ipl;

    ipl = SRbits.IPL;
    SRbits.IPL = 5;
    Nop();

    /* バッファが空 */
    if(uart2_rx_stptr == uart2_rx_enptr){
        SRbits.IPL = ipl;
        return(-1);
    }

    /* バッファから1byte取り出す */
    buf = uart2_rx_buf[ uart2_rx_stptr ];

    /* ポインタ更新 */
    nxptr = uart2_rx_stptr + 1;
    if(nxptr >= UART2_RX_BUFFER_SIZE) nxptr = 0;
    uart2_rx_stptr = nxptr;

    SRbits.IPL = ipl;
    return(buf);
}

void UART2_init ( unsigned long  baud  ) 

libuart.c189 行で定義されています。

参照先 UART2_buf_clear(), と UART_get_brg().

参照元 main(), と SSM_main().

{
    RPINR19bits.U2RXR = 6;              /* RXD : RP6 */
    RPOR3bits.RP7R = 5;                 /* TXD : RP7 */

    U2MODE = 0b1000100000001000;
    U2STA  = 0b0010010000000000;
    U2BRG  = UART_get_brg(baud);

    /* 送信割込 */
    IPC7bits.U2TXIP = 3;
    IEC1bits.U2TXIE = 1;
    IFS1bits.U2TXIF = 0;

    /* 受信割込 */
    IPC7bits.U2RXIP = 4;
    IEC1bits.U2RXIE = 1;
    IFS1bits.U2RXIF = 0;

    UART2_buf_clear();
    return;
}

関数の呼び出しグラフ:

呼出しグラフ:

int UART2_putch ( unsigned char  buf  ) 

libuart.c333 行で定義されています。

参照先 uart2_tx_buf, UART2_TX_BUFFER_SIZE, uart2_tx_enptr, と uart2_tx_stptr.

参照元 UART2_putdouble(), UART2_puthex(), UART2_putint(), と UART2_putstr().

{
    unsigned char nxptr;
    unsigned char ipl;

    ipl = SRbits.IPL;
    SRbits.IPL = 4;
    Nop();

    if(uart2_tx_stptr == uart2_tx_enptr){
        while(!U2STAbits.TRMT);
        U2TXREG = buf;
        SRbits.IPL = ipl;
        return(buf);
    }

    nxptr = uart2_tx_enptr + 1;
    if(nxptr >= UART2_TX_BUFFER_SIZE) nxptr = 0;
    if(uart2_tx_stptr == nxptr){
        SRbits.IPL = ipl;
        return(-1);
    }

    /* 送信バッファに1文字入れる */
    uart2_tx_buf[uart2_tx_enptr] = buf;
    uart2_tx_enptr = nxptr;

    SRbits.IPL = ipl;
    return(buf);
}

呼出しグラフ:

void UART2_putdouble ( double  digit,
unsigned char  size2 
)

libuart.c442 行で定義されています。

参照先 abs, と UART2_putch().

{
    if(digit < 0) UART2_putch('-');

    digit = abs(digit);

    if(digit > 9999) UART2_putch('0' + (unsigned char)(digit / 10000) % 10);
    if(digit >  999) UART2_putch('0' + (unsigned char)(digit /  1000) % 10);
    if(digit >   99) UART2_putch('0' + (unsigned char)(digit /   100) % 10);
    if(digit >    9) UART2_putch('0' + (unsigned char)(digit /    10) % 10);
    UART2_putch('0' + (unsigned char)digit % 10);
    UART2_putch('.');
    UART2_putch('0' + (unsigned int)(digit * 10.0) % 10);
    if(size2 > 1)   UART2_putch('0' + (unsigned int)(digit *   100.0) % 10);
    if(size2 > 2)   UART2_putch('0' + (unsigned int)(digit *  1000.0) % 10);
    if(size2 > 3)   UART2_putch('0' + (unsigned int)(digit * 10000.0) % 10);

    return;
}

関数の呼び出しグラフ:

void UART2_puthex ( unsigned char  a  ) 

libuart.c473 行で定義されています。

参照先 hex, と UART2_putch().

{
    UART2_putch(hex[(a >> 4)    & 0x0f]);
    UART2_putch(hex[ a          & 0x0f]);
    return;
}

関数の呼び出しグラフ:

void UART2_putint ( int  digit  ) 

libuart.c407 行で定義されています。

参照先 abs, と UART2_putch().

{
    if(digit < 0) UART2_putch('-');

    digit = abs(digit);

    if(digit > 9999) UART2_putch('0' + digit / 10000 % 10);
    if(digit >  999) UART2_putch('0' + digit /  1000 % 10);
    if(digit >   99) UART2_putch('0' + digit /   100 % 10);
    if(digit >    9) UART2_putch('0' + digit /    10 % 10);

    UART2_putch('0' + digit % 10);
    return;
}

関数の呼び出しグラフ:

void UART2_putstr ( char *  buf  ) 

libuart.c378 行で定義されています。

参照先 UART2_putch().

{
    while(*buf){
        while(UART2_putch(*buf) < 0);
        *buf++;
    }

    return;
}

関数の呼び出しグラフ:

unsigned int UART_get_brg ( unsigned long  baud  ) 

libuart.c516 行で定義されています。

参照先 cpu_fcy.

参照元 UART1_init(), と UART2_init().

{
    return( ((cpu_fcy[ OSCTUN ] >> 2) / baud) - 1 );
}

呼出しグラフ: