EmbeddedRelated.com
Forums
The 2024 Embedded Online Conference

LCD controller disturbs my timer irq (LPC2478)

Started by Benedikt Sauter April 26, 2009
Hello,

I Setup a 10us Timer (Timer 0).

If the LCD is off:

LCD_CTRL &= ~(1 << LCD_CTRL_LCDEN);

The timer works correct. But if I switch on the LCD

LCD_CTRL |= 1 << LCD_CTRL_LCDEN;

The timer is not sync. It from 10 - 20 us every clock is different.

To be sure that there is no interrupt from the lcd I do this:

LCD_INTMSK = 0x00000000;
LCD_INTCLR = 0xffffffff;
CRSR_INTMSK = 0x00000000;
CRSR_INTCLR = 0xffffffff;

With clock I mean my toggl of an io pin.

void sysTimeISR(void)
{
ISR_ENTRY();
if(flip)
{
IOCLR1 |= (1<<8);
flip = 0;
} else {
IOSET1 |= (1<<8);
flip=1;
}
ISR_EXIT();
}

I switched all other peripheral off that I'm sure that is nothing other.

All other interrupts are initialized as default like this:
/* initialize VIC */
VICIntEnClr = 0xffffffff;
VICVectAddr = 0x00000000;
VICIntSelect = 0x00000000; /* all IRQ */

/* set all the vector and vector control register to 0 */
for ( i = 0; i < 32; i++ ) {
vect_addr = (uint32_t *)(VIC_BASE_ADDR + VECT_ADDR_INDEX + i*4);
vect_prio = (uint32_t *)(VIC_BASE_ADDR + VECT_PRIO_INDEX + i*4);
*vect_addr = 0x00000000;
*vect_prio = 0x0000000F;
}

and the irq for timer 0 is initialized like this:

VICIntSelect &= ~(VIC_CHAN_TO_MASK(VIC_CHAN_NUM_Timer0));
VICIntEnClr = VIC_CHAN_TO_MASK(VIC_CHAN_NUM_Timer0);
VICVectAddr4 = (uint32_t)sysTimeISR;
VICVectPriority4 = 0;
VICIntEnable = VIC_CHAN_TO_MASK(VIC_CHAN_NUM_Timer0);
Has anybody an idea why my LCD disturb my timer interrupt?

An Engineer's Guide to the LPC2100 Series

--- In l..., Benedikt Sauter wrote:
>
> Hello,
>
> I Setup a 10us Timer (Timer 0).
>
> If the LCD is off:
>
> LCD_CTRL &= ~(1 << LCD_CTRL_LCDEN);
>
> The timer works correct. But if I switch on the LCD
>
> LCD_CTRL |= 1 << LCD_CTRL_LCDEN;
>
> The timer is not sync. It from 10 - 20 us every clock is different.
>

Can a DMA be interrupted on LPC? If not, the LCD buffer loads may delay the firing of your timer interrupt, maybee?

Your timer period seems very short?

Rgds,
Martin


The 2024 Embedded Online Conference