Please do and post the results.
It's going to be slightly worse on an old 14bit device since they don't have automatic context save/restore like the 18F devices do for high priority interrupts.
/Henrik.
Please do and post the results.
It's going to be slightly worse on an old 14bit device since they don't have automatic context save/restore like the 18F devices do for high priority interrupts.
/Henrik.
Exactly because of that I am sure it will be much worse. Soon...
Ioannis
Finally I did the test on a 16F887 at 8MHz, and came up with a 49 usec to enter ISR and around 45 to exit.
The code I used is this:
It seems that comparing to 25K20, the 887 executes less instructions...? Is it possible?Code:wsave var byte $70 system wsave1 var byte $A0 system wsave2 var byte $120 system wsave3 var byte $1A0 system INCLUDE "DT_INTS-14.bas" INCLUDE "ReEnterPBP.bas" ASM INT_LIST macro ; IntSource, Label, Type, ResetFlag? INT_Handler TMR0_INT, _TimezUp, PBP, yes endm INT_CREATE ; Creates the interrupt processor ENDASM TRISB = %00000000 ' PortB.0 and PortB.1 are outputs. @ INT_ENABLE TMR0_INT ; Enable INT0 interrupts Main: portB.4 = !portb.4 ' Toggle PortB.1 as fast as we can Goto Main TimezUp: ' Create a short pulse on PortB.0 portb.5 = 1 PAUSEUS 15 portB.5 = 0 @ INT_RETURN
Ioannis
Last edited by Ioannis; - 28th August 2016 at 10:50.
Apparently....It seems that comparing to 25K20, the 887 executes less instructions...? Is it possible?
First of all, as pedja pointed out, the number of instructions will vary slightly depending on what commands are being used by the actual code. DT-Ints saves many variables by default and some more if they're being defined. DT-Ints 14 seems to allocate 41 bytes for storing context (including W, STATUS, PCLATH and FSR) while DT-Ints 18 allocates 68 bytes.
Out of the 68 bytes allocated 22 is never used if LONGs are NOT enabled. So if I'm not mistaken worst case for 14bit devices is 41 bytes and for 16bit devices (without LONGs) it's 46 bytes so yeah...I don't think there's anything wrong with your test.
What surprised me a bit though is that the entry is slower than the exit, while on the 18F it's the other way around. Also, in order to be truly accurate you really need to count instructions in the listing since measuring it like this can cause it to differ a couple of instructions. But visualizing it like this is easier :-)
/Henrik.
I tested and measured it many times and it was consistent exactly as you observed. Entry always takes longer.
Ioannis
Bookmarks