Luca
In the uTasker project I can do this:
1) Configure two port outputs for test purposes:
extern void fnUserHWInit(void)
{
_CONFIG_DRIVE_PORT_OUTPUT_VALUE(C, (PORTC_BIT3 | PORTC_BIT4), (PORTC_BIT3 | PORTC_BIT4), (PORT_SRE_SLOW | PORT_DSE_HIGH));
}
2) Configure a 100us SYSTICK with high priority:
#define _TICK_RESOLUTION TICK_UNIT_US(100)
#define SYSTICK_PRIORITY 1
3) Configure an input with level sensitive interrupt at lower priority
#define PRIORITY_PORT_A_INT 6
static void fnInitIRQ(void)
{
INTERRUPT_SETUP interrupt_setup; // interrupt configuration parameters
interrupt_setup.int_type = PORT_INTERRUPT; // identifier to configure port interrupt
interrupt_setup.int_handler = test_irq; // handling function
interrupt_setup.int_priority = PRIORITY_PORT_A_INT; // interrupt priority level
interrupt_setup.int_port = PORTA; // the port that the interrupt input is on
interrupt_setup.int_port_bits = PORTA_BIT10; // the IRQ input connecte
interrupt_setup.int_port_sense = (IRQ_LOW_LEVEL | PULLUP_ON);// interrupt is to be low level sensitive
fnConfigureInterrupt((void *)&interrupt_setup); // configure interrupt
}
4) In the SYSTICK interrupt handler I toggle one port each times it enters and in the IRQ handler I toggle the other port on each entry:
static __interrupt void _RealTimeInterrupt(void)
{
_TOGGLE_PORT(C, PORTC_BIT3);
..
}
static void __callback_interrupt test_irq(void)
{
_TOGGLE_PORT(C, PORTC_BIT4);
}
When I run this and press the input with level sensitive input this is the output that is recorded:

As can be seen, the 100us SYSTICK is still executed even when there is a continuous level sensitive interrupt on the input due to the fact that it has a higher interrupt priority and takes priority when both are pending and it also pre-empts the port interrupt handler.
If I then do
#define SYSTICK_PRIORITY 7
the result is

where it is seen that the SYSTICK interrupt is not called any more due to the fact that the port interrupt is always pending and has priority.
Regards
Mark
http://www.utasker.com/services.html