Sorry,but __disable_irq() does nothing?

wfrancis wrote on Monday, July 06, 2009:

In the FreeRTOS ARM7_LPC2129_Keil_RVDS port, we use

#define portDISABLE_INTERRUPTS()    __disable_irq()                   
#define portENABLE_INTERRUPTS()    __enable_irq()

but a fact is that __disable_irq() and __enable_irq() can not be called from the user mode.It seems they dont function correctly, the irq is not disabled after call to portDISABLE_INTERRUPTS() or portENABLE_INTERRUPTS().
plz help me about this…

Regards.

wFrancis

rtel wrote on Monday, July 06, 2009:

Tasks run in System mode, so the interrupt masks can be accessed.

Regards.

wfrancis wrote on Monday, July 06, 2009:

Thanks for your kindly reply!
However , I found that the watchdog timer not work well with the __disable_irq().It seems that the wdt resets the whole system even if I feed it in the task using __disable_irq() and __enable_irq() to ensure the feed is successful.

void wdtFeed(void)
{
    __disable_irq();
    WDFEED = 0xAA;
    WDFEED = 0x55;
    __enable_irq();
}

void wdtInit(uint tms)
{
    __disable_irq();
    WDTC = (ulong)(tms * configCPU_CLOCK_HZ / 4 / 1000);
    WDMOD = 0x03;
    WDFEED = 0xAA;
    WDFEED = 0x55;
    __enable_irq();
}

What 's up?Can you guide me?

Regards!
wFrancis