My interrupts won't fire more than once
Posted: Fri Apr 24, 2015 6:47 am
Thanks to previous help on the forum, I managed to get basic interrupts working today, almost. I say almost, because I can get my ISR to run when I press any key on the keyboard, but then, it won't fire any more. I decided to open up the debugger for virtual-box, and get info about the PICs, to see if anything was wrong.
This is the part where I'm stuck, as the display of information about the PIC mostly makes sense, except for one field. I'll include a picture of an info dump of the pics, once before the first key-press, and once after the first key-press.
As you can see, the two dumps are almost identical, except for the LIRR register in the master PIC. It goes from 1, to 3, which means that something happened with bit 1 (for interrupt line 1, the keyboard). However, I don't know what the LIRR is. I know the IRR is for which lines are requesting interrupts, which makes sense (bit 0, or line 0, is that clock thingy that ticks 18 times a second, so I'd expect it to be on), but is this LIRR the same or different? If it is the same, does this mean there is a problem with the way I sent EOI?
I can provide my code if needed, but I'm hoping that I've already provided enough info for somebody to suggest a solution or test I could run to find the problem. If you have any solutions, or even things that you need me to test, let me know, I would greatly appreciate it.
Thanks for providing such a helpful forum,
Mikumiku747
This is the part where I'm stuck, as the display of information about the PIC mostly makes sense, except for one field. I'll include a picture of an info dump of the pics, once before the first key-press, and once after the first key-press.
As you can see, the two dumps are almost identical, except for the LIRR register in the master PIC. It goes from 1, to 3, which means that something happened with bit 1 (for interrupt line 1, the keyboard). However, I don't know what the LIRR is. I know the IRR is for which lines are requesting interrupts, which makes sense (bit 0, or line 0, is that clock thingy that ticks 18 times a second, so I'd expect it to be on), but is this LIRR the same or different? If it is the same, does this mean there is a problem with the way I sent EOI?
I can provide my code if needed, but I'm hoping that I've already provided enough info for somebody to suggest a solution or test I could run to find the problem. If you have any solutions, or even things that you need me to test, let me know, I would greatly appreciate it.
Thanks for providing such a helpful forum,
Mikumiku747