Sarà che sono nel divano con la febbre da un paio di giorni e quindi non proprio lucidissimo

ma non mi riesce di far andare questo benedetto interrupt come dico io (e come dice il datasheet, credo

).
Come da manuale (il pic in oggetto è il pic18f2455) :
l'int2 è un registro a 8 bit e viene incrementato alla frequenza di Fosc:4
Avendo io un quarzo a 4Mhz con PLL attivato ho un clock interno a 96Mhz che con la divisione minima per 2 porta ad un clock per il pic di 48Mhz.
Il timer2 viene quindi incrementato alla frequenza di 12Mhz (48:4, appunto), cioè ogni 0,0833 uSec.
Se imposto il prescaler a 16 si incrementa ogni 1,333 uSec
Il timer2 viene ad ogni ciclo confrontato con un registro di periodo: se sono uguali viene resettato il timer2 e generato un output di match verso il postscaler. Il postscaler non è altro che un contatore che ad una soglia prefissata (da 1 a 16) genera (finalmente!) l'interrupt.
Sembra complicato, ma non lo è.
Bene, detto tutto ciò e tornando alle mie impostazioni: l'incremento avviene ogni 1,333 uSec. Se imposto il registro di periodo a 124 ottengo un match ogni 166,6 uSec.
Se setto il postscaler a 6, ottengo finalmente un INT ogni millisecondo circa.
Giusto?
Sbagliato; facendo un semplice bip ogni 1000 interruzioni la frequenza ottenuta è molto più bassa, di circa 1/3.
PORCACCIA LA MISERIA, PERCHE???????
PS: per sicurezza, ho fatto una cosa simile con l'int0 e la frequenza è corretta...