#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;}
}