Hola de nuevo, ya ando por acá otra vez

Replanté todo desde el inicio. Creo que voy a usar el captura del CCP para hacer esto, si no funciona utilizaré la opción de interrupción por RB0.
Tengo dos dudas que me paran en seco:
Midiendo el periodo la resolución (varía según las RPM del motor) a 5000 RPM con un PIC de 20 MHz es de 0.07 RPM, y la actualización es cada 60/RPM+5mseg, por lo cual con un motor girando a 10000RPM tienes facilmente 91 actualizaciones cada segundo.
¿De dónde sale ese 0.07 RPM y esas 91 actualizaciones?
La otra duda es con respecto al tiempo del Timer1.
*Se supone que activo el captura para flancos positivos.
*Se activa la interrupción del CCP1IF cuando existe un flanco positivo en CCP1 (o RC2), la cual captura el valor de los 16 bits de TMR1 en CCPR1. Esto no me interesa.
Aquí activo el TMR1 para que cuente sincronizado con el reloj interno.
*Espero a que se active de nuevo CCP1IF y ahora si, tomo el valor de CCPR1. Existió una transición completa de flanco positivo a flanco positivo.
Con preescalador a 1:1 y 20 Megas
La cuestión viene en el tiempo del reloj interno; si fosc/4 = frecuencia de cada instrucción con la que se incremetará el TMR1 entonces:
(20 MHz/4)= 5 MHz = 0.2 µsegundos.
Aquí es donde la puerca torció el rabo (como se dice aquí en México); aqui es donde tengo la duda:
(5 M*60) = 300 M
(300 M/máximo y mínimo conteo del TMR1)--> (300M/65535)= ¿4577.7 RPM mínimo? ¿300 Mega RPM máximo?
Con preescalador 1:8 y 20 Megas
5 MHz/8= 625,000 Hz =1.6 µsegundos.
(625 k)(60)= 37.5 M
(37.5 M/65535)= ¿572.21 RPM?
Con preescalador a 1:1 y 4 Megas
(4 MHz/4)= 1 MHz = 1 µsegundo.
(1 M*60) = 60 M
(60 M/máximo y mínimo conteo del TMR1)--> (60M/65535)= ¿915.74 RPM mínimo? ¿60 Mega RPM máximo?
Con preescalador 1:8 y 4 Megas
1 MHz/8= 125,000 Hz = 8 µsegundos.
(125 k)(60)= 7.5 M
(7.5 M/65535)= ¿114.44 RPM?
No lo sé, creo que debo poner un cristal de 32 kHz en T1OS0 y T1OS1...... creo que estoy algo perdido

Estas personas ya salieron de vacaciones, dejaron el muestreo a 20 segundos y multiplicaron por 3. Su resolución fue entonces de 3 pero a expensas de un periodo de muestreo prolongado.
Edición: ando leyendo esto www1.cs.columbia.edu/~sedwards/classes/2005/4840/reports/Shifter.pdf
y esto
http://www.vermontficks.org/dtachc.htm La primera es ensamblador y la segunda es en C (CCS).
Ensamblador le entiendo mas que en C pero tratan lo mismo de captura cada nivel alto de RC0.
Seguiré buscando.