Hola estoy realizando un programa en c18 para el pic18f97j60 en el que el pic envia y recibe datos por puerto serie. Los datos enviados al pic se transmiten desde un PC. En el pc el baudrate es 115200 y en el pic tengo el siguiente código:
// Initilize UART
BAUD_RATE = 115200;
TXSTA = 0x20;
RCSTA = 0x90;
#define CLOSEST_SPBRG_VALUE ((GetPeripheralClock()+2ul*BAUD_RATE)/BAUD_RATE/4-1)
#define BAUD_ACTUAL (GetPeripheralClock()/(CLOSEST_SPBRG_VALUE+1))
#if (BAUD_ACTUAL > BAUD_RATE)
#define BAUD_ERROR (BAUD_ACTUAL-BAUD_RATE)
#else
#define BAUD_ERROR (BAUD_RATE-BAUD_ACTUAL)
#endif
#define BAUD_ERROR_PRECENT ((BAUD_ERROR*100+BAUD_RATE/2)/BAUD_RATE)
#if BAUD_ERROR_PRECENT > 2
// Use high speed (Fosc/4) 16-bit baud rate generator
BAUDCONbits.BRG16 = 1;
TXSTAbits.BRGH = 1;
SPBRGH = ((GetPeripheralClock()+BAUD_RATE/2)/BAUD_RATE-1)>>8 & 0xFF;
SPBRG = ((GetPeripheralClock()+BAUD_RATE/2)/BAUD_RATE-1) & 0xFF;
#else
// See if we can use the high baud (Fosc/16) 8-bit rate setting
#if ((GetPeripheralClock()+2*BAUD_RATE)/BAUD_RATE/4 - 1) <= 255
SPBRG = (GetPeripheralClock()+2*BAUD_RATE)/BAUD_RATE/4 - 1;
TXSTAbits.BRGH = 1;
#else // Use the low baud rate 8-bit setting
SPBRG = (GetPeripheralClock()+8*BAUD_RATE)/BAUD_RATE/16 - 1;
#endif
#endif
// Use high priority interrupt
IPR1bits.TXIP = 1;
IPR1bits.RCIP = 1;
Mi duda es la siguiente:
Aunque en el PIC se establezca baudrate = 11500 ¿cual es la transmisión en bits por segundo?
No entiendo muy bien el código de inicialización del puerto serie en el PIC.
¿Alguien me prodría ayudar?
GRACIAS