Yahoo Groups archive

Lpc2000

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

Message

Re: [lpc2000] Corssworks CTL examples

2005-10-18 by rseku

Thank You very much indeed!
Meantime I figured out, that external interrupt trigerring by level 
keeps triggering as long as the reason is kept.This makes continous 
interrupt processing the way, that other processes are completly blocked.
I hardly ever can imagine reason for such implementation?!
So as I mentioned I implemented edge trigerring.
But now, after first int. execution the system stops reacting to any 
interrupt. I have read, that EXTINT=4 (EINT2)during interrupt execution 
must be written, to enable further interrupts processing. So I do.
Then I have read VicIntAddr=0 must be written; so I do.
HAS ANYONE FOUND ANYTHING ELSE?
code below:
EXT INT init:
void
SetButtonPressedISR(CTL_ISR_FN_t isr)
{
   userButtonISR = isr;
   // P0.16 to alternate function 2 (EINT2)
   PINSEL0 |= 0x80000000;
   //PINSEL1 |= 1;
   EXTMODE = 4;
   ctl_set_isr(EINT_INT, 1,CTL_ISR_TRIGGER_POSITIVE_EDGE, buttonISR, 0);
   ctl_unmask_isr(EINT_INT);
}
INT code:
static void
buttonISR(void)
{
   userButtonISR();
   EXTINT = 4;
}








Tom Walsh wrote:
> rseku wrote:
> 
> 
>>I am testing simplest ever Crossworks CTL examples for builtin  multi 
>>tasking.
>>When I went through test 2 for Olimex(LPC2138), I found that button ISR
>>once energized never stops.I think, that button press event should be 
>>generated only once, when button is pressed ( I am not certain if LPC is 
>>working based on Edge or Level interrupt signal)
>>
>> 
>>
> 
> If you are experiencing continual execution of your ISR code, then it 
> would probably be that the interrupt is in "level" rather than "edge" 
> mode.  See section 3.5 (System Control Block: External Interrupt Inputs) 
> of the Philips manual for the 2138.
> 
> TomW
>

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.