본문 바로가기

[MCU]/CANTUS

[CANTUS] Timer 테스트 - 타이머 인터럽트를 이용하여 1초 만들기

[CANTUS] Timer 테스트 - 타이머 인터럽트를 이용하여 1초 만들기

CANTUS의 Timer는 15bit Pre-scaler를 내장한 32 Bit Timer로 8채널을 가지고 있다.
엄청 많은데... 혹 다른 기능들 하고 겹치진 않겠지? (좀더 알아볼 필요가 있다.) 아무튼 스펙은 좋다.





Timer Interrupt를 사용하기 위해 Interrupt.c의 setinterrupt() 함수를 사용하면 된다.
BOOL setinterrupt(INTNUM_TIMER0, void (*fp)())


Interrupt Service Routine(ISR)이 Vector Table에 Setting되면 Interrupt를 Enable 한다.
void EnableInterrupt(INTNUM_TIMER0, TRUE);




CANTUS 타이머 제어 레지스터
Lib사용할 경우 아래 함수로 쉽게 설정 가능하다.
BOOL settimer(int nCh,U32 ms);






CANTUS Timer 테스트 예제코드

#include "system.h"
#include "serial.h"


volatile unsigned int gTimerTick1_1ms = 0;


//----------------------------------------------------------------------------
//Timer Interrupt Handler
void Timer0ISR(void)
{

 gTimerTick1_1ms++;

}
//----------------------------------------------------------------------------


int main()
{
 int flag = 0;
 
 SystemInit();

 Led1Init();
 Led1On();

 U0_Init(BAUD_115200);
 DebugPrint("adStar EVM - Timer Test\r\n");



 //Timer  초기화

 InitInterrupt();

 setinterrupt(INTNUM_TIMER0,Timer0ISR);

 settimer(0,1);


 while(1)
 {
  if( gTimerTick1_1ms>1000)
  {
   gTimerTick1_1ms = 0;
    
   flag ^= 1;
   if(flag)Led1On();
   else Led1Off();
  }
 }
 
 return 0;
}



반응형