#include <kd_sfrs.h>
#define OVFS_POR_SEG 20
unsigned int timer2_seg;
unsigned int timer2_ovf;
unsigned int auxiliar;
extern unsigned int t2_ovf_hsi;
void inits_timer2 () {
timer2_ovf=0;
timer2_seg=0;
/* Deshabilitem les interrupcions i les PTS */
asm {
dpts;
di;
}
wsr=0x00;
int_mask1 |= 0x10; // T2OVF
wsr=0x0f;
auxiliar=ioc0;
wsr=0x00;
auxiliar &= 0xf7;
ioc0=auxiliar; // desactivo EXTRST del timer2
wsr=0x0f;
auxiliar=ioc2;
wsr=0x00;
auxiliar |= 0x02;
ioc2=auxiliar; // Configurem el TIMER2 per comptar UP en normal mode, al rang
// FFFFh-0000h.
wsr=0x01;
ioc3 = ioc3 | 0x01; // Seleccionem el clock intern pel TIMER2
wsr=0x00;
timer2=0; // Carreguem els valors inicials als comptadors
asm { ei;}
}
void RSITimer2() {
// Incrementa el comptador de interrupcions del timer i avisa que sa produit una interrupcio
// i reprograma el timer2
asm {di;}
t2_ovf_hsi++; // Para poder contar bien el tiempo entre HSI y HSI
timer2_ovf++;
// contamos en overflows pero transformamos a segundos
if (timer2_ovf==OVFS_POR_SEG) {
++timer2_seg;
timer2_ovf=0;
}
// El timer2 sigue contando, automáticamente
asm {ei;}
}