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
On Dec 11, 2005, at 9:42 PM, Dmytro Bablinyuk wrote:
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.
request_irq(IRQ,
&irq_handler, /* our handler */
irq_flags,
"interrupt_test",
NULL);
This is all you should do.
Thanks.
-- Dan
quoted
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
On Dec 12, 2005, at 12:00 AM, Dmytro Bablinyuk wrote:
quoted
quoted
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