Hi,
I'm "playing" with interrupts.
Now I have this situation:
Within the VIC some Interrupts are enabled and set.
The ARM7 Core is in Usermode, the I Flag is 0.
Now I miss my Interrupt generation.
What could be wrong?
Before this situation, for example I clear the Interrupts on the
VIC with
/* disable all Interrupts on the VIC unit */
LPC21_VIC_INT_ENCLR = 0xFFFFFFFFul;
/* reset current interrupt Flags */
LPC21_VIC_SOFTINT_CLR = 0xFFFFFFFFul;
Later I generate a SWI. Within the Software Interrupt function I
call this function:
void fl_destroyAppl(void) __arm
{
/* disable IRQ, FIRQ (Mode_SVC|I_Bit|F_Bit) */
__asm {
MSR CPSR_c, #0xD3 /* (Mode_SVC|I_Bit|F_Bit) */
LDR R0, =0xE01FC040 /* MEMMAP */
MOV R1, #1 /* User Flash Mode */
STR R1, [R0]
};
((void(*)(void))0)();
}
On address 0 the program restarts and the startup initializes and
enables the interrupts. But now the Interrupt engine is wrong.
Do you have a better command to reset the CPU? I want also reset
the internal resources. But I didn't find a Software Reset.
Thank you.
--
Steffen RoseMessage
IRQ LPC2194
2005-06-02 by Steffen Rose
Attachments
- No local attachments were found for this message.