hola, puedo yo de nuevo, ahora q veo q se anoto un monton de gente....
resulta q este es un tema del q ya se escribio bastante, por eso no quise ser tan directo en los puntos q a mi entender causan problemas....
empecemos de a uno...
1. cuando interrumpe el micro y llegas a la instruccion set_rtcc(5); ????? cuanto te piensas q es el valor del tmr0 justo antes q le ponga el famoso 5(cinco) ??? te diria q lo ejecutes paso a paso o q lo emules y te sorprenderas, el compilador pone todo un overhead q uno si no lo mira bien, ni se entera, pero seguramente tendra un valor entre 20 y 50, siendo mas cerca de 50, dependiendo cuantas otras interrupciones utilices, asi q esto es un lindo chiste, ya tienes una valor de 50 y le pones un 5, zassss, un desastre...
2. por eso lo aconsejable si usas algo asi no es resetear el TMR0 , sino corregirlo, teniendo en cuenta q cuando lo esribas, perderas 2 ciclos de maquina, asi q lo mejor es SUMARLE un 5 a lo q ya tiene, porque la realidad es que el TMR0 no tiene un cero , eso ya lo paso hace rato... creo q debes sumarle no 5 sino 3 o 7, fijate bien el las especificaciones....
3. el otro problema q tienes es q usas un divisor por cuatro, entonces en el momento q sumas aun puedes tener un error de 4 en 1000
prueba con esto y cuentanos, veras q el error disminuye, ya no sera tan salvaje y para realmente verlo deberas esmerarte bastante...
Suerte y cuentanos un cacho mas....
perdon releyendo, acabo de racapacitar q si divides por 4 , el trm0 tendra una valor dividido 4 tambien asi q sera entre 5 y 12 aprox..