[ntp:questions] Kernel PPS programs.

unruh unruh at invalid.ca
Wed Feb 8 17:45:55 UTC 2012


On 2012-01-22, David Woolley <david at ex.djwhome.demon.invalid> wrote:
> unruh wrote:
>
>> I suppose I could turn of the interrupts on the card for 500ms then turn
>> them on again to catch the next PPS, but that is a real kludge.
>
> In the 1970s, level triggering was the norm.
>
> The response to ACK is supposed to be to load another outgoing byte or 
> to turn off interrupts on the card.  Using it for an open loop PPS 
> signal is abusing it in a way that only works with edge triggered 
> interrupts.

well, not necessarily. The interrupt controller on the card could be
such that the interrupt line from the card to the computer is switched
on when the level becomes high, and stays on as long as the level is
high and the the card has not had its "interrupt serviced" flag set.
When the line goes low, the interrupt serviced flag is also reset , so
that at the next level switch it interrupts again. That is how shareable
interrupts are supposed to work. A shareable interupt should not keep
interrupting. 
Now maybe there is such a flag on that chipset, and I just have not
understood the documentation well enough.

By the way, why should the response be to turn off interrupts on the
card? That would mean that you could never again have an interrupt
unless you turned them on again, and if you turned them on before the
ack went low, you would then again get an immediate interrupt. It really
sounds to me that the card is defective  (or that I do not understand
it, which is at least as possible).

Does anyone know how the kernel PPS works? Does it only work with the
old edge triggered "single card per interrupt" type parallel cards, or
does it work with the modern level triggered interrupts. The pps_parport
modules does not seem to have any "card" instructions in it, so it must
go through the parport driver, but again that seems to deal only withe
the edge triggered cards.



More information about the questions mailing list