//
// Timer2.c
//



#include <Timer2.h>
#include <RB_TIM.h>
#include <RB_RCC.h>
#include <RB.h>
#include <RB_NVIC.h>
#include <LED.h>

#define UIF 0x00000001;

void TIM2_init (void)
{
		// Periphery Timer 2 initialisieren
	APBClockEnable (PERIPHERY_APB_TIM02);

		// TIM2 - TIM5 initialisieren (Referenz siehe RM0090 ab S. 392)
	
	/*
	Timer zählt herunter, 
	der Prescaler teilt die Taktfrequenz des uC um 65536 (--> kleinst mögliche Rate)
	*/

	rbTIM02.CR1		|= 0x0096;			// CKD = 00, ARPE = 1, CMS = 00, DIR = 1, OPM = 0, URS = 1, UDIS = 1, CEN setzen um Timer zu starten.
	/*
	
	*/
	rbTIM02.DIER	|= 0x0001;			//	Update Interrupt enable
	rbTIM02.PSC		 = 0xFFFF;			// 168.000.000/(65.535+1)~= 2563 
	rbTIM02.ARR		 = 0x0502;			// 2563*0,5 = 1281,5 --> 1282(D)=502(H)
	rbTIM02.CNT		 = 0U;					// <- wie muss das Register gesetzt werden?
	
	
	// Interrupts fuer Timer2 freigeben
	
	EXTIRQ_SET_ENA (TIM02);													// Schaltet Interrupt fuer Timer2 frei
	
}


void TIM2_IRQHandler(void)
{
	//UIF zurueck setzen
	rbTIM02.SR = rbTIM02.SR ^ UIF; // XOR verknuepfung mit Statusregister		 
	
	LED (off, green);
	LED (on, red);
}



