Microprocessor/DSP (TMS320F28x) TR28335 개발 KIT CPU Timer 인터럽트 사용
  • 728x90
    반응형

     

     

     

    CPU Timer Interrupt

    SOURCE TR28335_Timer.c

    /*==========================================
     *
     * FILE  : TR28335_Timer.h .2017
     * TITLE : TR28335 Timer Interrupt Control 
     *
     *==========================================*/ 
    #include "header/TR28335_Timer.h"
    #include "header/TR28335_Led.h"
    
    static interrupt void cpu_Timer0_Isr(void);
    
    Uint32 tickCnt;
    /*=============================================
    *
    * Name        : InitTimer
    * Type        : Fucntion
    * Description : Timer Interrupt Initialization 
    *
    ===============================================*/
    void InitTimer0(void)
    {
        tickCnt = 0;
        
        EALLOW;
        PieVectTable.TINT0 = &cpu_Timer0_Isr;
        EDIS;
        
        InitCpuTimers();
    
        /* CPU Timer0 을 1초 주기로 설정 */
        ConfigCpuTimer(&CpuTimer0, 150, 1000000);
    
        /* CPU Timer0 시작 */
        StartCpuTimer0();    
    
        /* CPU Timer0 인터럽트 활성화 */
        PieCtrlRegs.PIEIER1.bit.INTx7 = 1;      /* PIE 인터럽트 (TINT0) 활성화 */
        IER |= M_INT1;                          /* CPU 인터럽트 (INT1) 활성화  */
        
        return ;
    }
    
    /*==============================================
    *
    * Name        : cpu_Timer0_Isr
    * Type        : Interrupt
    * Description : Timer0 Interrupt Service Routine 
    *
    ================================================*/
    static interrupt void cpu_Timer0_Isr(void)
    {     
        /* Interrupt 발생시 동작 Code */
        tickCnt++;
        CtrlLed(LED_ALL, LED_TOGGLE);
        
        PieCtrlRegs.PIEACK.all = PIEACK_GROUP1;     /* Acknowledge interrupt to PIE */
        
        return ;
    }
     

     

    코드 분석

     

    • Step .1 : CPU-TIMER 는 0~2까지 있으며 본 예제에서는 CPU-TIMER0을 사용하도록 한다.

     

     

    • Step .2 TINT0 : TINT0(Timer Interrupt 0)을 PieVectTable 에 Mapping 시킨다. 인터럽트가 발생하면 cpu_Timer0_Isr 루틴이 발생하게 된다.

     

     

    • Step .3 InitCpuTimers : CpuTimer를 초기화 하는 함수이다. 함수의 구현은 DSP2833x_CpuTimers.c 에 되어있다.

     

     

    • Step .4 ConfigCpuTimer : Cpu Timer 설정이다. 전달인자 2개를 입력 받아 (150Hz, 1,000,000usec) 값의 곱으로 CpuTimer의 주기를 설정하도록 구현되어 있다.

     

     

    • Step .5 StartCpuTimer0 : Cpu Timer를 시작하는 즉, TSS비트 영역에 0을 넣음으로써 CpuTimer를 시작하도록 구현한 합수이다.

     

     

    • Step .6 INTx7 : PIEIER1 PIE, INT1 Group Enable Register 를 1로 셋하여 활성화 한다.

     

    💡 결과

     

    tickCnt 가 1초 주기로 카운팅 되며 TR28835 LED가 1초 주기로 토글 된다.

     

     

     

    728x90
    반응형
상단으로