This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

TMS320F280049: 关于中断的使能

Part Number: TMS320F280049


 你好:

 在程序中,通过EPWM5,在ET_CTR_ZERO时刻使能中断,配置如下:

// Interrupt where we will change the Deadband
EPwm5Regs.ETSEL.bit.INTSEL = ET_CTR_ZERO; // Select INT on Prd event
EPwm5Regs.ETSEL.bit.INTEN = 1; // Enable INT
EPwm5Regs.ETPS.bit.INTPRD = ET_1ST; // Generate INT on 1st event

但是在程序中,通过读取初始段TBCRT数值,发现始终是从TBPRD开始的下降过程,感觉这个与配置不符

尝试将触发时刻更改为PRD时刻,读取的数值还是从从TBPRD开始的下降过程,

感觉始终是从PRD进入,这个配置对中断进入时刻没有影响,与配置文件不符,反复核查配置文件,没有发现为什么一直是PRD时刻进入中断,能不能帮忙看一下什么原因,多谢。

附件为PWM配置文件。



#include "f28004x_device.h"      // Header File Include File
#include <Drv_config.h>    // Examples Include File

//---------------------------------------------------------------------------
// InitEPwm: 
//---------------------------------------------------------------------------
// This function initializes the ePWM(s) to a known state.
//
void InitEPwm(void)
{
	// Initialize ePWM
	InitEPwm1Gpio();
	InitEPwm2Gpio();
	InitEPwm3Gpio();
	InitEPwm4Gpio();
	InitEPwm5Gpio();
	InitEPwm6Gpio();
	InitEPwmFAN();
	
	InitTz();//
	
	//mOffDcdcPwm();
	InitEPwm1();
	InitEPwm2();
	InitEPwm3();
	InitEPwm4();
	InitEPwm5();
	InitEPwm6();

	InitEPwm7();            //Trigger ADCSOC
	InitEPwm8();            //FAN PWM

	EALLOW;
    EPwm1Regs.TBCTL.bit.SWFSYNC = 1; //���ͬ��һ��DC�ĸ�PWM���ع�,1Ϊmaster
	EDIS;
}

void InitEPwm1Gpio(void)
{
   EALLOW;

/* Disable or Enable internal pull-up for the selected output pins for reduced power consumption */
// Pull-ups can be enabled or disabled by the user.
// Comment out other unwanted lines.
   //GpioCtrlRegs.GPAPUD.bit.GPIO0 = 0;   // Enable pullup on GPIO0
   //GpioCtrlRegs.GPAPUD.bit.GPIO1 = 0;   // Enable pullup on GPIO1
   GpioCtrlRegs.GPAPUD.bit.GPIO0 = 1;    // Disable pull-up on GPIO0 (EPWM1A)
   GpioCtrlRegs.GPAPUD.bit.GPIO1 = 1;    // Disable pull-up on GPIO1 (EPWM1B)

/* Configure EPWM-1 pins using GPIO regs*/
// This specifies which of the possible GPIO pins will be EPWM1 functional pins.
// Comment out other unwanted lines.

    GpioCtrlRegs.GPAMUX1.bit.GPIO0 = 1;   // Configure GPIO0 as EPWM1A
    GpioCtrlRegs.GPAMUX1.bit.GPIO1 = 1;   // Configure GPIO1 as EPWM1B
    EDIS;
}

void InitEPwm2Gpio(void)
{
   EALLOW;

/* Disable or Enable internal pull-up for the selected output pins
   for reduced power consumption */
// Pull-ups can be enabled or disabled by the user.
// This will enable the pullups for the specified pins.
// Comment out other unwanted lines.
    //GpioCtrlRegs.GPAPUD.bit.GPIO2 = 0;   // Enable pullup on GPIO2
    //GpioCtrlRegs.GPAPUD.bit.GPIO3 = 0;   // Enable pullup on GPIO3
    GpioCtrlRegs.GPAPUD.bit.GPIO2 = 1;    // Disable pull-up on GPIO2 (EPWM2A)
    GpioCtrlRegs.GPAPUD.bit.GPIO3 = 1;    // Disable pull-up on GPIO3 (EPWM2B)

/* Configure EPwm-2 pins using GPIO regs*/
// This specifies which of the possible GPIO pins will be EPWM2 functional pins.
// Comment out other unwanted lines.

    GpioCtrlRegs.GPAMUX1.bit.GPIO2 = 1;   // Configure GPIO2 as EPWM2A
    GpioCtrlRegs.GPAMUX1.bit.GPIO3 = 1;   // Configure GPIO3 as  EPWM2B

    EDIS;
}

void InitEPwm3Gpio(void)
{
   EALLOW;

/* Disable or Enable internal pull-up for the selected output pins
   for reduced power consumption */
// Pull-ups can be enabled or disabled by the user.
// This will enable the pullups for the specified pins.
// Comment out other unwanted lines.
    //GpioCtrlRegs.GPAPUD.bit.GPIO4 = 0;   // Enable pullup on GPIO4
    //GpioCtrlRegs.GPAPUD.bit.GPIO5 = 0;   // Enable pullup on GPIO5
    GpioCtrlRegs.GPAPUD.bit.GPIO4 = 1;    // Disable pull-up on GPIO4 (EPWM3A)
    GpioCtrlRegs.GPAPUD.bit.GPIO5 = 1;    // Disable pull-up on GPIO5 (EPWM3B)

/* Configure EPwm-3 pins using GPIO regs*/
// This specifies which of the possible GPIO pins will be EPWM3 functional pins.
// Comment out other unwanted lines.

    GpioCtrlRegs.GPAMUX1.bit.GPIO4 = 1;   // Configure GPIO4 as EPWM3A
    GpioCtrlRegs.GPAMUX1.bit.GPIO5 = 1;   // Configure GPIO5 as EPWM3B

    EDIS;
}

void InitEPwm4Gpio(void)
{
   EALLOW;
/* Disable or Enable internal pull-up for the selected output pins
   for reduced power consumption */
// Pull-ups can be enabled or disabled by the user.
// This will enable the pullups for the specified pins.
// Comment out other unwanted lines.
    //GpioCtrlRegs.GPAPUD.bit.GPIO6 = 1;    // Enable pull-up on GPIO6 (EPWM4A)
    //GpioCtrlRegs.GPAPUD.bit.GPIO7 = 1;    // Enable pull-up on GPIO7 (EPWM4B)
    GpioCtrlRegs.GPAPUD.bit.GPIO6 = 1;    // Disable pull-up on GPIO6 (EPWM4A)
    GpioCtrlRegs.GPAPUD.bit.GPIO7 = 1;    // Disable pull-up on GPIO7 (EPWM4B)

/* Configure EPWM-4 pins using GPIO regs*/
// This specifies which of the possible GPIO pins will be EPWM4 functional pins.
// Comment out other unwanted lines.

    GpioCtrlRegs.GPAMUX1.bit.GPIO6 = 1;   // Configure GPIO6 as EPWM4A
    GpioCtrlRegs.GPAMUX1.bit.GPIO7 = 1;   // Configure GPIO7 as EPWM4B

    EDIS;
}

void InitEPwm5Gpio(void)
{
   EALLOW;
/* Disable or Enable internal pull-up for the selected output pins for reduced power consumption */
// Pull-ups can be enabled or disabled by the user.
// This will enable the pullups for the specified pins.
// Comment out other unwanted lines.
    //GpioCtrlRegs.GPAPUD.bit.GPIO8 = 1;    // Enable pull-up on GPIO8 (EPWM5A)
    //GpioCtrlRegs.GPAPUD.bit.GPIO9 = 1;    // Enable pull-up on GPIO9 (EPWM5B)
    GpioCtrlRegs.GPAPUD.bit.GPIO8 = 1;    // Disable pull-up on GPIO8 (EPWM5A)
    GpioCtrlRegs.GPAPUD.bit.GPIO9 = 1;    // Disable pull-up on GPIO9 (EPWM5B)

/* Configure EPWM-5 pins using GPIO regs*/
// This specifies which of the possible GPIO pins will be EPWM5 functional pins.
// Comment out other unwanted lines.

    GpioCtrlRegs.GPAMUX1.bit.GPIO8 = 1;   // Configure GPIO8 as EPWM5A,not GPIO
    GpioCtrlRegs.GPAMUX1.bit.GPIO9 = 1;   // Configure GPIO9 as EPWM5B,not GPIO

    EDIS;
}

void InitEPwm6Gpio(void)
{
   EALLOW;
/* Disable or Enable internal pull-up for the selected output pins for reduced power consumption */
// Pull-ups can be enabled or disabled by the user.
// This will enable the pullups for the specified pins.
// Comment out other unwanted lines.
    //GpioCtrlRegs.GPAPUD.bit.GPIO10 = 0;    // Disable pull-up on GPIO10 (EPWM6A)
    //GpioCtrlRegs.GPAPUD.bit.GPIO11 = 0;    // Disable pull-up on GPIO11 (EPWM6B)
    GpioCtrlRegs.GPAPUD.bit.GPIO10 = 1;    // Disable pull-up on GPIO10 (EPWM6A)
    GpioCtrlRegs.GPAPUD.bit.GPIO11 = 1;    // Disable pull-up on GPIO11 (EPWM6B)

/* Configure EPWM-6 pins using GPIO regs*/
// This specifies which of the possible GPIO pins will be EPWM6 functional pins.
// Comment out other unwanted lines.

    GpioCtrlRegs.GPAMUX1.bit.GPIO10 = 1;   // Configure GPIO10 as GPIO,not EPWM6A
    GpioCtrlRegs.GPAMUX1.bit.GPIO11 = 1;   // Configure GPIO11 as GPIO,not EPWM6B

    EDIS;
}

void InitEPwmFAN(void)
{
   EALLOW;
/* Disable or Enable internal pull-up for the selected output pins for reduced power consumption */
// Pull-ups can be enabled or disabled by the user.
// This will enable the pullups for the specified pins.
// Comment out other unwanted lines.
    //GpioCtrlRegs.GPAPUD.bit.GPIO10 = 0;    // Disable pull-up on GPIO10 (EPWM6A)
    //GpioCtrlRegs.GPAPUD.bit.GPIO11 = 0;    // Disable pull-up on GPIO11 (EPWM6B)
    //GpioCtrlRegs.GPAPUD.bit.GPIO10 = 1;    // Disable pull-up on GPIO10 (EPWM6A)
    GpioCtrlRegs.GPAPUD.bit.GPIO15 = 1;    // Disable pull-up on GPIO11 (EPWM6B)

/* Configure EPWM-6 pins using GPIO regs*/
// This specifies which of the possible GPIO pins will be EPWM6 functional pins.
// Comment out other unwanted lines.

    //GpioCtrlRegs.GPAMUX1.bit.GPIO10 = 1;   // Configure GPIO10 as GPIO,not EPWM6A
    GpioCtrlRegs.GPAMUX1.bit.GPIO15 = 1;   // Configure GPIO11 as GPIO,not EPWM6B

    EDIS;
}


void InitTz()
{
	//EPwm1
	EALLOW;
	EPwm1Regs.TZCLR.bit.CBC = 1;		//Clear trip
	EPwm1Regs.TZSEL.bit.CBC1 = 1;     //CBC
	EPwm1Regs.TZCTL.bit.TZA = TZ_FORCE_LO;///TZ_FORCE_LO;
	EPwm1Regs.TZCTL.bit.TZB = TZ_FORCE_LO;
    EPwm1Regs.TZDCSEL.bit.DCBEVT2 =0x2;//DCBH = high, DCBL = don't care
    //                                       001: DCBH = low, DCBL = don't care
    //                                       010: DCBH = high, DCBL = don't care
    //                                       011: DCBL = low, DCBH = don't care
    //                                       100: DCBL = high, DCBH = don't care
    //                                       101: DCBL = high, DCBH = low

    EPwm1Regs.DCBHTRIPSEL.bit.TRIPINPUT4 = 1;//ѡ����բ����4��ΪDCBH mux����ϡ�������
    EPwm1Regs.DCBHTRIPSEL.bit.TRIPINPUT5 = 1;

    EPwm1Regs.DCBHTRIPSEL.bit.TRIPINPUT7 = 1;
    EPwm1Regs.DCBHTRIPSEL.bit.TRIPINPUT8 = 1;
    EPwm1Regs.DCBHTRIPSEL.bit.TRIPINPUT9 = 1;
    EPwm1Regs.DCBHTRIPSEL.bit.TRIPINPUT10 = 1;

    EPwm1Regs.DCTRIPSEL.bit.DCBHCOMPSEL = 0xf;//TZ����������Ȩ����

    EPwm1Regs.TZSEL.bit.DCBEVT2 =0x01;//�Ƚ������B CBC trip source
    EPwm1Regs.DCBCTL.bit.EVT2SRCSEL = 0;
	EDIS;

	//EPwm2
	EALLOW;
	EPwm2Regs.TZCLR.bit.CBC = 1;        //Clear trip
    EPwm2Regs.TZSEL.bit.CBC1 = 1;     //CBC
    EPwm2Regs.TZCTL.bit.TZA = TZ_FORCE_LO;///TZ_FORCE_LO;
    EPwm2Regs.TZCTL.bit.TZB = TZ_FORCE_LO;
    EPwm2Regs.TZDCSEL.bit.DCBEVT2 =0x2;//DCBH = high, DCBL = don't care
    //                                       001: DCBH = low, DCBL = don't care
    //                                       010: DCBH = high, DCBL = don't care
    //                                       011: DCBL = low, DCBH = don't care
    //                                       100: DCBL = high, DCBH = don't care
    //                                       101: DCBL = high, DCBH = low

    EPwm2Regs.DCBHTRIPSEL.bit.TRIPINPUT4 = 1;//ѡ����բ����4��ΪDCBH mux����ϡ�������
    EPwm2Regs.DCBHTRIPSEL.bit.TRIPINPUT5 = 1;

    EPwm2Regs.DCBHTRIPSEL.bit.TRIPINPUT7 = 1;
    EPwm2Regs.DCBHTRIPSEL.bit.TRIPINPUT8 = 1;
    EPwm2Regs.DCBHTRIPSEL.bit.TRIPINPUT9 = 1;
    EPwm2Regs.DCBHTRIPSEL.bit.TRIPINPUT10 = 1;

    EPwm2Regs.DCTRIPSEL.bit.DCBHCOMPSEL = 0xf;//TZ����������Ȩ����

    EPwm2Regs.TZSEL.bit.DCBEVT2 =0x01;//�Ƚ������B CBC trip source
    EPwm2Regs.DCBCTL.bit.EVT2SRCSEL = 0;
	EDIS;

	//EPwm3
	EALLOW;
    EPwm3Regs.TZCLR.bit.CBC = 1;        //Clear trip
    EPwm3Regs.TZSEL.bit.CBC1 = 1;     //CBC
    EPwm3Regs.TZCTL.bit.TZA = TZ_FORCE_LO;///TZ_FORCE_LO;
    EPwm3Regs.TZCTL.bit.TZB = TZ_FORCE_LO;
    EPwm3Regs.TZDCSEL.bit.DCBEVT2 =0x2;//DCBH = high, DCBL = don't care
    //                                       001: DCBH = low, DCBL = don't care
    //                                       010: DCBH = high, DCBL = don't care
    //                                       011: DCBL = low, DCBH = don't care
    //                                       100: DCBL = high, DCBH = don't care
    //                                       101: DCBL = high, DCBH = low

    EPwm3Regs.DCBHTRIPSEL.bit.TRIPINPUT4 = 1;//ѡ����բ����4��ΪDCBH mux����ϡ�������
    EPwm3Regs.DCBHTRIPSEL.bit.TRIPINPUT5 = 1;

    EPwm3Regs.DCBHTRIPSEL.bit.TRIPINPUT7 = 1;
    EPwm3Regs.DCBHTRIPSEL.bit.TRIPINPUT8 = 1;
    EPwm3Regs.DCBHTRIPSEL.bit.TRIPINPUT9 = 1;
    EPwm3Regs.DCBHTRIPSEL.bit.TRIPINPUT10 = 1;

    EPwm3Regs.DCTRIPSEL.bit.DCBHCOMPSEL = 0xf;//TZ����������Ȩ����

    EPwm3Regs.TZSEL.bit.DCBEVT2 =0x01;//�Ƚ������B CBC trip source
    EPwm3Regs.DCBCTL.bit.EVT2SRCSEL = 0;
	EDIS;

	//EPwm4
	EALLOW;
    EPwm4Regs.TZCLR.bit.CBC = 1;        //Clear trip
    EPwm4Regs.TZSEL.bit.CBC1 = 1;     //CBC
    EPwm4Regs.TZCTL.bit.TZA = TZ_FORCE_LO;///TZ_FORCE_LO;
    EPwm4Regs.TZCTL.bit.TZB = TZ_FORCE_LO;
    EPwm4Regs.TZDCSEL.bit.DCBEVT2 =0x2;//DCBH = high, DCBL = don't care
    //                                       001: DCBH = low, DCBL = don't care
    //                                       010: DCBH = high, DCBL = don't care
    //                                       011: DCBL = low, DCBH = don't care
    //                                       100: DCBL = high, DCBH = don't care
    //                                       101: DCBL = high, DCBH = low

    EPwm4Regs.DCBHTRIPSEL.bit.TRIPINPUT4 = 1;//ѡ����բ����4��ΪDCBH mux����ϡ�������
    EPwm4Regs.DCBHTRIPSEL.bit.TRIPINPUT5 = 1;

    EPwm4Regs.DCBHTRIPSEL.bit.TRIPINPUT7 = 1;
    EPwm4Regs.DCBHTRIPSEL.bit.TRIPINPUT8 = 1;
    EPwm4Regs.DCBHTRIPSEL.bit.TRIPINPUT9 = 1;
    EPwm4Regs.DCBHTRIPSEL.bit.TRIPINPUT10 = 1;

    EPwm4Regs.DCTRIPSEL.bit.DCBHCOMPSEL = 0xf;//TZ����������Ȩ����

    EPwm4Regs.TZSEL.bit.DCBEVT2 =0x01;//�Ƚ������B CBC trip source
    EPwm4Regs.DCBCTL.bit.EVT2SRCSEL = 0;
	EDIS;

	//EPwm5
    EALLOW;
    EPwm5Regs.TZCLR.bit.CBC = 1;        //Clear trip
    EPwm5Regs.TZSEL.bit.CBC1 = 1;     //CBC
    EPwm5Regs.TZCTL.bit.TZA = TZ_FORCE_LO;///TZ_FORCE_LO;
    EPwm5Regs.TZCTL.bit.TZB = TZ_FORCE_LO;
    EPwm5Regs.TZDCSEL.bit.DCBEVT2 =0x2;//DCBH = high, DCBL = don't care
    //                                       001: DCBH = low, DCBL = don't care
    //                                       010: DCBH = high, DCBL = don't care
    //                                       011: DCBL = low, DCBH = don't care
    //                                       100: DCBL = high, DCBH = don't care
    //                                       101: DCBL = high, DCBH = low

    EPwm5Regs.DCBHTRIPSEL.bit.TRIPINPUT4 = 1;//ѡ����բ����4��ΪDCBH mux����ϡ�������
    EPwm5Regs.DCBHTRIPSEL.bit.TRIPINPUT5 = 1;

    EPwm5Regs.DCBHTRIPSEL.bit.TRIPINPUT7 = 1;
    EPwm5Regs.DCBHTRIPSEL.bit.TRIPINPUT8 = 1;
    EPwm5Regs.DCBHTRIPSEL.bit.TRIPINPUT9 = 1;
    EPwm5Regs.DCBHTRIPSEL.bit.TRIPINPUT10 = 1;

    EPwm5Regs.DCTRIPSEL.bit.DCBHCOMPSEL = 0xf;//TZ����������Ȩ����

    EPwm5Regs.TZSEL.bit.DCBEVT2 =0x01;//�Ƚ������B CBC trip source
    EPwm5Regs.DCBCTL.bit.EVT2SRCSEL = 0;
    EDIS;

    //EPwm6
    EALLOW;
    EPwm6Regs.TZCLR.bit.CBC = 1;        //Clear trip
    EPwm6Regs.TZSEL.bit.CBC1 = 1;     //CBC
    EPwm6Regs.TZCTL.bit.TZA = TZ_FORCE_LO;///TZ_FORCE_LO;
    EPwm6Regs.TZCTL.bit.TZB = TZ_FORCE_LO;
    EPwm6Regs.TZDCSEL.bit.DCBEVT2 =0x2;//DCBH = high, DCBL = don't care
    //                                       001: DCBH = low, DCBL = don't care
    //                                       010: DCBH = high, DCBL = don't care
    //                                       011: DCBL = low, DCBH = don't care
    //                                       100: DCBL = high, DCBH = don't care
    //                                       101: DCBL = high, DCBH = low

    EPwm6Regs.DCBHTRIPSEL.bit.TRIPINPUT4 = 1;//ѡ����բ����4��ΪDCBH mux����ϡ�������
    EPwm6Regs.DCBHTRIPSEL.bit.TRIPINPUT5 = 1;

    EPwm6Regs.DCBHTRIPSEL.bit.TRIPINPUT7 = 1;
    EPwm6Regs.DCBHTRIPSEL.bit.TRIPINPUT8 = 1;
    EPwm6Regs.DCBHTRIPSEL.bit.TRIPINPUT9 = 1;
    EPwm6Regs.DCBHTRIPSEL.bit.TRIPINPUT10 = 1;

    EPwm6Regs.DCTRIPSEL.bit.DCBHCOMPSEL = 0xf;//TZ����������Ȩ����

    EPwm6Regs.TZSEL.bit.DCBEVT2 =0x01;//�Ƚ������B CBC trip source
    EPwm6Regs.DCBCTL.bit.EVT2SRCSEL = 0;
    EDIS;

	InitTzXbar();
}

void InitTzXbar(void)
{
   EALLOW;

   EPwmXbarRegs.TRIP4MUX0TO15CFG.bit.MUX2 =0x0;// 00 : Select .0 input for Mux0
   EPwmXbarRegs.TRIP4MUXENABLE.bit.MUX2 =0x1;//Mux0����Ӧ���������������;

   EPwmXbarRegs.TRIP5MUX0TO15CFG.bit.MUX3 =0x0;// 00 : Select .0 input for Mux0
   EPwmXbarRegs.TRIP5MUXENABLE.bit.MUX3 =0x1;//Mux0����Ӧ���������������;

   EPwmXbarRegs.TRIP7MUX0TO15CFG.bit.MUX6 = 0x0;
   EPwmXbarRegs.TRIP7MUXENABLE.bit.MUX6 = 0x1;

   EPwmXbarRegs.TRIP8MUX0TO15CFG.bit.MUX7 = 0x0;
   EPwmXbarRegs.TRIP8MUXENABLE.bit.MUX7 = 0x1;

   EPwmXbarRegs.TRIP9MUX0TO15CFG.bit.MUX8 = 0x0;
   EPwmXbarRegs.TRIP9MUXENABLE.bit.MUX8 = 0x1;

   EPwmXbarRegs.TRIP10MUX0TO15CFG.bit.MUX9 = 0x0;
   EPwmXbarRegs.TRIP10MUXENABLE.bit.MUX9 = 0x1;

   EDIS;

}

void InitEPwm1(void)
{
// ePWM channel register configuration with HRPWM
// ePWMxA toggle low/high with MEP control on Rising edge
   EALLOW;
   CpuSysRegs.PCLKCR0.bit.TBCLKSYNC = 0;            // Disable TBCLK within the EPWM
   EDIS;

   ///EPWM2 config config for PWM2A/2B
   EPwm1Regs.TBCTL.bit.PRDLD = TB_SHADOW;           // set Shadow load
   EPwm1Regs.TBPRD = EPWM1_TIMER_TBPRD;          // (60M/250k-1)=239 Set timer period-120kHz,PWM frequency = 1/(2*TBPRD)
   EPwm1Regs.CMPA.bit.CMPA = EPWM1_MIN_CMPA;
   EPwm1Regs.CMPA.bit.CMPAHR = 0;                  // initialize HRPWM extension
   EPwm1Regs.CMPB.bit.CMPB = EPWM1_TIMER_TBPRD - EPWM1_MIN_CMPA;
   EPwm1Regs.CMPB.bit.CMPBHR = 0;
   EPwm1Regs.TBPHS.all = 0;
   EPwm1Regs.TBCTR = 0;
   
   // Setup TBCLK
   EPwm1Regs.TBCTL.bit.CTRMODE = TB_COUNT_UPDOWN;//TB_COUNT_UPDOWN TB_COUNT_UP;	// Select up-down count mode
   EPwm1Regs.TBCTL.bit.PHSEN = TB_ENABLE;        	// TB_ENABLE TB_DISABLE: TBCTR phase load on SYNC (required for updown count HR control
   EPwm1Regs.TBCTL.bit.PHSDIR = TB_UP; 				// Count TB_UP on sync
   EPwm1Regs.TBCTL.bit.SYNCOSEL = TB_SYNC_IN;		// pass on
   EPwm1Regs.TBCTL.bit.HSPCLKDIV = TB_DIV1;       	// Clock ratio to SYSCLKOUT
   EPwm1Regs.TBCTL.bit.CLKDIV = TB_DIV1;		  	// TBCLK = SYSCLKOUT / (HSPCLKDIV CLKDIV)
   EPwm1Regs.TBCTL.bit.FREE_SOFT = 11;

   //TBPRD is loaded from its shadow register on Counter = 0 event (CTR_zero)
   EPwm1Regs.CMPCTL.bit.LOADAMODE = CC_CTR_ZERO_PRD;//CC_CTR_ZERO_PRD;
   EPwm1Regs.CMPCTL.bit.LOADBMODE = CC_CTR_ZERO_PRD;//CC_CTR_ZERO_PRD;
   EPwm1Regs.CMPCTL.bit.SHDWAMODE = CC_SHADOW;
   EPwm1Regs.CMPCTL.bit.SHDWBMODE = CC_SHADOW;

   EPwm1Regs.AQCTLA.bit.CAD = AQ_SET;      //���������ظ߾���Ϊ�½��ظ߾���			
   EPwm1Regs.AQCTLA.bit.CAU = AQ_CLEAR;	//���������ظ߾���Ϊ�½��ظ߾���	
   EPwm1Regs.AQCTLB.bit.CBD = AQ_CLEAR;
   EPwm1Regs.AQCTLB.bit.CBU = AQ_SET;
///   EPwm1Regs.AQSFRC.bit.RLDCSF = 3;		//AQCSFRC Active Register Reload immediately

   //Setup Deadband
   EPwm1Regs.DBCTL.bit.OUT_MODE = DB_DISABLE;///DBB_ENABLE;//S1=1,S0=0
///   EPwm1Regs.DBCTL.bit.POLSEL = DB_ACTV_HI;//S3=0,S2=0
///   EPwm1Regs.DBCTL.bit.IN_MODE = DBA_RED_DBB_FED;//S5=1,S4=0
///   EPwm1Regs.DBRED = DC_DB_TIME_300NS;//DC_DB_TIME_300NS;

   // Interrupt where we will change the Deadband
   EPwm1Regs.ETSEL.bit.INTSEL = ET_CTR_ZERO;		// Select INT on Zero & PRD event
   EPwm1Regs.ETSEL.bit.INTEN = 1;					// Disable INT
   EPwm1Regs.ETPS.bit.INTPRD = ET_1ST;				// Generate INT on 1st event

//   EALLOW;
//   EPwm1Regs.HRCNFG.all = 0x0;
//   EPwm1Regs.HRCNFG.bit.HRLOAD  = HR_CTR_ZERO_PRD; 		//HR_CTR_ZERO_PRD load COMPAHR on CTR = 0 and CTR = TBPRD;HR_CTR_ZERO_PRD
//   EPwm1Regs.HRCNFG.bit.AUTOCONV = 1;              	// Enable autoconversion for HR period
//   EPwm1Regs.HRCNFG.bit.EDGMODE = HR_BEP;          	// MEP control on both edges
//   EPwm1Regs.HRCNFG.bit.CTLMODE = HR_CMP;          	// CMPAHR and TBPRDHR HR control
//
//   EPwm1Regs.HRPCTL.bit.TBPHSHRLOADE = 1;          	// Enable TBPHSHR sync (required for updwn count HR control)
//   EPwm1Regs.HRPCTL.bit.HRPE = 1;                  	// Turn on high-resolution period control.
//
/////   SysCtrlRegs.PCLKCR0.bit.TBCLKSYNC = 1;           // Enable TBCLK within the EPWM
/////   EPwm1Regs.TBCTL.bit.SWFSYNC = 1;                	// Synchronize high resolution phase to start HR period
//   EDIS;

}

void InitEPwm2(void)
{

// ePWM channel register configuration with HRPWM
// ePWMxA toggle low/high with MEP control on Rising edge
   EALLOW;
   CpuSysRegs.PCLKCR0.bit.TBCLKSYNC = 0;            // Disable TBCLK within the EPWM
   EDIS;

   ///EPWM2 config config for PWM2A/2B
   EPwm2Regs.TBCTL.bit.PRDLD = TB_SHADOW;           // set Shadow load
   EPwm2Regs.TBPRD = EPWM1_TIMER_TBPRD;    		 // (60M/250k-1)=239 Set timer period-120kHz,PWM frequency = 1/(2*TBPRD)
   EPwm2Regs.CMPA.bit.CMPA = EPWM1_MIN_CMPA;
   EPwm2Regs.CMPA.bit.CMPAHR = 0;		           // initialize HRPWM extension
   EPwm2Regs.CMPB.bit.CMPB = EPWM1_TIMER_TBPRD - EPWM1_MIN_CMPA;
   EPwm2Regs.CMPB.bit.CMPBHR = 0;
   EPwm2Regs.TBPHS.all = 0;
   EPwm2Regs.TBCTR = 0;

   // Setup TBCLK
   EPwm2Regs.TBCTL.bit.CTRMODE = TB_COUNT_UPDOWN;//TB_COUNT_UPDOWN TB_COUNT_UP;	// Select up-down count mode
   EPwm2Regs.TBCTL.bit.PHSEN = TB_ENABLE;        	// TB_ENABLE TB_DISABLE: TBCTR phase load on SYNC (required for updown count HR control
   EPwm2Regs.TBCTL.bit.PHSDIR = TB_UP; 				// Count TB_UP on sync
   EPwm2Regs.TBCTL.bit.SYNCOSEL = TB_SYNC_IN;		// Pass on
   EPwm2Regs.TBCTL.bit.HSPCLKDIV = TB_DIV1;       	// Clock ratio to SYSCLKOUT
   EPwm2Regs.TBCTL.bit.CLKDIV = TB_DIV1;		  	// TBCLK = SYSCLKOUT / (HSPCLKDIV CLKDIV)

   EPwm2Regs.TBCTL.bit.FREE_SOFT = 11;
   
   EPwm2Regs.CMPCTL.bit.LOADAMODE = CC_CTR_ZERO_PRD;
   EPwm2Regs.CMPCTL.bit.LOADBMODE = CC_CTR_ZERO_PRD;
   EPwm2Regs.CMPCTL.bit.SHDWAMODE = CC_SHADOW;
   EPwm2Regs.CMPCTL.bit.SHDWBMODE = CC_SHADOW;
   
   // Set actions
   EPwm2Regs.AQCTLA.bit.CAD = AQ_SET;
   EPwm2Regs.AQCTLA.bit.CAU = AQ_CLEAR;
   EPwm2Regs.AQCTLB.bit.CBD = AQ_CLEAR;
   EPwm2Regs.AQCTLB.bit.CBU = AQ_SET;

///   EPwm2Regs.AQSFRC.bit.RLDCSF = 3;		//AQCSFRC Active Register Reload immediately

   // Active Low PWMs - Setup Deadband
   EPwm2Regs.DBCTL.bit.OUT_MODE = DB_DISABLE;///DBB_ENABLE;//S1=1,S0=0
//   EPwm2Regs.DBCTL.bit.POLSEL = DB_ACTV_HI;//S3=0,S2=0
//   EPwm2Regs.DBCTL.bit.IN_MODE = DBA_RED_DBB_FED;//S5=1,S4=0
//   EPwm2Regs.DBRED = DC_DB_TIME_300NS;

   // Interrupt where we will change the Deadband
   EPwm2Regs.ETSEL.bit.INTSEL = ET_CTR_PRD;			// Select INT on Zero event
   EPwm2Regs.ETSEL.bit.INTEN = 0;					// Disable INT
   EPwm2Regs.ETPS.bit.INTPRD = ET_1ST;				// Generate INT on 1st event

//   EALLOW;
//   EPwm2Regs.HRCNFG.all = 0x0;
//   EPwm2Regs.HRCNFG.bit.HRLOAD  = HR_CTR_ZERO_PRD; 		// load on CTR = 0 and CTR = TBPRD
//   EPwm2Regs.HRCNFG.bit.AUTOCONV = 1;              	// Enable autoconversion for HR period
//   EPwm2Regs.HRCNFG.bit.EDGMODE = HR_BEP;          	// MEP control on both edges
//   EPwm2Regs.HRCNFG.bit.CTLMODE = HR_CMP;          	// CMPAHR and TBPRDHR HR control
//
//   EPwm2Regs.HRPCTL.bit.TBPHSHRLOADE = 1;          	// Enable TBPHSHR sync (required for updwn count HR control)
//   EPwm2Regs.HRPCTL.bit.HRPE = 1;                  	// Turn on high-resolution period control.
//
/////   EPwm2Regs.TBCTL.bit.SWFSYNC = 1;                	// Synchronize high resolution phase to start HR period
////   SysCtrlRegs.PCLKCR0.bit.TBCLKSYNC = 1;           // Enable TBCLK within the EPWM
//   EDIS;
}

void InitEPwm3(void)
{
// ePWM channel register configuration with HRPWM
// ePWMxA toggle low/high with MEP control on Rising edge
   EALLOW;
   CpuSysRegs.PCLKCR0.bit.TBCLKSYNC = 0;            // Disable TBCLK within the EPWM
   EDIS;

   ///EPWM3 config config for PWM2A/2B
   EPwm3Regs.TBCTL.bit.PRDLD = TB_SHADOW;           // set Shadow load
   EPwm3Regs.TBPRD = EPWM1_TIMER_TBPRD;          // (60M/250k-1)=239 Set timer period-120kHz,PWM frequency = 1/(2*TBPRD)
   EPwm3Regs.CMPA.bit.CMPA = EPWM1_MIN_CMPA;
   EPwm3Regs.CMPA.bit.CMPAHR = 0;                  // initialize HRPWM extension
   EPwm3Regs.CMPB.bit.CMPB = EPWM1_TIMER_TBPRD - EPWM1_MIN_CMPA;
   EPwm3Regs.CMPB.bit.CMPBHR = 0;
   EPwm3Regs.TBPHS.all = 0;
   EPwm3Regs.TBCTR = 0;
   
   // Setup TBCLK
   EPwm3Regs.TBCTL.bit.CTRMODE = TB_COUNT_UPDOWN;	// Select up-down count mode
   EPwm3Regs.TBCTL.bit.PHSEN = TB_ENABLE;        	//TB_ENABLE: TBCTR phase load on SYNC (required for updown count HR control
   EPwm3Regs.TBCTL.bit.PHSDIR = TB_UP; 				// Count TB_UP on sync (=120 deg)
   EPwm3Regs.TBCTL.bit.SYNCOSEL = TB_SYNC_IN;		// TB_SYNC_DISABLE TB_SYNC_IN
   EPwm3Regs.TBCTL.bit.HSPCLKDIV = TB_DIV1;       	// Clock ratio to SYSCLKOUT
   EPwm3Regs.TBCTL.bit.CLKDIV = TB_DIV1;		  	// TBCLK = SYSCLKOUT / (HSPCLKDIV CLKDIV)
   
   EPwm3Regs.TBCTL.bit.FREE_SOFT = 11;
   
   EPwm3Regs.CMPCTL.bit.LOADAMODE = CC_CTR_ZERO_PRD;
   EPwm3Regs.CMPCTL.bit.LOADBMODE = CC_CTR_ZERO_PRD;
   EPwm3Regs.CMPCTL.bit.SHDWAMODE = CC_SHADOW;
   EPwm3Regs.CMPCTL.bit.SHDWBMODE = CC_SHADOW;
   
   // Set actions
   EPwm3Regs.AQCTLA.bit.CAD = AQ_SET;
   EPwm3Regs.AQCTLA.bit.CAU = AQ_CLEAR;	
   EPwm3Regs.AQCTLB.bit.CBD = AQ_CLEAR;
   EPwm3Regs.AQCTLB.bit.CBU = AQ_SET;
///   EPwm3Regs.AQSFRC.bit.RLDCSF = 3;		//AQCSFRC Active Register Reload immediately			

   // Active Low PWMs - Setup Deadband
   EPwm3Regs.DBCTL.bit.OUT_MODE = DB_DISABLE;///DBB_ENABLE;//S1=1,S0=0
///   EPwm3Regs.DBCTL.bit.POLSEL = DB_ACTV_HI;//S3=0,S2=0
///   EPwm3Regs.DBCTL.bit.IN_MODE = DBA_RED_DBB_FED;//S5=1,S4=0
///   EPwm3Regs.DBRED = DC_DB_TIME_300NS;
   
   // Interrupt where we will change the Deadband
   EPwm3Regs.ETSEL.bit.INTSEL = ET_CTR_PRD;			// Select INT on Prd event
   EPwm3Regs.ETSEL.bit.INTEN = 0;					// Disable INT
   EPwm3Regs.ETPS.bit.INTPRD = ET_1ST;				// Generate INT on 1st event
   
//   EALLOW;
//   EPwm3Regs.HRCNFG.all = 0x0;
//   EPwm3Regs.HRCNFG.bit.HRLOAD  = HR_CTR_ZERO_PRD; 		// load on CTR = 0 and CTR = TBPRD
//   EPwm3Regs.HRCNFG.bit.AUTOCONV = 1;              	// Enable autoconversion for HR period
//   EPwm3Regs.HRCNFG.bit.EDGMODE = HR_FEP;///HR_BEP;          	// MEP control on both edges
//   EPwm3Regs.HRCNFG.bit.CTLMODE = HR_CMP;          	// CMPAHR and TBPRDHR HR control
//
//   EPwm3Regs.HRPCTL.bit.TBPHSHRLOADE = 1;          	// Enable TBPHSHR sync (required for updwn count HR control)
//   EPwm3Regs.HRPCTL.bit.HRPE = 1;                  	// Turn on high-resolution period control.
//
////   EPwm3Regs.TBCTL.bit.SWFSYNC = 1;                	// Synchronize high resolution phase to start HR period
////   SysCtrlRegs.PCLKCR0.bit.TBCLKSYNC = 1;           // Enable TBCLK within the EPWM
//   EDIS;
}

void InitEPwm4(void)
{
// ePWM channel register configuration with HRPWM
// ePWMxA toggle low/high with MEP control on Rising edge
   EALLOW;
   CpuSysRegs.PCLKCR0.bit.TBCLKSYNC = 0;            // Disable TBCLK within the EPWM
   EDIS;

   ///EPWM4 config config for PWM2A/2B
   EPwm4Regs.TBCTL.bit.PRDLD = TB_SHADOW;           // set Shadow load
   EPwm4Regs.TBPRD = EPWM1_TIMER_TBPRD;          // (60M/250k-1)=239 Set timer period-120kHz,PWM frequency = 1/(2*TBPRD)
   EPwm4Regs.CMPA.bit.CMPA = EPWM1_MIN_CMPA;
   EPwm4Regs.CMPA.bit.CMPAHR = 0;                  // initialize HRPWM extension
   EPwm4Regs.CMPB.bit.CMPB = EPWM1_TIMER_TBPRD - EPWM1_MIN_CMPA;
   EPwm4Regs.CMPB.bit.CMPBHR = 0;
   EPwm4Regs.TBPHS.all = 0;
   EPwm4Regs.TBCTR = 0;
   
   // Setup TBCLK
   EPwm4Regs.TBCTL.bit.CTRMODE = TB_COUNT_UPDOWN;	// Select up-down count mode
   EPwm4Regs.TBCTL.bit.PHSEN = TB_ENABLE;        	//TB_DISABLE TB_ENABLE: TBCTR phase load on SYNC (required for updown count HR control
   EPwm4Regs.TBCTL.bit.PHSDIR = TB_UP; 				// Count TB_UP on sync (=120 deg)
   EPwm4Regs.TBCTL.bit.SYNCOSEL = TB_SYNC_IN;		// TB_SYNC_DISABLE TB_SYNC_IN
   EPwm4Regs.TBCTL.bit.HSPCLKDIV = TB_DIV1;       	// Clock ratio to SYSCLKOUT
   EPwm4Regs.TBCTL.bit.CLKDIV = TB_DIV1;		  	// TBCLK = SYSCLKOUT / (HSPCLKDIV CLKDIV)
   
   EPwm4Regs.TBCTL.bit.FREE_SOFT = 11;
   
   EPwm4Regs.CMPCTL.bit.LOADAMODE = CC_CTR_ZERO_PRD;
   EPwm4Regs.CMPCTL.bit.LOADBMODE = CC_CTR_ZERO_PRD;
   EPwm4Regs.CMPCTL.bit.SHDWAMODE = CC_SHADOW;
   EPwm4Regs.CMPCTL.bit.SHDWBMODE = CC_SHADOW;
   
   // Set actions
   EPwm4Regs.AQCTLA.bit.CAD = AQ_SET;		// PWM toggle high/low
   EPwm4Regs.AQCTLA.bit.CAU = AQ_CLEAR;
   EPwm4Regs.AQCTLB.bit.CBD = AQ_CLEAR;
   EPwm4Regs.AQCTLB.bit.CBU = AQ_SET;

///   EPwm4Regs.AQSFRC.bit.RLDCSF = 3;		//AQCSFRC Active Register Reload immediately
   
   // Active Low PWMs - Setup Deadband
   EPwm4Regs.DBCTL.bit.OUT_MODE = DB_DISABLE;///DBB_ENABLE;//S1=1,S0=0
///   EPwm4Regs.DBCTL.bit.POLSEL = DB_ACTV_HI;//S3=0,S2=0
///   EPwm4Regs.DBCTL.bit.IN_MODE = DBA_RED_DBB_FED;//S5=1,S4=0
///   EPwm4Regs.DBRED = DC_DB_TIME_300NS;
   
   // Interrupt where we will change the Deadband
   EPwm4Regs.ETSEL.bit.INTSEL = ET_CTR_PRD;			// Select INT on Prd event
   EPwm4Regs.ETSEL.bit.INTEN = 0;// Disable INT
   EPwm4Regs.ETPS.bit.INTPRD = ET_1ST;				// Generate INT on 1st event
   
//   EALLOW;
//   EPwm4Regs.HRCNFG.all = 0x0;
//   EPwm4Regs.HRCNFG.bit.HRLOAD  = HR_CTR_ZERO_PRD; 		// load on CTR = 0 and CTR = TBPRD
//   EPwm4Regs.HRCNFG.bit.AUTOCONV = 1;              	// Enable autoconversion for HR period
//   EPwm4Regs.HRCNFG.bit.EDGMODE = HR_FEP;///HR_BEP;          	// MEP control on both edges
//   EPwm4Regs.HRCNFG.bit.CTLMODE = HR_CMP;          	// CMPAHR and TBPRDHR HR control
//
//   EPwm4Regs.HRPCTL.bit.TBPHSHRLOADE = 1;          	// Enable TBPHSHR sync (required for updwn count HR control)
//   EPwm4Regs.HRPCTL.bit.HRPE = 1;                  	// Turn on high-resolution period control.
//
/////   EPwm4Regs.TBCTL.bit.SWFSYNC = 1;                	// Synchronize high resolution phase to start HR period
//
//   ///SysCtrlRegs.PCLKCR0.bit.TBCLKSYNC = 1;           // Enable TBCLK within the EPWM
//   EDIS;
}

void InitEPwm5(void)
{
// ePWM channel register configuration with HRPWM
// ePWMxA toggle low/high with MEP control on Rising edge
   EALLOW;
   CpuSysRegs.PCLKCR0.bit.TBCLKSYNC = 0;            // Disable TBCLK within the EPWM
   EDIS;

   ///EPWM5 config config for PWM2A/2B
   EPwm5Regs.TBCTL.bit.PRDLD = TB_SHADOW;           // set Shadow load
   EPwm5Regs.TBPRD = EPWM1_TIMER_TBPRD;          // (60M/250k-1)=239 Set timer period-120kHz,PWM frequency = 1/(2*TBPRD)
   EPwm5Regs.CMPA.bit.CMPA = EPWM1_MIN_CMPA;
   EPwm5Regs.CMPA.bit.CMPAHR = 0;                  // initialize HRPWM extension
   EPwm5Regs.CMPB.bit.CMPB = EPWM1_TIMER_TBPRD - EPWM1_MIN_CMPA;
   EPwm5Regs.CMPB.bit.CMPBHR = 0;
   EPwm5Regs.TBPHS.all = 0;
   EPwm5Regs.TBCTR = 0;

   // Setup TBCLK
   EPwm5Regs.TBCTL.bit.CTRMODE = TB_COUNT_UPDOWN; // Count up
   EPwm5Regs.TBCTL.bit.PHSEN = TB_ENABLE;        // Disable phase loading
   EPwm5Regs.TBCTL.bit.HSPCLKDIV = TB_DIV1;       // Clock ratio to SYSCLKOUT
   EPwm5Regs.TBCTL.bit.CLKDIV = TB_DIV1;		  // TBCLK = SYSCLKOUT / (HSPCLKDIV �� CLKDIV)

   EPwm5Regs.TBCTL.bit.PRDLD = TB_SHADOW;

   EPwm5Regs.TBCTL.bit.SYNCOSEL = TB_SYNC_IN;	  // PWM5ͬ��
   EPwm5Regs.TBCTL.bit.PHSDIR = TB_UP;

   EPwm5Regs.CMPCTL.bit.SHDWAMODE = CC_SHADOW;    // Load registers every ZERO
   EPwm5Regs.CMPCTL.bit.SHDWBMODE = CC_SHADOW;
   EPwm5Regs.CMPCTL.bit.LOADAMODE = CC_CTR_ZERO_PRD;
   EPwm5Regs.CMPCTL.bit.LOADBMODE = CC_CTR_ZERO_PRD;

   // Setup compare 
   
   // Set actions
   EPwm5Regs.AQCTLA.bit.CAD = AQ_SET;             // Set PWM5A on Zero
   EPwm5Regs.AQCTLA.bit.CAU = AQ_CLEAR;
   EPwm5Regs.AQCTLB.bit.CBD = AQ_CLEAR;          // Set PWM5A on Zero
   EPwm5Regs.AQCTLB.bit.CBU = AQ_SET;

   // Active Low PWMs - Setup Deadband
   EPwm5Regs.DBCTL.bit.OUT_MODE = DB_DISABLE;	   //����������
   //EPwm5Regs.DBCTL.bit.POLSEL = DB_ACTV_LO;
   //EPwm5Regs.DBCTL.bit.IN_MODE = DBA_ALL;
   //EPwm5Regs.DBRED = EPWM1_MIN_DB;
  // EPwm5Regs.DBFED = EPWM1_MIN_DB;
   //EPwm5_DB_Direction = DB_UP;
   
   // Interrupt where we will change the Deadband
   EPwm5Regs.ETSEL.bit.INTSEL = ET_CTR_ZERO;      // Select INT on Prd event
   EPwm5Regs.ETSEL.bit.INTEN = 1;                // Enable INT
   EPwm5Regs.ETPS.bit.INTPRD = ET_1ST;            // Generate INT on 1st event

	//ADC trigger source
   /*
   EPwm5Regs.ETSEL.bit.SOCAEN	= 1;//ʹ��ADC����ת������		// Enable SOC on A group
   EPwm5Regs.ETSEL.bit.SOCASEL	= 4;//�����������ӵ�CMPAʱʹ���¼�		// Select SOC from from CPMA on upcount
   EPwm5Regs.ETPS.bit.SOCAPRD 	= 1;		// Generate pulse on 1st event
   */
}

void InitEPwm6(void)
{
// ePWM channel register configuration with HRPWM
// ePWMxA toggle low/high with MEP control on Rising edge
   EALLOW;
   CpuSysRegs.PCLKCR0.bit.TBCLKSYNC = 0;            // Disable TBCLK within the EPWM
   EDIS;

   ///EPWM6 config config for PWM2A/2B
   EPwm6Regs.TBCTL.bit.PRDLD = TB_SHADOW;           // set Shadow load
   EPwm6Regs.TBPRD = EPWM1_TIMER_TBPRD;          // (60M/250k-1)=239 Set timer period-120kHz,PWM frequency = 1/(2*TBPRD)
   EPwm6Regs.CMPA.bit.CMPA = EPWM1_MIN_CMPA;
   EPwm5Regs.CMPA.bit.CMPAHR = 0;                  // initialize HRPWM extension
   EPwm6Regs.CMPB.bit.CMPB = EPWM1_TIMER_TBPRD - EPWM1_MIN_CMPA;
   EPwm6Regs.CMPB.bit.CMPBHR = 0;
   EPwm6Regs.TBPHS.all = 0;
   EPwm6Regs.TBCTR = 0;

   // Setup TBCLK
   EPwm6Regs.TBCTL.bit.CTRMODE = TB_COUNT_UPDOWN; // Count up
   EPwm6Regs.TBCTL.bit.PHSEN = TB_ENABLE;        // Disable phase loading
   EPwm6Regs.TBCTL.bit.HSPCLKDIV = TB_DIV1;       // Clock ratio to SYSCLKOUT
   EPwm6Regs.TBCTL.bit.CLKDIV = TB_DIV1;		  // TBCLK = SYSCLKOUT / (HSPCLKDIV �� CLKDIV)

   EPwm6Regs.TBCTL.bit.PRDLD = TB_SHADOW;

   EPwm6Regs.TBCTL.bit.SYNCOSEL = TB_SYNC_IN;	  // PWM6ͬ��
   EPwm6Regs.TBCTL.bit.PHSDIR = TB_UP;

   EPwm6Regs.CMPCTL.bit.SHDWAMODE = CC_SHADOW;    // Load registers every ZERO
   EPwm6Regs.CMPCTL.bit.SHDWBMODE = CC_SHADOW;
   EPwm6Regs.CMPCTL.bit.LOADAMODE = CC_CTR_ZERO_PRD;
   EPwm6Regs.CMPCTL.bit.LOADBMODE = CC_CTR_ZERO_PRD;

   // Set actions
   EPwm6Regs.AQCTLA.bit.CAD = AQ_SET;
   EPwm6Regs.AQCTLA.bit.CAU = AQ_CLEAR;
   EPwm6Regs.AQCTLB.bit.CBD = AQ_CLEAR;
   EPwm6Regs.AQCTLB.bit.CBU = AQ_SET;


   // Active Low PWMs - Setup Deadband
   EPwm6Regs.DBCTL.bit.OUT_MODE = DB_DISABLE;	   //����������
   EPwm6Regs.DBCTL.bit.POLSEL = DB_ACTV_LO;
   //EPwm6Regs.DBCTL.bit.IN_MODE = DBA_ALL;
   //EPwm6Regs.DBRED = EPWM1_MIN_DB;
   //EPwm6Regs.DBFED = EPWM1_MIN_DB;
  // EPwm6_DB_Direction = DB_UP;
   
   // Interrupt where we will change the Deadband
//   EPwm6Regs.ETSEL.bit.INTSEL = ET_CTR_PRD;      // Select INT on Prd event
//   EPwm6Regs.ETSEL.bit.INTEN = 1;                // Enable INT
//   EPwm6Regs.ETPS.bit.INTPRD = ET_1ST;            // Generate INT on 1st event

	//ADC trigger source
//   EPwm6Regs.ETSEL.bit.SOCAEN	= 1;		// Enable SOC on A group
//   EPwm6Regs.ETSEL.bit.SOCASEL	= 1;		// Select SOC from from CPMA on downcount
//   EPwm6Regs.ETPS.bit.SOCAPRD 	= 1;		// Generate pulse on 1st event
   

//   EALLOW;
//   CpuSysRegs.PCLKCR0.bit.TBCLKSYNC = 1;     		// Disable TBCLK within the EPWM
//   EDIS;

}
void InitEPwm7(void)
{
// ePWM channel register configuration with HRPWM
// ePWMxA toggle low/high with MEP control on Rising edge
   EALLOW;
   CpuSysRegs.PCLKCR0.bit.TBCLKSYNC = 0;            // Disable TBCLK within the EPWM
   EDIS;

   ///EPWM2 config config for PWM2A/2B
   EPwm7Regs.TBCTL.bit.PRDLD = TB_SHADOW;           // set Shadow load
   EPwm7Regs.TBPRD = EPWM_AD_TIMER_TBPRD;          // (100M/100k-1)=999 Set timer period-100kHz,PWM frequency = 1/(2*TBPRD)
   EPwm7Regs.CMPA.bit.CMPA = EPWM1_MIN_CMPA;
   EPwm7Regs.CMPA.bit.CMPAHR = 0;                  // initialize HRPWM extension
   EPwm7Regs.CMPB.bit.CMPB = EPWM1_TIMER_TBPRD - EPWM1_TIMER_TBPRD;
   EPwm7Regs.CMPB.bit.CMPBHR = 0;
   EPwm7Regs.TBPHS.all = 0;
   EPwm7Regs.TBCTR = 0;

   // Setup TBCLK
   EPwm7Regs.TBCTL.bit.CTRMODE = TB_COUNT_UPDOWN;//TB_COUNT_UPDOWN TB_COUNT_UP; // Select up-down count mode
   EPwm7Regs.TBCTL.bit.PHSEN = TB_ENABLE;           // TB_ENABLE TB_DISABLE: TBCTR phase load on SYNC (required for updown count HR control
   EPwm7Regs.TBCTL.bit.PHSDIR = TB_UP;              // Count TB_UP on sync
   EPwm7Regs.TBCTL.bit.SYNCOSEL = TB_SYNC_IN;       // pass on
   EPwm7Regs.TBCTL.bit.HSPCLKDIV = TB_DIV1;         // Clock ratio to SYSCLKOUT
   EPwm7Regs.TBCTL.bit.CLKDIV = TB_DIV1;            // TBCLK = SYSCLKOUT / (HSPCLKDIV CLKDIV)
   EPwm7Regs.TBCTL.bit.FREE_SOFT = 11;

   //TBPRD is loaded from its shadow register on Counter = 0 event (CTR_zero)
   EPwm7Regs.CMPCTL.bit.LOADAMODE = CC_CTR_ZERO;//CC_CTR_ZERO_PRD;
   EPwm7Regs.CMPCTL.bit.LOADBMODE = CC_CTR_ZERO;//CC_CTR_ZERO_PRD;
   EPwm7Regs.CMPCTL.bit.SHDWAMODE = CC_SHADOW;
   EPwm7Regs.CMPCTL.bit.SHDWBMODE = CC_SHADOW;

   EPwm7Regs.AQCTLA.bit.CAD = AQ_SET;      //���������ظ߾���Ϊ�½��ظ߾���
   EPwm7Regs.AQCTLA.bit.CAU = AQ_CLEAR; //���������ظ߾���Ϊ�½��ظ߾���
///   EPwm1Regs.AQSFRC.bit.RLDCSF = 3;      //AQCSFRC Active Register Reload immediately

   //Setup Deadband
   EPwm7Regs.DBCTL.bit.OUT_MODE = DB_DISABLE;///DBB_ENABLE;//S1=1,S0=0
///   EPwm1Regs.DBCTL.bit.POLSEL = DB_ACTV_HI;//S3=0,S2=0
///   EPwm1Regs.DBCTL.bit.IN_MODE = DBA_RED_DBB_FED;//S5=1,S4=0
///   EPwm1Regs.DBRED = DC_DB_TIME_300NS;//DC_DB_TIME_300NS;

   // Interrupt where we will change the Deadband
   EPwm7Regs.ETSEL.bit.INTSEL = 0;      // Select INT on Zero & PRD event
   EPwm7Regs.ETSEL.bit.INTEN = 0;                   // Disable INT
   EPwm7Regs.ETPS.bit.INTPRD = ET_1ST;              // Generate INT on 1st event

   EPwm7Regs.ETSEL.bit.SOCAEN = 1;             //Eables SOCA pulse
   EPwm7Regs.ETSEL.bit.SOCASEL = ET_CTR_ZERO;//20121008//ET_CTR_PRD;//ET_CTR_ZERO;         //Enable CNTR = zero event
   EPwm7Regs.ETPS.bit.SOCAPRD = ET_1ST;        // Generate pulse on 1st event

//   EALLOW;
//   EPwm7Regs.HRCNFG.all = 0x0;
//   EPwm7Regs.HRCNFG.bit.HRLOAD  = HR_CTR_ZERO_PRD;      //HR_CTR_ZERO_PRD load COMPAHR on CTR = 0 and CTR = TBPRD;HR_CTR_ZERO_PRD
//   EPwm7Regs.HRCNFG.bit.AUTOCONV = 1;               // Enable autoconversion for HR period
//   EPwm7Regs.HRCNFG.bit.EDGMODE = HR_BEP;           // MEP control on both edges
//   EPwm7Regs.HRCNFG.bit.CTLMODE = HR_CMP;           // CMPAHR and TBPRDHR HR control
//
//   EPwm7Regs.HRPCTL.bit.TBPHSHRLOADE = 1;           // Enable TBPHSHR sync (required for updwn count HR control)
//   EPwm7Regs.HRPCTL.bit.HRPE = 1;                   // Turn on high-resolution period control.
//
/////   SysCtrlRegs.PCLKCR0.bit.TBCLKSYNC = 1;           // Enable TBCLK within the EPWM
/////   EPwm1Regs.TBCTL.bit.SWFSYNC = 1;                  // Synchronize high resolution phase to start HR period
//
//   EDIS;

}

void InitEPwm8(void)
{
// ePWM channel register configuration with HRPWM
// ePWMxA toggle low/high with MEP control on Rising edge
   EALLOW;
   CpuSysRegs.PCLKCR0.bit.TBCLKSYNC = 0;            // Disable TBCLK within the EPWM
   EDIS;

   ///EPWM8 config config for PWM2A/2B
   EPwm8Regs.TBCTL.bit.PRDLD = TB_SHADOW;           // set Shadow load
   EPwm8Regs.TBPRD = EPWM1_TIMER_TBPRD;          // (60M/250k-1)=239 Set timer period-120kHz,PWM frequency = 1/(2*TBPRD)
   EPwm8Regs.CMPA.bit.CMPA = EPWM1_MIN_CMPA;
   EPwm8Regs.CMPA.bit.CMPAHR = 0;                  // initialize HRPWM extension
   EPwm8Regs.CMPB.bit.CMPB = 0x3E7;
   //EPwm8Regs.CMPB.bit.CMPBHR = 0;
   EPwm8Regs.TBPHS.all = 0;
   EPwm8Regs.TBCTR = 0;

   // Setup TBCLK
   EPwm8Regs.TBCTL.bit.CTRMODE = TB_COUNT_UPDOWN;//TB_COUNT_UPDOWN TB_COUNT_UP; // Select up-down count mode
   EPwm8Regs.TBCTL.bit.PHSEN = TB_ENABLE;           // TB_ENABLE TB_DISABLE: TBCTR phase load on SYNC (required for updown count HR control
   EPwm8Regs.TBCTL.bit.PHSDIR = TB_UP;              // Count TB_UP on sync
   EPwm8Regs.TBCTL.bit.SYNCOSEL = TB_SYNC_IN;       // pass on
   EPwm8Regs.TBCTL.bit.HSPCLKDIV = TB_DIV1;         // Clock ratio to SYSCLKOUT
   EPwm8Regs.TBCTL.bit.CLKDIV = TB_DIV1;            // TBCLK = SYSCLKOUT / (HSPCLKDIV CLKDIV)
   EPwm8Regs.TBCTL.bit.FREE_SOFT = 11;

   //TBPRD is loaded from its shadow register on Counter = 0 event (CTR_zero)
   EPwm8Regs.CMPCTL.bit.LOADAMODE = CC_CTR_ZERO;//CC_CTR_ZERO_PRD;
   EPwm8Regs.CMPCTL.bit.LOADBMODE = CC_CTR_ZERO;//CC_CTR_ZERO_PRD;
   EPwm8Regs.CMPCTL.bit.SHDWAMODE = CC_SHADOW;
   EPwm8Regs.CMPCTL.bit.SHDWBMODE = CC_SHADOW;

   EPwm8Regs.AQCTLB.bit.CBD = AQ_SET;
   EPwm8Regs.AQCTLB.bit.CBU = AQ_CLEAR;

   //Setup Deadband
   EPwm8Regs.DBCTL.bit.OUT_MODE = DB_DISABLE;///DBB_ENABLE;//S1=1,S0=0
///   EPwm8Regs.DBCTL.bit.POLSEL = DB_ACTV_HI;//S3=0,S2=0
///   EPwm8Regs.DBCTL.bit.IN_MODE = DBA_RED_DBB_FED;//S5=1,S4=0
///   EPwm8Regs.DBRED = DC_DB_TIME_300NS;//DC_DB_TIME_300NS;

   // Interrupt where we will change the Deadband
   EPwm8Regs.ETSEL.bit.INTSEL = 0;      // Select INT on Zero & PRD event
   EPwm8Regs.ETSEL.bit.INTEN = 0;                   // Disable INT
   EPwm8Regs.ETPS.bit.INTPRD = ET_1ST;              // Generate INT on 1st event

//   EALLOW;
//   EPwm8Regs.HRCNFG.all = 0x0;
//   EPwm8Regs.HRCNFG.bit.HRLOAD  = HR_CTR_ZERO_PRD;      //HR_CTR_ZERO_PRD load COMPAHR on CTR = 0 and CTR = TBPRD;HR_CTR_ZERO_PRD
//   EPwm8Regs.HRCNFG.bit.AUTOCONV = 1;               // Enable autoconversion for HR period
//   EPwm8Regs.HRCNFG.bit.EDGMODE = HR_BEP;           // MEP control on both edges
//   EPwm8Regs.HRCNFG.bit.CTLMODE = HR_CMP;           // CMPAHR and TBPRDHR HR control
//
//   EPwm8Regs.HRPCTL.bit.TBPHSHRLOADE = 1;           // Enable TBPHSHR sync (required for updwn count HR control)
//   EPwm8Regs.HRPCTL.bit.HRPE = 1;                   // Turn on high-resolution period control.
//
/////   SysCtrlRegs.PCLKCR0.bit.TBCLKSYNC = 1;           // Enable TBCLK within the EPWM
/////   EPwm1Regs.TBCTL.bit.SWFSYNC = 1;                  // Synchronize high resolution phase to start HR period
//
//   EDIS;

   EALLOW;
   CpuSysRegs.PCLKCR0.bit.TBCLKSYNC = 1;            // Disable TBCLK within the EPWM
   EDIS;
}
//===========================================================================
// End of file.
//===========================================================================