Hola yo de nuevo
...
Mi duda ahora es como calcular el porcentaje de error de la UART. para asi poder reducirlo al maximo ajustando el oscilador interno.
Ahorita estoy trabajando con el oscilador interno con PLL:
OSCTUN=0;
Por lo tanto la frecuencia es de
7.37 MhzCLKDIVbits.PLLPRE=4;
Por lo tanto la frecuencia se divide entre
6 y da
1.228 Mhz (dentro del rango correcto de 0.8 a 8 Mhz)
PLLFBD=128;
Por lo tanto la frecuencia se multiplica por
130 y da
159.683 Mhz (dentro del rango correcto de 100 a 200 Mhz)
CLKDIVbits.PLLPOST=0;
Por lo tanto la frecuencia se divide entre
2 y da
79.841 (dentro del rango correcto de 12.5 a 80 Mhz)
Fosc = 79841666.6 Hertz
Fcy=Fosc/2 = 39920833.33 Hertz
Ahora segun tengo entendido "y no se por que (así me la encontré)", la formula para obtener el valor del
UxBRG Baud Rate Generator Prescaler, del que por cierto prácticamente no encontré información en la hoja de datos, es:
((FCY/BAUDRATE)/16)-1
-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
En mi caso empece probando con
9600 baudios y con los valores previos del oscilador me dio:
258.9012587Casi perfecto, uno que otro error, pero casi ninguno, bastante bien.Despues fui aumentando y probe con
57600 y me dio:
42.31687645Todavía rescatable, aunque el porcentaje de error ya se hace notorio como 2% aproxLuego probe con
115200 y la formula me dio:
20.65843822Se me hizo raro por que el cambio fue rotundo, bastante mal podría decir 85 o 90 % de error, quizás masPara el proyecto final, quiero que vaya a
230400 y la formula me da:
9.829219112Casi ningún valor de los que manda son los que llegan, muchísimo error. Igual o peor que con 115200. ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
Como pueden ver hice varias pruebas pero no encuentro alguna relación ni nada, para poder basarme y ajustar los valores para reducir el error, de hecho no se ni como calcularlo.
Alguna sugerencia de que puede ser lo que esta pasando...¿?¿?
Lo que tengo en mente es trabajar con los 230400 baudios con una tasa de error menor al 4% (no tan exigente)
Espero que me ayuden, gracias
______
Estoy usando un dsPIC33FJ12MC202 y un MAX232