[DSP]/PICCOLO2011. 4. 30. 20:30

[TMS320F28069 EVM] Timer Interrupt Test - 1초 만들기

[TMS320F28069] Timer Interrupt Test - 1초 만들기

TMS320F28069 Piccolo시리즈는 3개의 32비트 시스템 타이머가 있다.



시스템 타이머 초기화 함수
ConfigCpuTimer() 함수를 이용하면 쉽게 설정 가능하다. 설정할 인자는 각각 아래와 같다.

//-----------------------------------------------------------------------------
//Timer0 Init
void Timer0Init(void)
{
 //인터럽트 루핸들러 설정
 EALLOW;
 PieVectTable.TINT0 = &Timer0Isr;
 EDIS;

//CPU Timer초기화
 InitCpuTimers();

 // Configure CPU-Timer 0 to interrupt every second:
 // 80MHz CPU Freq, 1 second Period (in uSeconds)
 ConfigCpuTimer(&CpuTimer0, 80, 1000);
 StartCpuTimer0();
 
 // Enable CPU INT1 which is connected to CPU-Timer 0:
    IER |= M_INT1;

 // Enable TINT0 in the PIE: Group 1 interrupt 7
    PieCtrlRegs.PIEIER1.bit.INTx7 = 1;
    
 // Enable global Interrupts and higher priority real-time debug events:
    ERTM;   // Enable Global realtime interrupt DBGM    
}
//-----------------------------------------------------------------------------

interrupt void Timer0Isr(void)
{
 Timer0Handler(); 

 // Acknowledge this interrupt to receive more interrupts from group 1
 PieCtrlRegs.PIEACK.all = PIEACK_GROUP1;
}



TMS320F28069 EVM Timer 테스트 예제 소스
1초마다 LED깜박이는 예제 테스트
#include "system.h"
#include "timer.h"

void Timer0Handler(void);

volatile unsigned int gTimeTick_1ms = 0;

void Timer0Handler(void)
{
 gTimeTick_1ms++;
}

void main(void)
{
 //DSP System Initialize
 SystemInit();

 Led1Init();
 Led1On();

 //타이 인터럽트 초기화
 Timer0Init();
 enable();  //Enable Global realtime interrupt

 while(1)
 {
  if(gTimeTick_1ms>1000)
  {
   gTimeTick_1ms = 0;
   Led1Toggle();
  }
 }
}  
Posted by nexp

댓글을 달아 주세요