Yahoo Groups archive

Lpc2000

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

Message

Re: [gnu arm] interrupts don't work :/ [Another way]

2004-09-26 by cd_racer2

You can do the following:

MEMMAP = MEMMAP_USERRAMMODE;
*(volatile INT32U *)(0x00000018L) = 0xE51FFFF0L;

(MEMMAP - see page 33 of UM_LPC2106_2105_2104 - user manual,
also you see page 70 of UM_LPC2106_2105_2104).

I haven't use GCC's interrupt attribute because of the old GCC version
(3.2.0). But from this thread I think that GCC use a single
entry-point for IRQ and at this point you are to do a proper jump
(using VICVectAddr register, for example). Thus you can use different
ARM-based microcontrollers in single way (in fact, the addresses of
interrupt registers are different on Atmel's AT91RM9200 and Philips
LPC2106). But in this case you are to write your IRQ entry-point
function in a proper way.

But another way is to place at IRQ vector exception's address
(0x00000018) an instruction, that loads an address from VICVectAddr
register to PC-register. Thus, there's no need to think about
entry-point function. But in this case you are to proper init the
exception vector (according to microcontroller's user manual) and
write a proper container for your's IRQ function.

Attachments

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.