Yahoo Groups archive

Lpc2000

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

Thread

VIC not taking Jump to Interrupt ISR

VIC not taking Jump to Interrupt ISR

2004-12-13 by sig5534

This is my first ARM7 project, so I am sure I must be missing 
something really simple, but I sure can't find what it is.

I'm using JetJTAG debugger and the IAR compiler, and a bit of MakeApp 
stuff.  I didn't trust what MakeApp was doing so I put my own manual 
VIC init calls in after their init.  But same problem persists.

I'm trying to get the TIMER-0 INT to fire.  The counter is setup and 
running, and it looks like all of the INT flags go off in the T0 and 
VIC as they should, but yet it never jumps into the ISR routine.

I have TIMER0(VIC-CH4) set to go to IRQ slot-0.

Here's what the T0 and VIC registers look like after it runs:

T0IR	0x0001  (Int Flag Tripped, yes?)
T0TCR	0x0001  (Counter enabled)

VICFIQStatus	0x0000
VICIRQStatus	0x0010 (Int flag tripped for T0, yes?)
VICRawIntr	0x2018
VICIntSelect	0x0020  (I have T1 set to go to FIQ later)
VICIntEnable	0x0070
VICSoftInt	0x0000
VICProtection	0x0000
VICDefVectAddr	0x0948
VICVectAddr	0x095C 
VICVectAddr0	0x095C ( correct ISR adr)
VICVectCntl0	0x0024 (T0 is VIC-CH4, and Enabled)

If I understand this, the INT flag in VICIRQStatus is tripped 
correctly.  So why is it not taking the jump to the ISR adr?

Help! I'm stuck.

Thanks,  Chris.

Re: VIC not taking Jump to Interrupt ISR

2004-12-13 by Karl Olsen

--- In lpc2000@yahoogroups.com, "sig5534" <sig5534@h...> wrote:
> 
> This is my first ARM7 project, so I am sure I must be missing 
> something really simple, but I sure can't find what it is.
> 
> I'm using JetJTAG debugger and the IAR compiler, and a bit of 
MakeApp 
> stuff.  I didn't trust what MakeApp was doing so I put my own 
manual 
> VIC init calls in after their init.  But same problem persists.
> 
> I'm trying to get the TIMER-0 INT to fire.  The counter is setup 
and 
> running, and it looks like all of the INT flags go off in the T0 
and 
> VIC as they should, but yet it never jumps into the ISR routine.
> 
> I have TIMER0(VIC-CH4) set to go to IRQ slot-0.
> 
> Here's what the T0 and VIC registers look like after it runs:
> 
> T0IR	0x0001  (Int Flag Tripped, yes?)
> T0TCR	0x0001  (Counter enabled)
> 
> VICFIQStatus	0x0000
> VICIRQStatus	0x0010 (Int flag tripped for T0, yes?)
> VICRawIntr	0x2018
> VICIntSelect	0x0020  (I have T1 set to go to FIQ later)
> VICIntEnable	0x0070
> VICSoftInt	0x0000
> VICProtection	0x0000
> VICDefVectAddr	0x0948
> VICVectAddr	0x095C 
> VICVectAddr0	0x095C ( correct ISR adr)
> VICVectCntl0	0x0024 (T0 is VIC-CH4, and Enabled)
> 
> If I understand this, the INT flag in VICIRQStatus is tripped 
> correctly.  So why is it not taking the jump to the ISR adr?


Do you have the "LDR PC, [PC, #-0x0FF0]" at address 0x18 in the 
exception vectors?

Have you reserved a suitable IRQ stack and initialized its stack 
pointer in the startup code?

Have you enabled IRQ in the CPU (like "msr cpsr_c, #0x1F") in the
startup code?


Karl Olsen

Re: VIC not taking Jump to Interrupt ISR

2004-12-13 by david_hoarau

--- In lpc2000@yahoogroups.com, "sig5534" <sig5534@h...> wrote:
> 
> This is my first ARM7 project, so I am sure I must be missing 
> something really simple, but I sure can't find what it is.
> 
> I'm using JetJTAG debugger and the IAR compiler, and a bit of MakeApp 
> stuff.  I didn't trust what MakeApp was doing so I put my own manual 
> VIC init calls in after their init.  But same problem persists.
> 
> I'm trying to get the TIMER-0 INT to fire.  The counter is setup and 
> running, and it looks like all of the INT flags go off in the T0 and 
> VIC as they should, but yet it never jumps into the ISR routine.

Hi !

I had the same problem with an LPC2104. Eventually, i changed the
microprocessor and it worked (without modifying the code).
Perhaps it is not the same in your case, but it may be worth the try
if you have spare parts.

David HOARAU

Re: VIC not taking Jump to Interrupt ISR

2004-12-14 by sig5534

Thanks, Karl.

> Do you have the "LDR PC, [PC, #-0x0FF0]" at address 0x18

That was it.  I saw that in the manual, but I assume the IAR startup 
code was already handling that.  Of course they weren't.

ISR's jumping now! 
 
> Have you reserved a suitable IRQ stack
Yes, had done that.
 
> Have you enabled IRQ in the CPU (like "msr cpsr_c, #0x1F")
Yes, had that.
 
Chris.

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.