Microprocessor/Code Composer Studio

DSP 기본 Code 설명

Dexter_- 2017. 6. 12. 15:58
728x90
반응형

초기화 코드

 
#include "DSP28x_Project.h"

static void InitInt(void);

Uint16 Loop_status;  

void main(void) 
{
    Loop_status = 0;

    /* Disable Global Interrupt */
    DINT;                                              

    /* 고속 CLOCK 설정 */
    EALLOW;
    /* HSPCLK = SYSCLKOUT/(HISPCP*2) 
     * HSPCLK = 150MHz/(1*2) = 75MHz */
    SysCtrlRegs.HISPCP.bit.HSPCLK = 1;                  
    EDIS;            

    /* 시스템 컨트롤 초기화 */
    InitSysCtrl();    
    InitInt();    

    EINT;   /* Enable Global interrupt INTM */
    ERTM;   /* Enable Global realtime interrupt DBGM */

    for(;;)
    {  
    	Loop_status++;
    }
}

static void InitInt(void)
{  
    /* 인터럽트 초기화 */
    InitPieCtrl();      /* PIE reg 개별 인터럽트 설정 초기화 */
    IER = 0x0000;       /* Core Inturrupts Enable Register 초기화 */ 
    IFR = 0x0000;       /* Core Inturrupts Flag Register 초기화 */
    InitPieVectTable(); /* 개별 인터럽트 확장 함수 */    
}

EINT : 전역 인터럽트 스위치 On

DINT : 전역 인터럽트 스위치 Off

ERTM : 리얼타임 전역 인터럽트 가동

DRTM : 리얼타임 전역 인터럽트 해제

EALLOW : Protected 영역에 쓰기를 위해 보호영역 해제

EDIS : Protected 영역 보호

ESTOP0 : 에뮬레이션 스탑 

 

HISPCP(High-Speed Peripheral Clock Prescaler) Register

저속회로에 고속클럭이 필요하거나 고속회로에 저속클럭이 필요한경우 HSPCLK 와 LSPCLK의 주파수 조정 레지스터를 사용하며, 각각 HISPCP 와 LOSPCP 로 구분된다.

 

void InitSysCtrl (void)

Step.1 와치독을 OFF 한다.

Step.2 PLLCR 레지스터를 설정하여 SYSCLKOUT을 생성한다.

Step.3 pre-scaler 를 설정하여 고속 주변장치 클럭과 저속  주변장치 클럭을 조정한다.

Step.4 클럭을 ON 하여 주변장치에 공급한다.

 

Interrupt 초기화 

Step.1 InitPieCtrl : 개별 인터럽트 설정플래그 비트를 모두 클리어한다.

Step.2 IER(Iterrupt Enable Register) : CPU 인터럽트 활성화 레지스터를 클리어한다.

Step.3 IFR(Interrupt Flag Register) : CPU 인터럽트 플래그 레지스터를 클리어한다.

Step.4 InitPieVectTable : PIE(Peripheral Interrupt Expansion) 벡터 테이블을 초기화 한다. 

 

System Control and Interrupt Data Sheet :    

sprufb0d(PIE).pdf
다운로드

 

 

728x90
반응형