#include "F2837xD_device.h"
#include "F2837xD_Examples.h"
#define duty 4999//max 1800, set 3600--->now *0.5=1800
#define DeadTime 100//0xAF=175
//ETSEL ZERO=0xA09 PRD=0xA0A ZERO&PRD=0xA0B CAU=0xA0C CAD=0xA0D CBU=0xA0E CBD=0xA0F
//-------------------------------------------------------------------
void ePWM(void) // 設定ePWM
{
// EALLOW; // Enable EALLOW protected register access
// SysCtrlRegs.PCLKCR0.bit.TBCLKSYNC = 0;
// EDIS; // Disable EALLOW protected register access
//-----ePWM1設定--------
EPwm1Regs.TBCTL.all = 0x4031; //初始化Time base counter 的設w
EPwm1Regs.TBCTL.bit.HSPCLKDIV = 0;
EPwm1Regs.TBCTL.bit.CLKDIV = 1;
EPwm1Regs.TBCTR = 0x0000; // Clear timer counter
EPwm1Regs.TBPRD = duty; // Set timer period
EPwm1Regs.TBPHS.bit.TBPHS = 0x0000; // Set timer phase
//*****************************************
EPwm1Regs.CMPA.bit.CMPA = duty;
EPwm1Regs.CMPB.bit.CMPB = 0;
//*****************************************
EPwm1Regs.CMPCTL.all = 0x0; //計數器比較器的存取設定 0x50=1010000
//01:CLR 10:SET 00:do nothing
EPwm1Regs.AQCTLA.bit.ZRO = 0x0;
EPwm1Regs.AQCTLA.bit.CAD = 0x8;
EPwm1Regs.AQCTLA.bit.CBD = 0x4;
//EPwm1Regs.AQCTLA.bit.CAD = AQ_CLEAR;
EPwm1Regs.AQCTLB.bit.ZRO = 0x0;
EPwm1Regs.AQCTLB.bit.CAD = 0x8;
EPwm1Regs.AQCTLB.bit.CBD = 0x4;
//EPwm1Regs.AQCTLB.bit.CBD = AQ_CLEAR;
EPwm1Regs.AQSFRC.all = 0x0000; // Action-qualifier s/w force register
EPwm1Regs.AQCSFRC.all = 0x0000; // Action-qualifier continuous s/w force register
EPwm1Regs.DBCTL.all = 0x002B; // 決定上升下降延遲方式
EPwm1Regs.DBRED.all = DeadTime; // rising edge delay
EPwm1Regs.DBFED.all = DeadTime; // falling edge delay
EPwm1Regs.PCCTL.bit.CHPEN = 0; // PWM chopper unit disabled
EALLOW;
EPwm1Regs.TZCLR.all = 0x0007;
EPwm1Regs.TZSEL.all = 0x0008; //指定使用TZ4為觸發源
EPwm1Regs.TZCTL.all = 0x000A; //以觸發TZ4使ePWM強制關閉之AB位置 0xA=1010
EDIS;
//EPwm1Regs.ETCLR.all = 0x004; //
EPwm1Regs.ETSEL.all = 0xA09;
EPwm1Regs.ETPS.all = 0x0005;
//EPwm1Regs.TBCTL.bit.CTRMODE = 0x2; //上下數模式
//-----ePWM1設定--------
EPwm2Regs.TBCTL.all = 0xC031; //初始化Time base counter 的設w
EPwm2Regs.TBCTL.bit.HSPCLKDIV = 0;
EPwm2Regs.TBCTL.bit.CLKDIV = 1;
EPwm2Regs.TBCTR = 0x0000; // Clear timer counter
EPwm2Regs.TBPRD = duty; // Set timer period
EPwm2Regs.TBPHS.bit.TBPHS = 0x0000; // Set timer phase
//*****************************************
EPwm2Regs.CMPA.bit.CMPA = duty;
EPwm2Regs.CMPB.bit.CMPB = 0;
//*****************************************
EPwm2Regs.CMPCTL.all = 0x0; //計數器比較器的存取設定
//01:CLR 10:SET 00:do nothing
EPwm2Regs.AQCTLA.bit.ZRO = 0x0;
EPwm2Regs.AQCTLA.bit.CAD = 0x8;
EPwm2Regs.AQCTLA.bit.CBD = 0x4;
//EPwm1Regs.AQCTLA.bit.CAD = AQ_CLEAR;
EPwm2Regs.AQCTLB.bit.ZRO = 0x0;
EPwm2Regs.AQCTLB.bit.CAD = 0x8;
EPwm2Regs.AQCTLB.bit.CBD = 0x4;
//EPwm1Regs.AQCTLB.bit.CBD = AQ_CLEAR;
EPwm2Regs.AQSFRC.all = 0x0000; // Action-qualifier s/w force register
EPwm2Regs.AQCSFRC.all = 0x0000; // Action-qualifier continuous s/w force register
EPwm2Regs.DBCTL.all = 0x002B; // 決定上升下降延遲方式
EPwm2Regs.DBRED.all = DeadTime; // rising edge delay
EPwm2Regs.DBFED.all = DeadTime; // falling edge delay
EPwm2Regs.PCCTL.bit.CHPEN = 0; // PWM chopper unit disabled
EALLOW;
EPwm2Regs.TZCLR.all = 0x0007;
EPwm2Regs.TZSEL.all = 0x0008; //指定使用TZ4為觸發源
EPwm2Regs.TZCTL.all = 0x000A; //以觸發TZ4使ePWM強制關閉
EDIS;
//EPwm1Regs.ETCLR.all = 0x004; //
EPwm2Regs.ETSEL.all = 0xA09;
EPwm2Regs.ETPS.all = 0x0005;
//EPwm1Regs.TBCTL.bit.CTRMODE = 0x2; //上下數模式
//-----ePWM1設定--------
EPwm3Regs.TBCTL.all = 0xC031; //初始化Time base counter 的設w
EPwm3Regs.TBCTL.bit.HSPCLKDIV = 0;
EPwm3Regs.TBCTL.bit.CLKDIV = 1;
EPwm3Regs.TBCTR = 0x0000; // Clear timer counter
EPwm3Regs.TBPRD = duty; // Set timer period
EPwm3Regs.TBPHS.bit.TBPHS = 0x0000; // Set timer phase
//*****************************************
EPwm3Regs.CMPA.bit.CMPA = duty;
EPwm3Regs.CMPB.bit.CMPB = 0;
//*****************************************
EPwm3Regs.CMPCTL.all = 0x0; //計數器比較器的存取設定
//01:CLR 10:SET 00:do nothing
EPwm3Regs.AQCTLA.bit.ZRO = 0x0;
EPwm3Regs.AQCTLA.bit.CAD = 0x8;
EPwm3Regs.AQCTLA.bit.CBD = 0x4;
//EPwm3Regs.AQCTLA.bit.CAD = AQ_CLEAR;
EPwm3Regs.AQCTLB.bit.ZRO = 0x0;
EPwm3Regs.AQCTLB.bit.CAD = 0x8;
EPwm3Regs.AQCTLB.bit.CBD = 0x4;
//EPwm3Regs.AQCTLB.bit.CBD = AQ_CLEAR;
EPwm3Regs.AQSFRC.all = 0x0000; // Action-qualifier s/w force register
EPwm3Regs.AQCSFRC.all = 0x0000; // Action-qualifier continuous s/w force register
EPwm3Regs.DBCTL.all = 0x002B; // 決定上升下降延遲方式
EPwm3Regs.DBRED.all = DeadTime; // rising edge delay
EPwm3Regs.DBFED.all = DeadTime; // falling edge delay
EPwm3Regs.PCCTL.bit.CHPEN = 0; // PWM chopper unit disabled
EALLOW;
EPwm3Regs.TZCLR.all = 0x0007;
EPwm3Regs.TZSEL.all = 0x0008; //指定使用TZ4為觸發源
EPwm3Regs.TZCTL.all = 0x000A; //以觸發TZ4使ePWM強制關閉
EDIS;
//EPwm3Regs.ETCLR.all = 0x004; //
EPwm3Regs.ETSEL.all = 0x0A09;
EPwm3Regs.ETPS.all = 0x0005;
//EPwm3Regs.TBCTL.bit.CTRMODE = 0x2; //上下數模式
EPwm4Regs.TBCTL.all = 0xC031; //初始化Time base counter 的設w
EPwm4Regs.TBCTL.bit.HSPCLKDIV = 0;
EPwm4Regs.TBCTL.bit.CLKDIV = 1;
EPwm4Regs.TBCTR = 0x0000; // Clear timer counter
EPwm4Regs.TBPRD = duty; // Set timer period
EPwm4Regs.TBPHS.bit.TBPHS = 0x0000; // Set timer phase
//*****************************************
EPwm4Regs.CMPA.bit.CMPA = duty;
EPwm4Regs.CMPB.bit.CMPB = 0;
//*****************************************
EPwm4Regs.CMPCTL.all = 0x0; //計數器比較器的存取設定
//01:CLR 10:SET 00:do nothing
EPwm4Regs.AQCTLA.bit.ZRO = 0x0;
EPwm4Regs.AQCTLA.bit.CAD = 0x8;
EPwm4Regs.AQCTLA.bit.CBD = 0x4;
//EPwm1Regs.AQCTLA.bit.CAD = AQ_CLEAR;
EPwm4Regs.AQCTLB.bit.ZRO = 0x0;
EPwm4Regs.AQCTLB.bit.CAD = 0x8;
EPwm4Regs.AQCTLB.bit.CBD = 0x4;
//EPwm1Regs.AQCTLB.bit.CBD = AQ_CLEAR;
EPwm4Regs.AQSFRC.all = 0x0000; // Action-qualifier s/w force register
EPwm4Regs.AQCSFRC.all = 0x0000; // Action-qualifier continuous s/w force register
EPwm4Regs.DBCTL.all = 0x002B; // 決定上升下降延遲方式
EPwm4Regs.DBRED.all = DeadTime; // rising edge delay
EPwm4Regs.DBFED.all = DeadTime; // falling edge delay
EPwm4Regs.PCCTL.bit.CHPEN = 0; // PWM chopper unit disabled
EALLOW;
EPwm4Regs.TZCLR.all = 0x0007;
EPwm4Regs.TZSEL.all = 0x0008; //指定使用TZ4為觸發源
EPwm4Regs.TZCTL.all = 0x000A; //以觸發TZ4使ePWM強制關閉
EDIS;
//EPwm1Regs.ETCLR.all = 0x004; //
//ETSEL ZERO=0xA09 PRD=0xA0A ZERO&PRD=0xA0B CAU=0xA0C CAD=0xA0D CBU=0xA0E CBD=0xA0F
EPwm4Regs.ETSEL.all = 0x0A0C;
EPwm4Regs.ETPS.all = 0x0005;
//EPwm1Regs.TBCTL.bit.CTRMODE = 0x2; //上下數模式
//-----ePWM1設定--------
EPwm5Regs.TBCTL.all = 0x4031; //初始化Time base counter 的設w
EPwm5Regs.TBCTL.bit.HSPCLKDIV = 0;
EPwm5Regs.TBCTL.bit.CLKDIV = 1;
EPwm5Regs.TBCTR = 0x0000; // Clear timer counter
EPwm5Regs.TBPRD = duty; // Set timer period
EPwm5Regs.TBPHS.bit.TBPHS = 0x0000; // Set timer phase
//*****************************************
EPwm5Regs.CMPA.bit.CMPA = duty;
EPwm5Regs.CMPB.bit.CMPB = 0;
//*****************************************
EPwm5Regs.CMPCTL.all = 0x0; //計數器比較器的存取設定
//01:CLR 10:SET 00:do nothing
EPwm5Regs.AQCTLA.bit.ZRO = 0x0;
EPwm5Regs.AQCTLA.bit.CAD = 0x8;
EPwm5Regs.AQCTLA.bit.CBD = 0x4;
//EPwm5Regs.AQCTLA.bit.CAD = AQ_CLEAR;
EPwm5Regs.AQCTLB.bit.ZRO = 0x0;
EPwm5Regs.AQCTLB.bit.CAD = 0x8;
EPwm5Regs.AQCTLB.bit.CBD = 0x4;
//EPwm5Regs.AQCTLB.bit.CBD = AQ_CLEAR;
EPwm5Regs.AQSFRC.all = 0x0000; // Action-qualifier s/w force register
EPwm5Regs.AQCSFRC.all = 0x0000; // Action-qualifier continuous s/w force register
EPwm5Regs.DBCTL.all = 0x002B; // 決定上升下降延遲方式
EPwm5Regs.DBRED.all = DeadTime; // rising edge delay
EPwm5Regs.DBFED.all = DeadTime; // falling edge delay
EPwm5Regs.PCCTL.bit.CHPEN = 0; // PWM chopper unit disabled
EALLOW;
EPwm5Regs.TZCLR.all = 0x0007;
EPwm5Regs.TZSEL.all = 0x0008; //指定使用TZ4為觸發源
EPwm5Regs.TZCTL.all = 0x000A; //以觸發TZ4使ePWM強制關閉
EDIS;
//EPwm5Regs.ETCLR.all = 0x004; //
//ETSEL ZERO=0xA09 PRD=0xA0A ZERO&PRD=0xA0B CAU=0xA0C CAD=0xA0D CBU=0xA0E CBD=0xA0F
EPwm5Regs.ETSEL.all = 0x0A0E;
EPwm5Regs.ETPS.all = 0x0005;
//EPwm5Regs.TBCTL.bit.CTRMODE = 0x2; //上下數模式
//-----ePWM1設定--------
EPwm6Regs.TBCTL.all = 0x4031; //初始化Time base counter 的設w
EPwm6Regs.TBCTL.bit.HSPCLKDIV = 0;
EPwm6Regs.TBCTL.bit.CLKDIV = 1;
EPwm6Regs.TBCTR = 0x0000; // Clear timer counter
EPwm6Regs.TBPRD = duty; // Set timer period
EPwm6Regs.TBPHS.bit.TBPHS = 0x0000; // Set timer phase
EPwm6Regs.CMPA.bit.CMPA = duty;
EPwm6Regs.CMPB.bit.CMPB = 0;
EPwm6Regs.CMPCTL.all = 0x0; //計數器比較器的存取設定
//01:CLR 10:SET 00:do nothing
EPwm6Regs.AQCTLA.bit.ZRO = 0x0;
EPwm6Regs.AQCTLA.bit.CAD = 0x8;
EPwm6Regs.AQCTLA.bit.CBD = 0x4;
//EPwm6Regs.AQCTLA.bit.CAD = AQ_CLEAR;
EPwm6Regs.AQCTLB.bit.ZRO = 0x0;
EPwm6Regs.AQCTLB.bit.CAD = 0x8;
EPwm6Regs.AQCTLB.bit.CBD = 0x4;
//EPwm6Regs.AQCTLB.bit.CBD = AQ_CLEAR;
EPwm6Regs.AQSFRC.all = 0x0000; // Action-qualifier s/w force register
EPwm6Regs.AQCSFRC.all = 0x0000; // Action-qualifier continuous s/w force register
EPwm6Regs.DBCTL.all = 0x002B; // 決定上升下降延遲方式
EPwm6Regs.DBRED.all = DeadTime; // rising edge delay
EPwm6Regs.DBFED.all = DeadTime; // falling edge delay
EPwm6Regs.PCCTL.bit.CHPEN = 0; // PWM chopper unit disabled
EALLOW;
EPwm6Regs.TZCLR.all = 0x0007;
EPwm6Regs.TZSEL.all = 0x0008; //指定使用TZ4為觸發源
EPwm6Regs.TZCTL.all = 0x000A; //以觸發TZ4使ePWM強制關閉
EDIS;
//EPwm6Regs.ETCLR.all = 0x004; //
//ETSEL ZERO=0xA09 PRD=0xA0A ZERO&PRD=0xA0B CAU=0xA0C CAD=0xA0D CBU=0xA0E CBD=0xA0F
EPwm6Regs.ETSEL.all = 0x0A0E;
EPwm6Regs.ETPS.all = 0x0005;
//EPwm6Regs.TBCTL.bit.CTRMODE = 0x2; //上下數模式
// EALLOW; // Enable EALLOW protected register access
// SysCtrlRegs.PCLKCR0.bit.TBCLKSYNC = 1; // HSPCLK to ePWM modules enabled
// EDIS; // Disable EALLOW protected register access
//-----------
}


