I am trying to get APIC Timer generated interrupts, and I was wondering if you need LINT0 or LINT1 for it to work? I masked all interrupts in the Local APIC, then unmasked the timer interrupt, programmed my task priority register to 0, and made sure even the spurious interrupt vector was programmed. I also write to the eoi register just in case. However, I receive no calls to my handler for the LAPIC timer interrupt....
I thought maybe you need one of those others enabled to make it work.
Also, I was wondering how you can program say 1 second into it? The documentation didn't completely explain how the Divide Register Works.
Thanks in advance
APIC Timer
RE:APIC Timer
Let's start with that timing thing: The time base for the APIC counter is derived from the processor's bus clock, divided by the value in the divide configuration register (DCR). At the beginning of a timer cycle, the current count register (CCR) is loaded with the value of the initial count register (ICR). The CCR is decremented at each timer step. For example, if your processor's bus clock is 800MHz, you can write 0x02 to the DCR (divide by and 100,000,000 to the ICR to get 1 second.
Did you program one-shot or periodic timer interrupts? The timer is started on writing to the ICR. Perhaps an error is generated because something's wrong which I can't see at the moment. I'm curious what happens when you test the error status register (ESR) in an error handler routine using the error interrupt.
Does the counter work? Test the value of the CCR in short intervals. Maybe this helps to localise the problem.
Did you program one-shot or periodic timer interrupts? The timer is started on writing to the ICR. Perhaps an error is generated because something's wrong which I can't see at the moment. I'm curious what happens when you test the error status register (ESR) in an error handler routine using the error interrupt.
Does the counter work? Test the value of the CCR in short intervals. Maybe this helps to localise the problem.