hola, tengo este programita para usar el t1, pero, aunque lo pongo en marcha (TMR1ON=1;), nunca llega a generarse ni la primera interrupcion del t1. (lo se porque no se enciende el led en rb1), ¿veis algo mal??
#include <pic1687x.h>
#define valor_t1_h 0x85 // 4.000.000(fosc)/4*8(prescaler)=125.000Hz ************ 1/125.000 s ->125.000 incrementos para obtener 1s ******* 16bits sólo dan para 65.536 incrementos ***** hacemos 4 incrementos de 31.250 osea que recargamos con 65.536-31.250=85ee
#define valor_t1_l 0xee
void interrupcion_t1()
{RB1=1;
TMR1L=valor_t1_l;TMR1H=valor_t1_h; //recargar t1
}
static void interrupt ISR ()
{if(TMR1IF==1)
{interrupcion_t1();
TMR1IF = 0;
}
}
void main()
{ TRISB1=0;
GIE=1; //habilitar int general
TMR1IE=1; //habilitar int t1
TMR1CS=0; //Timer1 en modo Timer, incrementa con oscilador interno (fosc/4)
T1CKPS1=1; //prescaler a 1/8
T1CKPS0=1;
TMR1H=valor_t1_h;
TMR1L=valor_t1_l;//cargar t1
T1OSCEN=1; //activar t1 oscilador
TMR1ON=1; //para echar a andar el t1
while(1);
}