Hola KILLER buenas noches de nuevo, te comento lo que hice en el día de hoy.
Configuré los prescalers de los timers 1 y 2, y el Postcaler del Timer2, también pasé de usar un cristal de 4MHz a uno de 8MHz (Este cambio lo tuve en cuenta para el cálculo de todos los tiempos y demás).
La tabla en cuestión me queda algo así:
const uint8_t tabla[256] = {162,159,.........,17}; (Éstos son los valores que se van a cargar en PR2 para la temporización)
Luego, con el modo captura y Timer1 obtengo las revoluciones, y trabajo solamente con la parte alta del TMR1, que los valores me quedan excelentes desde 11 hasta 244, puedo entrar a la tabla tranquilamente con esos valores. La interrupción me queda así:
if(PIR1bits.CCP1IF == 1)
{
PIR1bits.CCP1IF = 0;
rps = TMR1H;
TMR1 = 0;
}
Por otro lado, dentro del main tengo:
while(1)
{
if(rps > 194 && rps < 244)
{
PR2 = (tabla[rps]);
T2CONbits.TMR2ON = 1;
}
}
En la interrupción del Timer2 envío los pulsos.
Ahora el problema es el siguiente, no me entra mas en la tabla, no se porque motivo. Antes cuando hacía la división si lo hacía, pero se quedaba atrasado. Ahora haciendo esto y evitando la división no entra mas en la tabla directamente, le estoy errando en algo?