Hola amigos de TodoPIC, pues bien, me he dado a la tarea de [intentar] migrar a el compilador XC8 y dejar ya lo mas lejor posible el CCS, aunque el camino ha sido dificil (y aun lo es
) he dado mis primeros pasos
, pero bueeeno, ahora estoy haciendome unas pequeñas funciones para trabajar la comunicacion rs232 con el 16f628a y ya he logrado la RX-TX pero ahora quiero hacer mis funciones mas dinamicas, por ejemplo, la que configura la precarga del registro SPBRG, mi idea es implementar la formula que hay en el datasheet en codigo para asi no tener que hacer yo el calculo siempre (medio flojo uno
), pero veo que tengo problemas con las operaciones con punto flotante, y no se si lo ando haciendo mal o hay algun problema con el compilador, he leido por ahi problemas con printf y sprintf (este ultimo lo he comprobado por mi mismo, una lastima) pero no se si sea un bug lo que me acarrea mi problema o una real tonteria (espero sea esto ultimo
), el codigo que he implementado es el siguiente:
#define _XTAL_FREQ 4000000
#define RS232_BAUD 9600
....
SPBRG = (char) ( (_XTAL_FREQ/(16*RS232_BAUD)) -1); //Despejado de la formula: Baud Rate = FOSC/(16(X+1))
....
el resultado (a duras penas puedo depurar por el detalle del mplabx y el .cof), puedo ver que SPBRG carga con 176 cuando la operacion deberia arrojar 25, lo he probado con Code::Blocks para ver si tenia algun detalle de casting pero ha dado el resultado correcto (25), espero alguien pueda ayudarme, saludos y gracias de antemano
.