Yahoo Groups archive

Lpc2000

Index last updated: 2026-04-28 23:31 UTC

Thread

Disabling interrupts using VICIntEnClear / VICIntEnable

Disabling interrupts using VICIntEnClear / VICIntEnable

2005-10-05 by smoutpatrick

Hi,

to protect a shared data area against simultanous access by an 
interrupt
routine and a main task, I'm using the VICIntEnClear / VICIntEnable
registers. I intentionally don't wanna disable all the interrupts 
because
this would cause too much latency for other interrupts.
However, due to the pipelined instructions, one cannot guarantee that 
no
interrupt occures just after it was disabled by a write to the 
VICIntEnClear
register.
I suppose that I can place a few dummy instructions right after the
instruction that writes the VICIntEnClear register to prevent 
simultanous
access but I'm not sure how many clock cycles this delay must be. The
technical manual of the PrimeCell Vectored Interruptcontroller 
mentions a
worst case scenario of 13 cycles ( Interrupt synchronization + Worst 
case
Interrupt disabling period).
Anyone who can confirm this?

Best regards,

Patrick Smout

Re: Disabling interrupts using VICIntEnClear / VICIntEnable

2005-10-06 by Karl Olsen

--- In lpc2000@yahoogroups.com, "smoutpatrick" <sonpat@b...> wrote:
> Hi,
> 
> to protect a shared data area against simultanous access by an 
> interrupt routine and a main task, I'm using the VICIntEnClear / 
> VICIntEnable registers. I intentionally don't wanna disable all the 
> interrupts because this would cause too much latency for other 
> interrupts.
> However, due to the pipelined instructions, one cannot guarantee
> that no interrupt occures just after it was disabled by a write to 
> the VICIntEnClear register.
> I suppose that I can place a few dummy instructions right after the
> instruction that writes the VICIntEnClear register to prevent 
> simultanous access but I'm not sure how many clock cycles this 
> delay must be.
> The technical manual of the PrimeCell Vectored Interruptcontroller 
> mentions a worst case scenario of 13 cycles ( Interrupt 
> synchronization + Worst case Interrupt disabling period).
> Anyone who can confirm this?

If all the "other interrupts" can use the same priority, you can make 
them FIQ, and only disable the IRQs through MSR CPSR_C, #xx.  This is 
much faster.

Karl Olsen

Move to quarantaine

This moves the raw source file on disk only. The archive index is not changed automatically, so you still need to run a manual refresh afterward.