EmbeddedRelated.com
Forums
The 2024 Embedded Online Conference

VIC on LPC2129

Started by Steffen Rose June 21, 2005
The problem described is most likely not caused specifically by the VIC.
It is probably caused because the code is disabling the specific
interrupt while global interrupts are still enabled. If an interrupt
happens just as the instruction that disables the interrupt in the VIC is
executing, the processor will see the interrupt as enabled. However, by
the time the interrut cycle is allowed to execute at the end of the instruction
cycle the interrupt is no longer enabled in the VIC, hence the spurious
interrupt vector is used. A fix for this is to temporarily disable global
interrupts, disable the specific interrupt, then restore global interrupts
to their previous state.

Regards
-Bill Knight
R O SoftWare &
http://www.theARMPatch.com On Thu, 11 Aug 2005 04:42:37 -0700 (PDT), DECwiz (Fred van Kempen) wrote:

>FIQ's dont use the vectoring system, they jump right into the
>handler, so most likely won't have this issue. And yes, it is
>possible for the VIC to loose track, and just issue a null
>vector, I've seen it happen on 2294's as well, under extreme
>load.
>
>--fred

>Jim Parziale <nuncio.bitis@nunc...> wrote:
>But would the problem occur with FIQ interrupts as well as IRQ? In other
>words, it's really a "problem" with the VIC?
>I agree though - you really *do* need to set up a default VIC handler. I'll
>bet that's what it's there for...

>Jim

>On 8/11/05, brendanmurphy37 <brendan.murphy@bren...> wrote:
>>
>>
>> We had the same problem when we stressed the part with lots of
>> interrupts: to be safe you definitely do need a default interrupt
>> handler. It can be completely empty: just return. Everything works
>> just fine if you do this. However, if you don't, the default value of
>> zero in the default interrupt location in the VIC will cause periodic
>> jumps to zero.
>>
>> I can't recall the exact part we had this problem on, but my guess is
>> that it's probably more than one, and the problem occurs regardess of
>> the type of interrupt (we were using timer, UART0 and UART1 at the
>> time the problem manifested itself).
>>
>> Brendan
>>
>> --- In lpc2000@lpc2..., Steffen Rose <ro@p...> wrote:
>> > Hi,
>> >
>> > On Wednesday 10 August 2005 20:40, you wrote:
>> > > I have similar problems, using vectored interrupts from UART0,
>> > > UART1, I2C and SPI0. It appears that you occasionally get
>> > > vectored to the default IRQ handler address. The default is
>> > > 0x00000000, (VICDefVectAddr) which equals the reset vector. I
>> > > will look as the CPU is resetting. If you implement a default
>> > > ISR and point VICDefVectAddr to the routine, you'll find that
>> > > it is being called from time to time. The idea is to look at
>> > > VICIRQStatus to see which peripheral caused the interrupt, but
>> > > in my case, it is always zero. I have done some logic analyzer
>> > > checks, and it appears that the default ISR is called only
>> > > when an ISR is executing and a new IRQ is asserted. If I fond
>> > > out more, I'll post it.
>> >
>> > In our case the solution was, that a second interrupt was
>> > triggered at the time we was within an interrupt routine.
>> > Now we added a empty default interrupt. Nothing more. The second
>> > interrupt will called after returning from the first interrupt
>> > routine.
>> >
>> >
>> > >> In my system are many interrupts enabled and my system resets
>> > >> from time to time. My idea is the occurrence of this SPURIOUS
>> > >> INTERRUPTS.
>> >
>> > --
>> > Steffen Rose
>>
>>
>>
>>
>> SPONSORED LINKS
>> Microcontrollers<http://groups.yahoo.com/gads?t=ms&k=Microcontrollers&w1=Microcontrollers&w2=Microprocessor&w3=Intel+microprocessors&w4=Pic+microcontrollers&w585+microprocessor&c=5&s0&.sig=OPqm0ilH6VyGn-geZ0nNwA>
>> Microprocessor<http://groups.yahoo.com/gads?t=ms&k=Microprocessor&w1=Microcontrollers&w2=Microprocessor&w3=Intel+microprocessors&w4=Pic+microcontrollers&w585+microprocessor&c=5&s0&.sig93hF7rArBsrPQJltQ_w> Intel
>> microprocessors<http://groups.yahoo.com/gads?t=ms&k=Intel+microprocessors&w1=Microcontrollers&w2=Microprocessor&w3=Intel+microprocessors&w4=Pic+microcontrollers&w585+microprocessor&c=5&s0&.sigrTtKaQUw-Vd0BgTdDmw> Pic
>> microcontrollers<http://groups.yahoo.com/gads?t=ms&k=Pic+microcontrollers&w1=Microcontrollers&w2=Microprocessor&w3=Intel+microprocessors&w4=Pic+microcontrollers&w585+microprocessor&c=5&s0&.sig=iYT6za1gT3-VT1hwIylDpw> 8085
>> microprocessor<http://groups.yahoo.com/gads?t=ms&k85+microprocessor&w1=Microcontrollers&w2=Microprocessor&w3=Intel+microprocessors&w4=Pic+microcontrollers&w585+microprocessor&c=5&s0&.sig=PhYMBsCkQptYbazQFyNujQ>
>> ------------------------------
>> >.
>>
>>
>> ------------------------------
>>
>--
>----------------------
>Jim Parziale
>Email: nuncio.bitis@nunc...
>Malden, MA
>----------------------


>
>---------------------------------
>YAHOO! GROUPS LINKS


>


>---------------------------------

>

>
>Yahoo! Groups Links
>



An Engineer's Guide to the LPC2100 Series


The 2024 Embedded Online Conference