2
$\begingroup$

A key difference between the edge-triggered and level-triggered interrupts is interrupt sharing. Level-triggered interrupts can be shared. Edge-triggered interrupts cannot be shared.

I read the line above in an IBM document. Need help to understand why is it so.

$\endgroup$
2
$\begingroup$

Consider the scenario where an interrupt IS shared by two devices with the following scenario:

  1. Device 1 requests service.
  2. The processor starts serving device 1.
  3.         Device 2 requests service.
  4. Device 1 no longer requests service.
  5. The processor finishes serving device 1.
  6.         The processor starts serving device 2.

Here device 1 will assert an interrupt request in step 1. It de-asserts that request in step 5, but the request remains asserted due to step 3.

Now in step 6, if level triggered requests are used, the processor will service the other device since the request level is still asserted. With edge triggered requests, nothing will happen because there will be no new "edge" to be detected. The request remained asserted throughout the scenario. This is a failure of the interrupt system.

This is why only level triggered interrupts, in general. may be shared.

$\endgroup$
  • $\begingroup$ Thanks Peter +1. A follow-up question - Is it correct to say that edge triggered interrupts could be polled, while level-triggered ones are those which directly interrupt the processor? $\endgroup$ – ultimate cause Jan 12 '17 at 14:33
  • $\begingroup$ Not really. Polling is a strategy where the processor queries the peripheral device on a regular basis. If you are polling, you are not using interrupts. Thus your question does not make a lot of sense. If you have more devices than interrupt lines and cannot share those interrupt lines, then polling some of your devices may be an effective strategy. $\endgroup$ – Peter Camilleri Jan 12 '17 at 17:04
  • $\begingroup$ Ok. "If you have more devices than interrupt lines and cannot share those interrupt lines" - Checking devices for what? For interrupts.. Right? So want to understand, what is wrong with statement that Edge triggered interrupts are polled? Seems I have mixed two things. $\endgroup$ – ultimate cause Jan 12 '17 at 17:27
  • $\begingroup$ Typically, to poll a device, your code would read a device status register that would indicate if any further processing was needed. No interrupt lines involved here. This needs to be done on a regular basis. There are many ways to arrange your code to ensure that polling happens on the required schedule, but that is out of scope of this question. $\endgroup$ – Peter Camilleri Jan 12 '17 at 17:32

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.