[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

PortA Interrupt Handling

I need about 4-5 external interrupts, and I was planning on using PortA to
do this.

I have written driver code that successfully gets an interrupt on PortA.
However, since PortA is level, I will continue to get interrupts until the
external pin goes low.

My general strategy for dealing with this is

enable the interrupt
at the interrupt, disable further interrupts
have the interrupt schedule a tasklet to poll for the line to go low
once the line goes low, reenable the interrupt

My strategy fails; if I use a loop/check/sleep mechanism in the tasklet, the
developer board locks up. (If I remove the sleep loop, everything works
fine, but the tasklet always fires before the interrupt line drops).  I am
dealing with levels that may stay high for a second, so it is not feasible
to stay in the interrupt.

Is there a software solution to using PortA interrupts?

Is there any plan to make a part with edge sensitive interrupts?