본문 바로가기

Enginius/Firmware

PIC32 - TIMER


타이머 초기화

//초기화
void Init_timer()
{
	//타이머 인터럽트 초기화 (64us, 560us, 1000us)
	//타이머 1 초기화 
	OpenTimer1(T1_ON|T1_IDLE_CON |T1_PS_1_8 , 640);
	OpenTimer4(T4_ON|T4_IDLE_CON |T4_PS_1_8 , 5600);
	OpenTimer5(T5_ON|T5_IDLE_CON |T5_PS_1_8 , 10000);	
	mT1IntEnable(1);
	mT4IntEnable(1);
	mT5IntEnable(1);;
	mT1SetIntPriority(3);
	mT4SetIntPriority(3);
	mT5SetIntPriority(3);	
}

//64us 타이머 인터럽트 루틴 
void __ISR(_TIMER_1_VECTOR,ipl3) _t1(void) 
{
	mT1ClearIntFlag();
	tmr1cnt++;
	g_Tick0++;

	if(tmr1cnt % 1000 == 0)//
		mPORTAToggleBits(BIT_0);
}	

//560us 타이머 인터럽트 루틴 
void __ISR(_TIMER_4_VECTOR,ipl3) _t4(void) 
{
	mT4ClearIntFlag();
	tmr4cnt++;
	g_Tick1++;

	if(tmr4cnt % 1000 == 0)// 0.56초에 한번
		mPORTAToggleBits(BIT_1);
}	

//1000us 타이머 인터럽트 루틴 //
void __ISR(_TIMER_5_VECTOR,ipl3) _t5(void) 
{
	mT5ClearIntFlag();
	tmr5cnt++;
	g_Tick2++;

	if(tmr5cnt % 1000 == 0)//1초에 한번
		mPORTAToggleBits(BIT_2);
	
	
	
}
레지스터를 이용해서 초기화
void Init_timer5()
{

	T5CON = T5_IDLE_CON | T5_PS_1_8;
	TMR5 = 0;
	PR5 = 10000;
	T5CONSET = T5_ON;
	mT5IntEnable(1);
	mT5SetIntPriority(3);	
}

'Enginius > Firmware' 카테고리의 다른 글

NEC 코드 리모컨  (0) 2010.04.16
PIC32 - UART  (2) 2010.04.13
PIC32 - SPI  (0) 2010.04.13
PIC32 - PWM  (0) 2010.02.19
PIC32 - Input Capture  (0) 2010.02.19