Stellarcore
New Member
I remember in one of my university classes discussing a device refered to as a "Priority Interrupt Controller". The device allows you to service many interrupts with only a single external interrupt on a microprocessor/controller.
The interrupt controller basically monitors a set of 8 (or more) inputs and when one of them is activated, it puts the interrupt in a queue and sends an interrupt to the micro. The micros interrupt service routine then queries the interrupt controller and proceeds to empty the queue of interrupts, servicing each one as it goes.
Does anybody know of a device like this? I've considered just using a big or gate but that makes it more difficult to figure out which of the eight devices triggered the interrupt and others could be ignored if they are asserted and removed while other interrupts are active. I've also considered using a 8-to-1 decoder, but then you get a problem when multiple interrupts occur at the same time.
Let me know what suggestions you have. I'd like to try and keep this down to a single device. Maybe I'll end up having to use another smaller micro and just program it to behave in this way.
The interrupt controller basically monitors a set of 8 (or more) inputs and when one of them is activated, it puts the interrupt in a queue and sends an interrupt to the micro. The micros interrupt service routine then queries the interrupt controller and proceeds to empty the queue of interrupts, servicing each one as it goes.
Does anybody know of a device like this? I've considered just using a big or gate but that makes it more difficult to figure out which of the eight devices triggered the interrupt and others could be ignored if they are asserted and removed while other interrupts are active. I've also considered using a 8-to-1 decoder, but then you get a problem when multiple interrupts occur at the same time.
Let me know what suggestions you have. I'd like to try and keep this down to a single device. Maybe I'll end up having to use another smaller micro and just program it to behave in this way.