I bet this is my Saleae probe biting me in the nose again; not being able to run it fast enough.
The interrupt is working faster, I'm probably missing signals.

EDIT: And I notice I didn't align the marker the same way on Probe 1 - Port = 1 / 0, but it's the same interval as described in the WIDTH; 0.250uS, I just rechecked.
Code:
asm
; __CONFIG _CONFIG1H, _FOSC_INTIO67_1H & _PLLCFG_OFF_1H & _PRICLKEN_OFF_1H & _FCMEN_ON_1H & _IESO_OFF_1H
__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
;OSCTUNE = %10000000
DEFINE OSC 64
OSCTUNE = %11000000
OSCCON = %01110000
OSCCON2 = %00000100
INCLUDE "DT_INTS-18.bas"
INCLUDE "ReEnterPBP-18.bas"
INCLUDE "ReEnterPBP-18LP.bas"
INCLUDE "Elapsed_INT-18.bas"
ASM
INT_LIST macro ; IntSource, Label, Type, ResetFlag?
; INT_Handler RX1_INT, _RX1Interrupt, PBP, yes
endm
INT_CREATE ; Creates the interrupt processor
INT_LIST_L macro ; IntSource, Label, Type, ResetFlag?
INT_Handler TMR1_INT, _ClockCount, PBP, yes
endm
INT_CREATE_L ; Creates the Low Priority interrupt processor
ENDASM
ANSELA = %00000000
ANSELB = %00000000
ANSELC = %00000000
ANSELD = %00000000
ANSELE = %00000000
ADCON0 = %00000000
PMD0 = %10111110
PMD1 = %11011111
PMD2 = %00001111
DEFINE USE_LOWPRIORITY 1
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 ; enable Timer 1 interrupts
GOSUB ResetTime ' Reset Time to 0d-00:00:00.00
MainProgram:
PortD.2 = 1
if T1CON.0 = 0 then
GOSUB StartTimer ' Start the Elapsed Timer
PortD.3 = 1
endif
PortD.2 = 0
if ticks = 25 then
PortD.3 = 0
GOSUB StopTimer ' Stop the Elapsed Timer
GOSUB ResetTime ' Reset Time to 0d-00:00:00.00
endif
goto MainProgram
end
Switch bouncing becomes much more pronounced at 64MHz. I think I'm going to change approach and go the long way and use just a 0.1uF ceramic cap on each pin (I remember that helped somewhat on previous tests).
Master PIC @ 64MHz
LED Slave PIC @ 64MHz
Keypad Slave PIC at 16MHz
I start DT Timer on a keypress and ignore inputs during that interval. I just have to make tests to see how fast I can press the same button and tweak the delay.
I wanted to handle both the LEDs and Keypad on the same PIC, but it'll be a lot easier and reliable to just split them up.
Bookmarks