[En-Nut-Discussion] Interrupts on at91 plattform: Edge vs. level triggered

Ole Reinhardt ole.reinhardt at embedded-it.de
Tue Feb 3 18:19:29 CET 2009


Hey!

I just noticed several times problems with drivers using edge triggered
interrupts on the arm platform. At least you remember the UART bug,
fixed at 2008-07-26 by Harald (see Changelog).

I noticed similar problems with the GPIO level change interrupts as
well. If I leave the interrupts in their default trigger mode (edge
triggered) the interrupt handler will not be triggered again after some
thousand interrupts where generated before. It seems that this might
happen if the Interrupts are disabled by a critical section just in the
moment when the interrupt occurs. It seems that the interrupt flag is
set in the meantime and therefore will never change again until it is
cleared. But it will only be cleared in the interrupt handler which was
not called as there was no "change" detected when interrupts where
enabled.

So two questions:

- Is there any reason to use edge triggered interrupts instead of level
  triggered for the internal peripherals?
- If yes: Is there any way to workaround this problem? For example by
  checking if an interrupt should have been triggered when leaving the
  critical section?

We should carefully check all existing drivers if this problem might
occur there too. Especialy this could solve the problems with the TWI
driver too (not yet checked).

Regards,

Ole Reinhardt

-- 
 _____________________________________________________________
|                                                             |
| Embedded-IT          Hard- und Softwarelösungen             |
|                                                             |
| Ole Reinhardt        Tel. / Fax:        +49 (0)271  7420433 |
| Luisenstraße 29      Mobil:             +49 (0)177  7420433 |
| 57076 Siegen         eMail:    ole.reinhardt at embedded-it.de |
| Germany              Web:         http://www.embedded-it.de |
|                      UstID / VAT:       DE198944716         |
|_____________________________________________________________|



More information about the En-Nut-Discussion mailing list