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.
Message
Re: [gnu arm] interrupts don't work :/ [Another way]
2004-09-26 by cd_racer2
Attachments
- No local attachments were found for this message.