Skip to contentSkip to conversation

82xx IRQ handling

DISCUSSION Dmytro Bablinyuk 3 participants 4 messages Dec 12, 2005

lore
Share & tools
lore
#0 lore raw

Hi everybody,

I am trying to setup an IRQ handler for IRQ4:

#define IRQ SIU_INT_IRQ4

volatile cpm2_map_t *immap;
int irq_flags = 0;

immap = (cpm2_map_t *)CPM_MAP_ADDR;

immap->im_intctl.ic_simrh &= ~(0x0800);

request_irq(IRQ,

            &irq_handler,	/* our handler */
            irq_flags,
            "interrupt_test",
            NULL);

immap->im_intctl.ic_simrh |= 0x0800;

I can see on a scope that IRQ line pulls up/down but handler get never called. I am sure I made some very stupid mistake here but I will really appreciate if somebody can help me with this.

Thank you

Dmytro

#1 lore raw
Quoted 1 line · Dmytro Bablinyuk

immap->im_intctl.ic_simrh &= ~(0x0800);

You should not be messing around with this register in your code. The generic 82xx interrupt functions will properly manage this for you.

Quoted 5 lines

request_irq(IRQ,

            &irq_handler,	/* our handler */
            irq_flags,
            "interrupt_test",
            NULL);

This is all you should do.

Thanks.

	-- Dan
#2 lore raw
Quoted 7 lines
Quoted 2 lines

immap->im_intctl.ic_simrh &= ~(0x0800);

You should not be messing around with this register in your code. The generic 82xx interrupt functions will properly manage this for you.

Thank you Dan,
It's working now!

By the way question - shall I program somewhere an edge of the IRQ or it always triggers on the rising edge?

Also does anybody knows any source code example of using 82xx General Purpose Timer Unit so that it triggers interrupt handler after some period.

Thank you

#3 lore raw
Quoted 10 lines · Dmytro Bablinyuk
Quoted 4 lines
Quoted 1 line

immap->im_intctl.ic_simrh &= ~(0x0800);

You should not be messing around with this register in your code. The generic 82xx interrupt functions will properly manage this for you.

Thank you Dan,
It's working now!

By the way question - shall I program somewhere an edge of the IRQ or it always triggers on the rising edge?

Also does anybody knows any source code example of using 82xx General Purpose Timer Unit so that it triggers interrupt handler after some period.

The IRQ pins are set to edge trigger by default.

- kumar