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.
28335epwm产生中断,设置的脉冲10KHz。产生脉冲是100us,中断周期为什么是2.5ms。为什么不是100us哪?哪设置错了???
我是采用epwm1产生的中断。。是不是哪设置错误了?
EALLOW;
PieVectTable.EPWM1_INT = &epwm1_isr;
EDIS;
EALLOW;
SysCtrlRegs.PCLKCR0.bit.TBCLKSYNC = 1;
EDIS;
// Enable CNT_zero interrupt using EPWM1 Time-base
EPwm1Regs.ETPS.all=0x0000;
EPwm1Regs.ETSEL.bit.INTEN = 1; // Enable EPWM1INT generation
EPwm1Regs.ETSEL.bit.INTSEL = 1; // Enable interrupt CNT_zero event
EPwm1Regs.ETPS.bit.INTPRD = 1;
// EPwm1Regs.ETPS.bit.INTCNT=3;
EPwm1Regs.ETCLR.bit.INT = 1; // Enable more interrupts
void InitEPwm1()
{
//时基模块TB设置
//时基周期寄存器
EPwm1Regs.TBPRD = PRD; // 设置周期
//时基相位寄存器
EPwm1Regs.TBPHS.half.TBPHS=0x0000; //phase is 0
//时基状态寄存器
EPwm1Regs.TBSTS.all=0x0000;
//时基计数寄存器
EPwm1Regs.TBCTR = 0x0000; // Clear conuter
//时基控制寄存器
EPwm1Regs.TBCTL.bit.SWFSYNC=0;
EPwm1Regs.TBCTL.bit.CTRMODE = 0x2; //增减计数模式
EPwm1Regs.TBCTL.bit.PHSEN = 0;//TB_DISABLE; // Disable phase loading
EPwm1Regs.TBCTL.bit.HSPCLKDIV = 0; // Clock ratio to SYSCLKOUT /1
EPwm1Regs.TBCTL.bit.CLKDIV = 0; //TBCLK=SYSCLKOUT/(HSPCLKDIV*CLKDIV)=150MHz
EPwm1Regs.TBCTL.bit.PRDLD = 1; //The period register (TBPRD) is loaded from its shadow register// when the time-base counter,TBCTR, is equal to zero
EPwm1Regs.TBCTL.bit.SYNCOSEL = 3;//TB_CTR_ZERO; // Sync down-stream module,同步输出选择设定
EPwm1Regs.TBCTL.bit.FREE_SOFT=1;
EPwm1Regs.TBCTL.bit.PHSDIR=0;
EPwm1Regs.TBCTL.bit.SWFSYNC=1;
//比较计数模块CC设置
//计数比较控制寄存
EPwm1Regs.CMPCTL.all=0x0000;
EPwm1Regs.CMPCTL.bit.SHDWAMODE = CC_SHADOW;
EPwm1Regs.CMPCTL.bit.SHDWBMODE = CC_SHADOW;
EPwm1Regs.CMPCTL.bit.LOADAMODE = CC_CTR_ZERO; // Load on Zero
EPwm1Regs.CMPCTL.bit.LOADBMODE = CC_CTR_ZERO;
//动作模块AQ设置
//ePWMA动作模块控制寄存器
EPwm1Regs.AQCTLA.all=0x0000;
EPwm1Regs.AQCTLA.bit.CAU = AQ_SET; // Set PWM1A on event A, up count
EPwm1Regs.AQCTLA.bit.CAD = AQ_CLEAR; // Clear PWM1A on event A, down count
//死区模块DB设置
//死区控制寄存器
EPwm1Regs.DBCTL.all=0x0000;
EPwm1Regs.DBCTL.bit.IN_MODE = DBA_ALL; // enable Dead-band module
EPwm1Regs.DBCTL.bit.POLSEL = DB_ACTV_LOC; // Active low complementary (ALC) mode. EPWMxA is inverted.
EPwm1Regs.DBCTL.bit.OUT_MODE = DB_ACTV_LO; //低电平有效,互补输出。
//死区下降沿延时寄存器
EPwm1Regs.DBFED = 200; // FED = 200 TBCLKs
//死区上升沿延时寄存器
EPwm1Regs.DBRED = 200; // RED = 200 TBCLKs
}
IER |= M_INT3; //EPWM1的中断
PieCtrlRegs.PIEIER3.bit.INTx1 = 1;
EINT; //开中断
ERTM;