Quiero contar microsegundos entre el temporizador ON / OFF. Mi FOSC es de 48 MHz. Descubrí que timer1 tendría que ser inicializado como (estoy programando en mplab):
// Freq = 1000000.00 Hz - Period = 0.000001 seconds
T1CONbits.T1CKPS1 = 0; // Prescaler rate
T1CONbits.T1CKPS0 = 0; // 1:1
T1CONbits.T1OSCEN = 1; // Oscillator enable control bit 1 = on
T1CONbits.T1SYNC = 1; // External Clock Input Synchronization Control bit...1 = Do not synchronize
T1CONbits.TMR1CS = 0; // Timer1 Clock Source Select bit...0 = Internal clock (FOSC/4)
T1CONbits.TMR1ON = 0; // disable timer
TMR1H = 255; // preset for MSB register
TMR1L = 253; // preset for LSB register
Y luego la sincronización:
T1CONbits.TMR1ON = 1;
... some work ...
T1CONbits.TMR1ON = 0;
us = (TMR1H<<8) + (TMR1L);
No está funcionando correctamente. Probablemente debido al desbordamiento del temporizador. ¿Cómo trato con esto correctamente?