Yahoo Groups archive

Lpc2000

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

Message

Re: FIQ Problem

2006-04-06 by sifiland

--- In lpc2000@yahoogroups.com, "theothervmax" <vmax@...> wrote:
>
> --- 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
>

It seems to function.  I will still test 

Thanks Max!  

sifiland

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.