/*- L10_LIN Exemplu de control interfata seriala UART1 pentru transmisie informatii sincronizare protocol LIN ( Local Interconect Network). Inf. sincronizare consta din 13 biti in zero logic urmati de caracterul 0x55. La receptie, cu aceste informatii se poate seta automat viteza de transfer. Transmisia este conectata la pinul 17 - RP8 iar receptia este realizata prin intermediul pinului 19 - RP9. */ #include _FGS(GWRP_OFF & GCP_OFF); // desactivare protectie cod _FOSCSEL(FNOSC_FRCPLL); // sursa interna ,fast RC cu PLL _FOSC(FCKSM_CSECMD & OSCIOFNC_ON & POSCMD_NONE&IOL1WAY_ON); _FWDT(FWDTEN_OFF); void UART1IO( void ) // mapare pini Tx/Rx { OSCCONbits.IOLOCK=0; //activare scriere in reg. remapare I/O RPINR18bits.U1RXR=9; // RX este conectat la pinul RP9 RPOR4bits.RP8R= 3; // Tx este conectat la pinul RP8 OSCCONbits.IOLOCK=1; // desactivare scriere in reg. remapare I/O } void sync(void) // trasnsmisie caracter test { U1BRG=49; // viteza 9600, pt, cuart de 7,6 mhz U1MODEbits.UARTEN=1; // activare UART1 U1STAbits.UTXEN=1 ; // activare buffer pin Tx U1STAbits.UTXBRK=1 ; // Insereaza 12 biti in zero while(U1STAbits.TRMT==1) U1TXREG=0x03; // are semnificatie de ID U1STAbits.UTXBRK=0 ; // secventa sync } void main (void) { UART1IO(); //configurare pini for (;;) // bucla infinita { // pt. vizualizare cu oscil. sync(); } }