00001 //****************************************************************************** 00012 //****************************************************************************** 00013 00014 /*_____ I N C L U D E S ____________________________________________________*/ 00015 #include "config.h" 00016 #include "uart/uart_lib.h" 00017 00018 00019 /*_____ G L O B A L D E F I N I T I O N _________________________________*/ 00020 00021 00022 /*_____ D E F I N I T I O N ________________________________________________*/ 00023 00024 00025 00026 #define LBT_MASK ((1<<LBT5)|(1<<LBT4)|(1<<LBT3)|(1<<LBT2)|(1<<LBT1)|(1<<LBT0)) 00027 00028 #define Byte_transfer_enable() { LINCR = (0<<LIN13)|(1<<LENA)|(1<<LCMD2)|(1<<LCMD1)|(1<<LCMD0); } 00029 00030 #define Lin_set_btr_brr(bt,br) { U8 __jacq__; \ 00031 __jacq__ = LINCR; \ 00032 LINCR &= ~(1<<LENA); \ 00033 LINBTR = ((1<<LDISR) | (LBT_MASK & bt)); \ 00034 LINBRRH = (U8)((((((((U32)FOSC*1000)<<1)/(((U32)br)*bt))+1)>>1)-1)>>8); \ 00035 LINBRRL = (U8)(( (((((U32)FOSC*1000)<<1)/(((U32)br)*bt))+1)>>1)-1) ; \ 00036 LINCR = __jacq__; } 00037 00038 #define Lin_rx_response_ready() ( LINSIR & (1<<LRXOK) ) 00039 #define Lin_tx_response_ready() ( LINSIR & (1<<LTXOK) ) 00040 #define Lin_get_data() ( LINDAT ) 00041 #define Lin_set_data(data) ( LINDAT = data ) 00042 00043 #define BITSAMPLING 8 /* 8 samples per bit */ 00044 00045 /*_____ M A C R O S ________________________________________________________*/ 00046 00047 00048 bit uart_test_hit(void) 00049 { 00050 return (Lin_rx_response_ready()); 00051 } 00052 00053 00054 bit uart_init(void) 00055 { 00056 Lin_set_btr_brr(BITSAMPLING,BAUDRATE); 00057 Byte_transfer_enable(); 00058 Lin_set_data(0xFF); 00059 return TRUE; 00060 } 00061 00062 00063 r_uart_ptchar uart_putchar(p_uart_ptchar ch) 00064 { 00065 while (!Lin_tx_response_ready()); 00066 Lin_set_data(ch); 00067 return (ch); 00068 } 00069 00070 00071 00072 00073 r_uart_gtchar uart_getchar(void) 00074 { 00075 while(!Lin_rx_response_ready()); 00076 return Lin_get_data(); 00077 } 00078 00079
1.5.7.1