¿Cómo calculo los valores del registro de configuración de UART para un dispositivo PIC 24F, en función de la velocidad de transmisión deseada?
Actualmente, el módulo UART tiene 2 valores que afectan la velocidad de transmisión, BRG (registro de 16 bits) y BRGH (indicador de 1 bit). ¿Cómo calculo estos en tiempo de ejecución en el PIC en lugar de tener que hacerlo cada vez manualmente usando Calc?
He intentado escribir el código basado en el enlace a la hoja de datos proporcionada. Por favor revísalo.
// clock speed is 20 Mhz
#define FCY = 20000000
// baudRate - desired baud rate specified in bits per second
void CalcUARTBaudRate(unsigned int baudRate){
// the max baud rate with BRGH=0 is FCY/16
if (baudRate > (FCY / 16)){
// calc BRG with high baud rate (BRGH = 1)
U1MODEbits.BRGH = 1;
BRG = ((FCY / baudRate) / 4) - 1;
}else{
// calc BRG with low baud rate (BRGH = 0)
U1MODEbits.BRGH = 0;
BRG = ((FCY / baudRate) / 16) - 1;
}
}