So I minimized the code:
5 TICK TimerCode:asm __CONFIG _CONFIG1H, _FOSC_INTIO67_1H & _PLLCFG_ON_1H & _PRICLKEN_OFF_1H & _FCMEN_ON_1H & _IESO_OFF_1H __CONFIG _CONFIG2L, _PWRTEN_ON_2L & _BOREN_SBORDIS_2L & _BORV_285_2L __CONFIG _CONFIG2H, _WDTEN_OFF_2H __CONFIG _CONFIG3H, _CCP2MX_PORTC1_3H & _PBADEN_OFF_3H & _CCP3MX_PORTE0_3H & _HFOFST_OFF_3H & _T3CMX_PORTB5_3H & _P2BMX_PORTC0_3H & _MCLRE_EXTMCLR_3H __CONFIG _CONFIG4L, _STVREN_OFF_4L & _LVP_OFF_4L & _XINST_OFF_4L & _DEBUG_OFF_4L endasm DEFINE OSC 16 OSCCON = %01010000 ' R/W 111 = HFINTOSC – (16 MHz) ' 110 = HFINTOSC/2 – (8 MHz) ' 101 = HFINTOSC/4 – (4 MHz) OSCTUNE = %11000000 OSCCON2 = %00000100 INCLUDE "DT_INTS-18.bas" INCLUDE "ReEnterPBP-18.bas" INCLUDE "Elapsed_INT-18.bas" ASM INT_LIST macro ; IntSource, Label, Type, ResetFlag? INT_Handler TMR1_INT, _ClockCount, PBP, yes endm INT_CREATE ENDASM ANSELA = %00000000 ANSELB = %00000000 ANSELC = %00000000 ANSELD = %00000000 ANSELE = %00000000 ADCON0 = %00000000 TRISA = %00000000 TRISB = %00000000 TRISC = %00000000 TRISD = %00000000 TRISE = %00000000 PORTA = %00000000 PORTB = %00000000 PORTC = %00000000 PORTD = %00000000 PORTE = %00000000 pause 100 @ INT_ENABLE TMR1_INT GOSUB ResetTime MainProgram: if T1CON.0 = 0 then PortD.3 = 1 GOSUB StartTimer endif if ticks = 5 then PortD.3 = 0 GOSUB StopTimer ' Stop the Elapsed Timer GOSUB ResetTime ' Reset Time to 0d-00:00:00.00 endif goto MainProgram end
OSC 16MHz (4MHz+PLL) 50ms
OSC 32MHz (8MHz+PLL) 25ms
OSC 64MHz (16MHz+PLL) 12.5ms
I can't help but feel I'm doing something wrong, it's just too proportional a variance. If the Saleae probe would miss pulses, there wouldn't be a regular pattern.




Bookmarks