Yahoo Groups archive

Lpc2000

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

Thread

EINT0 on LPC2106

EINT0 on LPC2106

2005-05-09 by frumbub

Hello

I am having problems with the EINT0 interrupt.
I have searched the posts and tried all suggested sollutions, but my
problem persists.

The problem is that the system stays in the ISR like in an infinite loop.

Code:
void eint_ISR( void )
{
	vParTestToggleLED( 0 );
	VICVectAddr = ringCLEAR_VIC_INTERRUPT;
}
And thats it... the vParTestToggleLED( 0 ) function just toggles a led
one time, that is verified, but when EINT0 is triggered if flashes
endlessly and the other processes are blocked.

The EINT0 setp code:

VICIntSelect &= ~( RING_VIC_CHANNEL_BIT );
VICIntEnable |= RING_VIC_CHANNEL_BIT;
VICVectAddr2 = ( portLONG ) vRING_ISR;
VICVectCntl2 = RING_VIC_ENABLE | RING_VIC_CHANNEL;

/* Enable EINT0 interrupt. */
PCB_PINSEL1 |= EINT0_ENABLE;

Please help me out...

Re: [lpc2000] EINT0 on LPC2106

2005-05-09 by Richard Duits

You need to clear the external interrupt (even with level sensitive 
interrupts) with like in the following code:

void eint_ISR( void )
{
  vParTestToggleLED( 0 );
    EXTINT = 1;  /* clear EINT0 */
    VICVectAddr = 0; /* acknowledge interrupt */
}


Richard Duits


frumbub wrote:
Show quoted textHide quoted text
> Hello
>
> I am having problems with the EINT0 interrupt.
> I have searched the posts and tried all suggested sollutions, but my
> problem persists.
>
> The problem is that the system stays in the ISR like in an infinite loop.
>
> Code:
> void eint_ISR( void )
> {
>       vParTestToggleLED( 0 );
>       VICVectAddr = ringCLEAR_VIC_INTERRUPT;
> }
> And thats it... the vParTestToggleLED( 0 ) function just toggles a led
> one time, that is verified, but when EINT0 is triggered if flashes
> endlessly and the other processes are blocked.
>
> The EINT0 setp code:
>
> VICIntSelect &= ~( RING_VIC_CHANNEL_BIT );
> VICIntEnable |= RING_VIC_CHANNEL_BIT;
> VICVectAddr2 = ( portLONG ) vRING_ISR;
> VICVectCntl2 = RING_VIC_ENABLE | RING_VIC_CHANNEL;
>
> /* Enable EINT0 interrupt. */
> PCB_PINSEL1 |= EINT0_ENABLE;
>
> Please help me out...
>
>
>
> ------------------------------------------------------------------------
> *Yahoo! Groups Links*
>
>     * To visit your group on the web, go to:
>       http://groups.yahoo.com/group/lpc2000/
>        
>     * To unsubscribe from this group, send an email to:
>       lpc2000-unsubscribe@yahoogroups.com
>       <mailto:lpc2000-unsubscribe@yahoogroups.com?subject=Unsubscribe>
>        
>     * Your use of Yahoo! Groups is subject to the Yahoo! Terms of
>       Service <http://docs.yahoo.com/info/terms/>.
>
>

Re: EINT0 on LPC2106

2005-05-09 by frumbub

--- In lpc2000@yahoogroups.com, "frumbub" <j_lilje@h...> wrote:
> Hello
> 
> I am having problems with the EINT0 interrupt.
> I have searched the posts and tried all suggested sollutions, but my
> problem persists.
> 
> The problem is that the system stays in the ISR like in an infinite
loop.
> 
> Code:
> void vRING_ISR( void )
> {
> 	vParTestToggleLED( 0 );
> 	VICVectAddr = ringCLEAR_VIC_INTERRUPT;
> }
> And thats it... the vParTestToggleLED( 0 ) function just toggles a led
> one time, that is verified, but when EINT0 is triggered if flashes
> endlessly and the other processes are blocked.
> 
> The EINT0 setp code:
> 
> VICIntSelect &= ~( RING_VIC_CHANNEL_BIT );
> VICIntEnable |= RING_VIC_CHANNEL_BIT;
> VICVectAddr2 = ( portLONG ) vRING_ISR;
> VICVectCntl2 = RING_VIC_ENABLE | RING_VIC_CHANNEL;
> 
> /* Enable EINT0 interrupt. */
> PCB_PINSEL1 |= EINT0_ENABLE;
> 
> Please help me out...

Forgot these...
/* Constants to setup and access the VIC. */
#define ringCLEAR_VIC_INTERRUPT	( ( unsigned portLONG ) 0 )
#define RING_VIC_CHANNEL	( ( unsigned portLONG ) 0x0E )
#define RING_VIC_CHANNEL_BIT	( ( unsigned portLONG ) 0x4000 )
#define RING_VIC_ENABLE		( ( unsigned portLONG ) 0x20 )
#define EINT0_ENABLE		( ( unsigned portLONG ) 0x01 )
#define ringCLEAR_VIC_INTERRUPT	( ( unsigned portLONG ) 0 )

Corrected the function name, is vRING_ISR and nothing else!

Thanks in advance..

Re: EINT0 on LPC2106

2005-05-09 by frumbub

Yes that stops th infinite loop, but another problem remains.
It seems that the ISR dont returns. The system freezes.
Any ideas?

--- In lpc2000@yahoogroups.com, Richard Duits <yahoo@r...> wrote:
> You need to clear the external interrupt (even with level sensitive 
> interrupts) with like in the following code:
> 
> void eint_ISR( void )
> {
>   vParTestToggleLED( 0 );
>     EXTINT = 1;  /* clear EINT0 */
>     VICVectAddr = 0; /* acknowledge interrupt */
> }
> 
> 
> Richard Duits
> 
> 
> frumbub wrote:
> 
> > Hello
> >
> > I am having problems with the EINT0 interrupt.
> > I have searched the posts and tried all suggested sollutions, but my
> > problem persists.
> >
> > The problem is that the system stays in the ISR like in an
infinite loop.
> >
> > Code:
> > void eint_ISR( void )
> > {
> >       vParTestToggleLED( 0 );
> >       VICVectAddr = ringCLEAR_VIC_INTERRUPT;
> > }
> > And thats it... the vParTestToggleLED( 0 ) function just toggles a led
> > one time, that is verified, but when EINT0 is triggered if flashes
> > endlessly and the other processes are blocked.
> >
> > The EINT0 setp code:
> >
> > VICIntSelect &= ~( RING_VIC_CHANNEL_BIT );
> > VICIntEnable |= RING_VIC_CHANNEL_BIT;
> > VICVectAddr2 = ( portLONG ) vRING_ISR;
> > VICVectCntl2 = RING_VIC_ENABLE | RING_VIC_CHANNEL;
> >
> > /* Enable EINT0 interrupt. */
> > PCB_PINSEL1 |= EINT0_ENABLE;
> >
> > Please help me out...
> >
> >
> >
> >
------------------------------------------------------------------------
Show quoted textHide quoted text
> > *Yahoo! Groups Links*
> >
> >     * To visit your group on the web, go to:
> >       http://groups.yahoo.com/group/lpc2000/
> >        
> >     * To unsubscribe from this group, send an email to:
> >       lpc2000-unsubscribe@yahoogroups.com
> >       <mailto:lpc2000-unsubscribe@yahoogroups.com?subject=Unsubscribe>
> >        
> >     * Your use of Yahoo! Groups is subject to the Yahoo! Terms of
> >       Service <http://docs.yahoo.com/info/terms/>.
> >
> >

Re: EINT0 on LPC2106

2005-05-09 by frumbub

Problem solved!
Thanks for the help. (sometimes it helps just to write down the
problems ;) )

--- In lpc2000@yahoogroups.com, "frumbub" <j_lilje@h...> wrote:
> Yes that stops th infinite loop, but another problem remains.
> It seems that the ISR dont returns. The system freezes.
> Any ideas?
> 
> --- In lpc2000@yahoogroups.com, Richard Duits <yahoo@r...> wrote:
> > You need to clear the external interrupt (even with level sensitive 
> > interrupts) with like in the following code:
> > 
> > void eint_ISR( void )
> > {
> >   vParTestToggleLED( 0 );
> >     EXTINT = 1;  /* clear EINT0 */
> >     VICVectAddr = 0; /* acknowledge interrupt */
> > }
> > 
> > 
> > Richard Duits
> > 
> > 
> > frumbub wrote:
> > 
> > > Hello
> > >
> > > I am having problems with the EINT0 interrupt.
> > > I have searched the posts and tried all suggested sollutions, but my
> > > problem persists.
> > >
> > > The problem is that the system stays in the ISR like in an
> infinite loop.
> > >
> > > Code:
> > > void eint_ISR( void )
> > > {
> > >       vParTestToggleLED( 0 );
> > >       VICVectAddr = ringCLEAR_VIC_INTERRUPT;
> > > }
> > > And thats it... the vParTestToggleLED( 0 ) function just toggles
a led
> > > one time, that is verified, but when EINT0 is triggered if flashes
> > > endlessly and the other processes are blocked.
> > >
> > > The EINT0 setp code:
> > >
> > > VICIntSelect &= ~( RING_VIC_CHANNEL_BIT );
> > > VICIntEnable |= RING_VIC_CHANNEL_BIT;
> > > VICVectAddr2 = ( portLONG ) vRING_ISR;
> > > VICVectCntl2 = RING_VIC_ENABLE | RING_VIC_CHANNEL;
> > >
> > > /* Enable EINT0 interrupt. */
> > > PCB_PINSEL1 |= EINT0_ENABLE;
> > >
> > > Please help me out...
> > >
> > >
> > >
> > >
> ------------------------------------------------------------------------
> > > *Yahoo! Groups Links*
> > >
> > >     * To visit your group on the web, go to:
> > >       http://groups.yahoo.com/group/lpc2000/
> > >        
> > >     * To unsubscribe from this group, send an email to:
> > >       lpc2000-unsubscribe@yahoogroups.com
> > >      
<mailto:lpc2000-unsubscribe@yahoogroups.com?subject=Unsubscribe>
Show quoted textHide quoted text
> > >        
> > >     * Your use of Yahoo! Groups is subject to the Yahoo! Terms of
> > >       Service <http://docs.yahoo.com/info/terms/>.
> > >
> > >

Re: EINT0 on LPC2106

2005-05-09 by frumbub

Is there any way of chosing on what level the interrupt should trigger
(logic 1 or 0)? As it is now it triggers on 0.
 

--- In lpc2000@yahoogroups.com, "frumbub" <j_lilje@h...> wrote:
> Problem solved!
> Thanks for the help. (sometimes it helps just to write down the
> problems ;) )
> 
> --- In lpc2000@yahoogroups.com, "frumbub" <j_lilje@h...> wrote:
> > Yes that stops th infinite loop, but another problem remains.
> > It seems that the ISR dont returns. The system freezes.
> > Any ideas?
> > 
> > --- In lpc2000@yahoogroups.com, Richard Duits <yahoo@r...> wrote:
> > > You need to clear the external interrupt (even with level sensitive 
> > > interrupts) with like in the following code:
> > > 
> > > void eint_ISR( void )
> > > {
> > >   vParTestToggleLED( 0 );
> > >     EXTINT = 1;  /* clear EINT0 */
> > >     VICVectAddr = 0; /* acknowledge interrupt */
> > > }
> > > 
> > > 
> > > Richard Duits
> > > 
> > > 
> > > frumbub wrote:
> > > 
> > > > Hello
> > > >
> > > > I am having problems with the EINT0 interrupt.
> > > > I have searched the posts and tried all suggested sollutions,
but my
> > > > problem persists.
> > > >
> > > > The problem is that the system stays in the ISR like in an
> > infinite loop.
> > > >
> > > > Code:
> > > > void eint_ISR( void )
> > > > {
> > > >       vParTestToggleLED( 0 );
> > > >       VICVectAddr = ringCLEAR_VIC_INTERRUPT;
> > > > }
> > > > And thats it... the vParTestToggleLED( 0 ) function just toggles
> a led
> > > > one time, that is verified, but when EINT0 is triggered if flashes
> > > > endlessly and the other processes are blocked.
> > > >
> > > > The EINT0 setp code:
> > > >
> > > > VICIntSelect &= ~( RING_VIC_CHANNEL_BIT );
> > > > VICIntEnable |= RING_VIC_CHANNEL_BIT;
> > > > VICVectAddr2 = ( portLONG ) vRING_ISR;
> > > > VICVectCntl2 = RING_VIC_ENABLE | RING_VIC_CHANNEL;
> > > >
> > > > /* Enable EINT0 interrupt. */
> > > > PCB_PINSEL1 |= EINT0_ENABLE;
> > > >
> > > > Please help me out...
> > > >
> > > >
> > > >
> > > >
> >
------------------------------------------------------------------------
Show quoted textHide quoted text
> > > > *Yahoo! Groups Links*
> > > >
> > > >     * To visit your group on the web, go to:
> > > >       http://groups.yahoo.com/group/lpc2000/
> > > >        
> > > >     * To unsubscribe from this group, send an email to:
> > > >       lpc2000-unsubscribe@yahoogroups.com
> > > >      
> <mailto:lpc2000-unsubscribe@yahoogroups.com?subject=Unsubscribe>
> > > >        
> > > >     * Your use of Yahoo! Groups is subject to the Yahoo! Terms of
> > > >       Service <http://docs.yahoo.com/info/terms/>.
> > > >
> > > >

Re: [lpc2000] Re: EINT0 on LPC2106

2005-05-09 by Richard Duits

Please download the User Manual for the device you are using and take a 
look at the chapter named "System Control Block" section "External 
Interrupt Inputs".
Your will find the description for EXTMODE and EXTPOLAR for changing the 
mode (edge or level) and polarity.

Richard Duits.


frumbub wrote:
Show quoted textHide quoted text
> Is there any way of chosing on what level the interrupt should trigger
> (logic 1 or 0)? As it is now it triggers on 0.
>
>
> --- In lpc2000@yahoogroups.com, "frumbub" <j_lilje@h...> wrote:
> > Problem solved!
> > Thanks for the help. (sometimes it helps just to write down the
> > problems ;) )
> >
> > --- In lpc2000@yahoogroups.com, "frumbub" <j_lilje@h...> wrote:
> > > Yes that stops th infinite loop, but another problem remains.
> > > It seems that the ISR dont returns. The system freezes.
> > > Any ideas?
> > >
> > > --- In lpc2000@yahoogroups.com, Richard Duits <yahoo@r...> wrote:
> > > > You need to clear the external interrupt (even with level sensitive
> > > > interrupts) with like in the following code:
> > > >
> > > > void eint_ISR( void )
> > > > {
> > > >   vParTestToggleLED( 0 );
> > > >     EXTINT = 1;  /* clear EINT0 */
> > > >     VICVectAddr = 0; /* acknowledge interrupt */
> > > > }
> > > >
> > > >
> > > > Richard Duits
> > > >
> > > >
> > > > frumbub wrote:
> > > >
> > > > > Hello
> > > > >
> > > > > I am having problems with the EINT0 interrupt.
> > > > > I have searched the posts and tried all suggested sollutions,
> but my
> > > > > problem persists.
> > > > >
> > > > > The problem is that the system stays in the ISR like in an
> > > infinite loop.
> > > > >
> > > > > Code:
> > > > > void eint_ISR( void )
> > > > > {
> > > > >       vParTestToggleLED( 0 );
> > > > >       VICVectAddr = ringCLEAR_VIC_INTERRUPT;
> > > > > }
> > > > > And thats it... the vParTestToggleLED( 0 ) function just toggles
> > a led
> > > > > one time, that is verified, but when EINT0 is triggered if flashes
> > > > > endlessly and the other processes are blocked.
> > > > >
> > > > > The EINT0 setp code:
> > > > >
> > > > > VICIntSelect &= ~( RING_VIC_CHANNEL_BIT );
> > > > > VICIntEnable |= RING_VIC_CHANNEL_BIT;
> > > > > VICVectAddr2 = ( portLONG ) vRING_ISR;
> > > > > VICVectCntl2 = RING_VIC_ENABLE | RING_VIC_CHANNEL;
> > > > >
> > > > > /* Enable EINT0 interrupt. */
> > > > > PCB_PINSEL1 |= EINT0_ENABLE;
> > > > >
> > > > > Please help me out...
> > > > >
> > > > >
> > > > >
> > > > >
> > >
> ------------------------------------------------------------------------
> > > > > *Yahoo! Groups Links*
> > > > >
> > > > >     * To visit your group on the web, go to:
> > > > >       http://groups.yahoo.com/group/lpc2000/
> > > > >       
> > > > >     * To unsubscribe from this group, send an email to:
> > > > >       lpc2000-unsubscribe@yahoogroups.com
> > > > >     
> > <mailto:lpc2000-unsubscribe@yahoogroups.com?subject=Unsubscribe>
> > > > >       
> > > > >     * Your use of Yahoo! Groups is subject to the Yahoo! Terms of
> > > > >       Service <http://docs.yahoo.com/info/terms/>.
> > > > >
> > > > >
>
>
>
> ------------------------------------------------------------------------
> *Yahoo! Groups Links*
>
>     * To visit your group on the web, go to:
>       http://groups.yahoo.com/group/lpc2000/
>        
>     * To unsubscribe from this group, send an email to:
>       lpc2000-unsubscribe@yahoogroups.com
>       <mailto:lpc2000-unsubscribe@yahoogroups.com?subject=Unsubscribe>
>        
>     * Your use of Yahoo! Groups is subject to the Yahoo! Terms of
>       Service <http://docs.yahoo.com/info/terms/>.
>
>

Re: [lpc2000] Re: EINT0 on LPC2106

2005-05-09 by Brett Delmage

frumbub wrote:

> Problem solved!
> Thanks for the help. (sometimes it helps just to write down the
> problems ;) )

Indeed.

Could you please share your solution with the list, if you think others 
may benefit from it (i.e. avoid the same issue in the future)?
A list works best when people share their knowledge and findings.

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.