Yahoo Groups archive

Lpc2000

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

Message

Re: FIQ Problem

2006-04-06 by theothervmax

--- In lpc2000@yahoogroups.com, "sifiland" <sifiland@...> wrote:
>
> Hi,
> 
> If I let Timer0 with FIQ run, then the program jumps either in 
> Default_handler or makes RESETS.  Timer0 with IRQ runs completely 
> normally.  
> 
> What can the cause? 
> Thanks.
> 
> µC:  LPC2136 
> compiler:  IAR 
> 
> __fiq __arm void fiq_handler(void)
> {
>     void (*interrupt_function)();
>     unsigned int vector;
> 
>     // Interrupt-Vektor load
>     vector = VICVectAddr;
>     interrupt_function = (void(*)())vector;
>     
>     // call Interruptfunktion 
>     (*interrupt_function)();
> 
>     // Interrupt reset
>     VICVectAddr = 0;
> }
> 
> void    Int_Timer0(void)
> {
>    //
>     ...
>     //
>    T0IR=0xFF;
> 
> }
>

Hi,
I think you've just changed "__irq" qualifier in IAR's sample IRQ 
handler to "__fiq". As a result, nothing works.
The main reason is that handling IRQ and FIQ is quite different and 
it's no use trying to get the handler address from VICVectAddr when 
FIQ occurs.
If you have set up FIQ correctly in "Startup.s", try to rewrite FIQ 
handler so that it called "Int_Timer0()" directly. 

Regards,
Max

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.