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.

[参考译文] TMS320F28377S:syncin 打开时 PWM 被阻止

Guru**** 2484615 points


请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/854947/tms320f28377s-pwm-is-blocked-when-syncin-is-on

器件型号:TMS320F28377S

你(们)好

我的从板基于 F28377S、主板基于 F28377D。 主板生成 EXTSYNCOUT 信号以同步从板 PWM TBCTR。   EXTSYNCOUT 信号可由 示波器捕获、并可触发从板的 XINT2中断。 但是 、当 EXTSYNCOUT 信号连接到从板时、从板的 pwm1到 pwm12将被阻止。 Meneile、只要 EXTSYNCOUT 信号断开、pwm1至12就会恢复到方波。 我多次检查 PWM 的代码、尤其是 TZ 和 DC 的部分、发现没有错误的代码。 因此、我需要您的帮助来解决这个问题。 下面是我的 PWM 代码。

秘书长的报告
秘书长的报告
// TODO PWM 配置
秘书长的报告
秘书长的报告
void PWM_1ch_UpDwnCnt_CNF (int16 n、uint16 period、int16 db){

//时基子模块寄存器
(* ePWM[n]).TBCTL.bit.PRDLD = TB_SHADOW;//设置立即加载
(* ePWM[n]).TBPRD =周期/2;// PWM 频率= 1/周期5000 (50us)
(*ePWM[n]) TBCTR = 0x0000;
(* ePWM[n]).TBCTL.bit.CTRMODE = TB_COUNT_UPDOWN;
(* ePWM[n]).TBCTL.bit.HSPCLKDIV = TB_DIV1;
(* ePWM[n]).TBCTL.bit.CLKDIV = TB_DIV1;

if (CONTROLLERID = MAINCON)

开关(n){
情况1:(* ePWM[n]).TBCTL.bit.PHSEN = TB_DISABLE;//上臂
(* ePWM[n]).TBPHS.bit.TBPHS = 0;
(* ePWM[n]).TBCTL.bit.PHSDIR = TB_COUNT_UP;
中断;
情况2:(* ePWM[n]).TBCTL.bit.PHSEN = TB_ENABLE;
(* ePWM[n]).TBPHS.bit.TBPHS = 2500;
(* ePWM[n]).TBCTL.bit.PHSDIR = TB_COUNT_DOWN;
中断;
情况3:(* ePWM[n]).TBCTL.bit.PHSEN = TB_ENABLE;
(* ePWM[n]).TBPHS.bit.TBPHS = 5000;
(* ePWM[n]).TBCTL.bit.PHSDIR = TB_COUNT_DOWN;
中断;
情况4:(* ePWM[n]).TBCTL.bit.PHSEN = TB_ENABLE;
(* ePWM[n]).TBPHS.bit.TBPHS = 2500;
(* ePWM[n]).TBCTL.bit.PHSDIR = TB_COUNT_UP;
中断;
情况5:(* ePWM[n]).TBCTL.bit.PHSEN = TB_ENABLE;
(* ePWM[n]).TBPHS.bit.TBPHS = 0x0;
(* ePWM[n]).TBCTL.bit.PHSDIR = TB_ENABLE;
中断;
情况6:(* ePWM[n]).TBCTL.bit.PHSEN = TB_ENABLE;
(* ePWM[n]).TBPHS.bit.TBPHS = 0x0;
(* ePWM[n]).TBCTL.bit.PHSDIR = TB_ENABLE;
中断;
情况7:(* ePWM[n]).TBCTL.bit.PHSEN = TB_ENABLE;//降低 ARM
(* ePWM[n]).TBPHS.bit.TBPHS = 0;
(* ePWM[n]).TBCTL.bit.PHSDIR = TB_COUNT_UP;
中断;
情况8:(* ePWM[n]).TBCTL.bit.PHSEN = TB_ENABLE;
(* ePWM[n]).TBPHS.bit.TBPHS = 2500;
(* ePWM[n]).TBCTL.bit.PHSDIR = TB_COUNT_DOWN;
中断;
情况9:(* ePWM[n]).TBCTL.bit.PHSEN = TB_ENABLE;
(* ePWM[n]).TBPHS.bit.TBPHS = 5000;
(* ePWM[n]).TBCTL.bit.PHSDIR = TB_COUNT_DOWN;
中断;
情况10:(* ePWM[n]).TBCTL.bit.PHSEN = TB_ENABLE;
(* ePWM[n]).TBPHS.bit.TBPHS = 2500;
(* ePWM[n]).TBCTL.bit.PHSDIR = TB_COUNT_UP;
中断;
情况11:(* ePWM[n]).TBCTL.bit.PHSEN = TB_ENABLE;
(* ePWM[n]).TBPHS.bit.TBPHS = 0x0;
(* ePWM[n]).TBCTL.bit.PHSDIR = TB_ENABLE;
中断;
情况12:(* ePWM[n]).TBCTL.bit.PHSEN = TB_ENABLE;
(* ePWM[n]).TBPHS.bit.TBPHS = 0x0;
(* ePWM[n]).TBCTL.bit.PHSDIR = TB_ENABLE;
中断;
默认值:
中断;
}//结束开关
if (n ==1)

EALLOW;
// OutputXbarRegs.OUTPUT6MUX0TO15CFG.bit.MUX14 = 3;//针对 EXTSYNCOUT 的 GPIO29
// OutputXbarRegs.OUTPUT6MUXENABLE.bit.MUX14=1;
// OutputXbarRegs.outTPUTLATCH.bit.Output1 = 1;
// OutputXbarRegs.OUTPUTINV.bit.Output1 = 0;
EDIS;
EALLOW;
GPIO_SetupPinMux (6、GPIO_MUX_CPU1、3);//主板设置
GPIO_SetupPinOptions (6、GPIO_OUTPUT、GPIO_PushPull);//主板设置
EDIS;
(* ePWM[n]).EPWMSYNCOUTEN。bit.ZEROEN = SYNCOUT_ENABLE;
(* ePWM[n]).TBCTL.bit.SYNCOSEL = TB_CTR_ZERO;//同步"下行流" MAINCON EPWM1执行(* ePWM[1]).TBCTL.bit.SWFSYNC=1;
//向 MAINCON EPWM2-12和 SLAVECON EPWM1-12提供同步信号
EALLOW;
SyncSockRegs.SYNCSELECT.bit.SYNCOUT = EPwm1SyncOut;
EDIS;

其他

(* ePWM[n]).TBCTL.bit.SYNCOSEL = TB_SYNC_IN;//同步"同步输入"


开关(n){

案例4:EALLOW;SyncSockRegs.SYNCSELECT.BIT.EPWM4SYNCIN = EPwm1SyncOut;EDIS;break;
案例7:EALLOW;SyncSockRegs.SYNCSELECT.BIT.EPWM7SYNCIN = EPwm1SyncOut;EDIS;break;
案例10:EALLOW;SyncSockRegs.SYNCSELECT.BIT.EPWM10SYNCIN = EPwm1SyncOut;EDIS;break;
默认值:break;


}//结束 IF-- MAINCON
否则 if (CONTROLLERID == SLAVECON)

开关(n){
情况1:(* ePWM[n]).TBCTL.bit.PHSEN = TB_ENABLE;//上臂
(* ePWM[n]).TBPHS.bit.TBPHS = 0;
(* ePWM[n]).TBCTL.bit.PHSDIR = TB_COUNT_UP;
中断;
情况2:(* ePWM[n]).TBCTL.bit.PHSEN = TB_ENABLE;
(* ePWM[n]).TBPHS.bit.TBPHS = 2500;
(* ePWM[n]).TBCTL.bit.PHSDIR = TB_COUNT_DOWN;
中断;
情况3:(* ePWM[n]).TBCTL.bit.PHSEN = TB_ENABLE;
(* ePWM[n]).TBPHS.bit.TBPHS = 5000;
(* ePWM[n]).TBCTL.bit.PHSDIR = TB_COUNT_DOWN;
中断;
情况4:(* ePWM[n]).TBCTL.bit.PHSEN = TB_ENABLE;
(* ePWM[n]).TBPHS.bit.TBPHS = 2500;
(* ePWM[n]).TBCTL.bit.PHSDIR = TB_COUNT_UP;
中断;
情况5:(* ePWM[n]).TBCTL.bit.PHSEN = TB_ENABLE;
(* ePWM[n]).TBPHS.bit.TBPHS = 0x0;
(* ePWM[n]).TBCTL.bit.PHSDIR = TB_ENABLE;
中断;
情况6:(* ePWM[n]).TBCTL.bit.PHSEN = TB_ENABLE;
(* ePWM[n]).TBPHS.bit.TBPHS = 0x0;
(* ePWM[n]).TBCTL.bit.PHSDIR = TB_ENABLE;
中断;
情况7:(* ePWM[n]).TBCTL.bit.PHSEN = TB_ENABLE;//降低 ARM
(* ePWM[n]).TBPHS.bit.TBPHS = 0;
(* ePWM[n]).TBCTL.bit.PHSDIR = TB_COUNT_UP;
中断;
情况8:(* ePWM[n]).TBCTL.bit.PHSEN = TB_ENABLE;
(* ePWM[n]).TBPHS.bit.TBPHS = 2500;
(* ePWM[n]).TBCTL.bit.PHSDIR = TB_COUNT_DOWN;
中断;
情况9:(* ePWM[n]).TBCTL.bit.PHSEN = TB_ENABLE;
(* ePWM[n]).TBPHS.bit.TBPHS = 5000;
(* ePWM[n]).TBCTL.bit.PHSDIR = TB_COUNT_DOWN;
中断;
情况10:(* ePWM[n]).TBCTL.bit.PHSEN = TB_ENABLE;
(* ePWM[n]).TBPHS.bit.TBPHS = 2500;
(* ePWM[n]).TBCTL.bit.PHSDIR = TB_COUNT_UP;
中断;
情况11:(* ePWM[n]).TBCTL.bit.PHSEN = TB_ENABLE;
(* ePWM[n]).TBPHS.bit.TBPHS = 0x0;
(* ePWM[n]).TBCTL.bit.PHSDIR = TB_ENABLE;
中断;
情况12:(* ePWM[n]).TBCTL.bit.PHSEN = TB_ENABLE;
(* ePWM[n]).TBPHS.bit.TBPHS = 0x0;
(* ePWM[n]).TBCTL.bit.PHSDIR = TB_ENABLE;
中断;
默认值:
中断;
}//结束开关

如果(n ==1)

EALLOW;
InputXbarRegs.INPUT5SELECT = 99;//从板设置
EDIS;

EALLOW;
GPIO_SetupPinMux (99、GPIO_MUX_CPU1、0);//从板设置
GPIO_SetupPinOptions (99、GPIO_INPUT、GPIO_异 步);//从板设置
// GPIO_SetupPinOptions (99、GPIO_output、GPIO_PushPull);//用于测试的从板设置
EDIS;


XintRegs.XINT2CR.bit.enable = 1;//中断使能
XintRegs.XINT2CR.bit.Polarity = 1;//中断被选为正边沿触发

开关(n){

案例4:EALLOW;SyncSockRegs.SYNCSELECT.BIT.EPWM4SYNCIN = EPwm1SyncOut;EDIS;break;
案例7:EALLOW;SyncSockRegs.SYNCSELECT.BIT.EPWM7SYNCIN = EPwm1SyncOut;EDIS;break;
案例10:EALLOW;SyncSockRegs.SYNCSELECT.BIT.EPWM10SYNCIN = EPwm1SyncOut;EDIS;break;
默认值:break;

(* ePWM[n]).TBCTL.bit.SYNCOSEL = TB_SYNC_IN;//同步"下流"
}//否则结束-- SLAVECON


//计数器比较子模块寄存器
(* ePWM[n]).cmPCTL.bit.SHDWAMODE = CC_SHADOW;
(* ePWM[n]).cmPCTL.bit.LOADAMODE = CC_CTR_ZERO;
(* ePWM[n]).cmPCTL.bit.LOADASYS = CC_LDMODE;
(* ePWM[n]).cmPCTL.bit.SHDWBMODE = CC_SHADOW;
(* ePWM[n]).cmPCTL.bit.LOADBMODE = CC_CTR_ZERO;
(* ePWM[n]).cmPCTL.bit.LOADBSYNC = CC_LDMODE;


//操作限定符子模块寄存器
(* ePWM[n]).AQCTL.bit.SHDWAQAMODE =AQ_SHDWAQ_IMME;
(* ePWM[n]).AQCTL.bit.SHDWAQBMODE = AQ_SHDWAQ_IMME;
(* ePWM[n]).AQCTL.bit.LDAQAMODE =AQ_LDAQ_ZRO;
(* ePWM[n]).AQCTL.bit.LDAQBMODE = AQ_LDAQ_ZRO;
(* ePWM[n]).AQCTLA.bit.CAU = AQ_CLEAR;
(* ePWM[n]).AQCTLA.bit.CAD = AQ_SET;
(* ePWM[n]).AQCTLB.bit.CBU = AQ_SET;
(* ePWM[n]).AQCTLB.bit.CBD = AQ_CLEAR;

//高电平有效互补 PWM -设置死区
/*(* ePWM[n]).DBCTL.bit.in_mode = DBA_ALL;*/
(* ePWM[n]).DBCTL.bit.OUT_MODE = DB_DISABLE;
(* ePWM[n]).DBCTL.bit.OUTSWAP = DB_DISABLE;
/*(* ePWM[n]).DBCTL.bit.POLSEL = DB_ACTV_HIC;
(* ePWM[n]).DBRED = db;
(* ePWM[n]).DBFED = db;
*

//跳匣区域子模块寄存器
EALLOW;
// InputXbarRegs.INPUT1SELECT = 0x43;//GPIO67、用于 maincon 低电平有效的故障输入
EDIS;
EALLOW;
//(* ePWM[n]).TZSEL.bit.CBC1 = TZ_ENABLE;
//(* ePWM[n]).TZCTL.bit.TZA = TZ_FORCE_LO;
//(* ePWM[n]).TZCTL.bit.TSB = TZ_FORCE_LO;
(* ePWM[n]).TZCBCCLR.bit.CBC1 = TZ_ENABLE;
(* ePWM[n]).TZCLR.bit.CBC = TZ_ENABLE;//用于测试
(* ePWM[n]).TZCLR.bit.INT = TZ_ENABLE;//用于测试
(* ePWM[n]).TZEINT.bit.CBC = TZ_ENABLE;
EDIS;

//事件触发器子模块寄存器
if (n ==1)

(* ePWM[n]).ETSEL.bit.INTSEL = et_CTR_ZERO;
(* ePWM[n]).ETSEL.bit.inten = et_enable;

(* ePWM[n]).ETSEL.bit.SOCASELCMP = et_disable;
(* ePWM[n]).ETSEL.bit.SOCBSELCMP = et_disable;
(* ePWM[n]).ETSEL.bit.INTSELCMP = et_disable;
(* ePWM[n]).ETSEL.bit.SOCASEL = ET_CTR_ZERO;
(* ePWM[n]).ETSEL.bit.SOCAEN = et_enable;
(* ePWM[n]).ETSEL.bit.SOCBSEL = et_CTR_ZERO;
(* ePWM[n]).ETSEL.bit.SOCBEN = et_enable;
(* ePWM[n]).ETPS.bit.INTPRD = et_1st;
(*ePWM[n]).ETPS.bit.INTPSSEL = 0x0;//0x0:操作为 ETPS,0x1:操作为 ETINTTPS
(*ePWM[n]).ETPS.bit.SOCPSSEL = 0x0;//0x0:操作为 ETPS,0x1:操作为 ETSOCPS
(* ePWM[n]).ETPS.bit.SOCAPRD = et_1st;
(* ePWM[n]).ETPS.bit.SOCBPRD = et_1st;

ISR:

_interrupt void epwm1_ISR (void)

//
//更新 CMPA 和 CMPB 值
//
uint16 n;

for (n=1;n<(NumModule+4+1);n++){
thetaaa[n]=(two_pi*indexa[n])/20000 + FAIA;//计算参考角
indexa[n]+=50;//更新下一个周期的参考角度

开关(n){
情况1:if (indexa[1]> 20000){ indexa[1]= 25;}
中断;
情况2:if (indexa[2]> 20012.5){ indexa[2]= 37.5;}
中断;
案例3:if (indexa[3]> 20025){ indexa[3]= 50;}
中断;
情况4:if (indexa[4]> 20037.5){ indexa[4]= 62.5;}
中断;
情况5:if (indexa[5]> 20000){ indexa[5]= 25;}
中断;
情况6:if (indexa[6]> 20000){ indexa[6]= 37.5;}
中断;
案例7:if (indexa[7]> 20000){ indexa[7]= 50;}
中断;
情况8:if (indexa[8]>20000){ indexa[8]=62.5;}
中断;
情况9:if (indexa[9]>20000){ indexa[9]=25;}
中断;
情况10:if (indexa[10]> 20000){ indexa[10]= 25;}
中断;
情况11:if (indexa[11]>20000){ indexa[11]=25;}
中断;
情况12:if (indexa[12]>20000 ){ indexa[12]=25;}
中断;
默认值:break;
}//结束开关

refaval[n]= Kpwm*(1+mod_index*cos (thetaa[n]))/2;
refa[n]= refaval[n]+ refadeda[n];
refa[n]= INV_PWM_TICKs/2 - refa[n];
}//结束

//更新 epwm1
if ((uint16)(refa[1])<死区时间计数)

(*ePWM[1]).cmpa.bit.cmpA =(UINT16)( refa[1]);
(* ePWM[1]).CMPB.bit.CMPB =(UINT16)(refa[1])-dead_time_count;//dead_time_count

其他

(*ePWM[1]).cmpa.bit.cmpA =(UINT16)( refa[1]);
(* ePWM[1]).CMPB.bit.CMPB =(uint16)(refa[1])-dead_time_count;

//更新 epwm2
if ((uint16)(refa[2])<死区时间计数)

(* ePWM[2]).cmpa.bit.cmpA =(uint16)(refa[2]);//dead_time_count
(*ePWM[2]).CMPB.bit.CMPB =(UINT16)(refa[2])-dead_time_count;

其他

(*ePWM[2]).cmpa.bit.cmpA =(UINT16)( refa[2]);
(*ePWM[2]).CMPB.bit.CMPB =(UINT16)(refa[2])-dead_time_count;

//更新 epwm3
if ((uint16)(refa[3])<死区时间计数)

(* ePWM[3]).cmpa.bit.cmpA =(uint16)(refa[3]);//dead_time_count
(* ePWM[3]).CMPB.bit.CMPB =(uint16)(refa[3])-dead_time_count;

其他

(*ePWM[3]).cmpa.bit.cmpA =(UINT16)( refa[3]);
(* ePWM[3]).CMPB.bit.CMPB =(uint16)(refa[3])-dead_time_count;

//更新 epwm4.
if ((uint16)(refa[4])<死区时间计数)

(* ePWM[4]).cmpa.bit.cmpA =(uint16)(refa[4]);//dead_time_count
(* ePWM[4]).CMPB.bit.CMPB =(uint16)(refa[4])-dead_time_count;

其他

(*ePWM[4]).cmpa.bit.cmpA =(UINT16)( refa[4]);
(* ePWM[4]).CMPB.bit.CMPB =(uint16)(refa[4])-dead_time_count;

//更新 epwm5.
if ((uint16)(refa[5])<死区时间计数)

(* ePWM[5]).cmpa.bit.cmpA =(uint16)(refa[5]);//dead_time_count
(* ePWM[5]).CMPB.bit.CMPB =(uint16)(refa[5])-dead_time_count;

其他

(*ePWM[5]).cmpa.bit.cmpA =(UINT16)( refa[5]);
(* ePWM[5]).CMPB.bit.CMPB =(uint16)(refa[5])-dead_time_count;

//更新 epwm6.
if ((uint16)(refa[6])<死区时间计数)

(* ePWM[6]).cmpa.bit.cmpA =(uint16)(refa[6]);//dead_time_count
(*ePWM[6]).CMPB.bit.CMPB =(UINT16)(refa[6])-dead_time_count;

其他

(*ePWM[6]).cmpa.bit.cmpA =(UINT16)( refa[6]);
(*ePWM[6]).CMPB.bit.CMPB =(UINT16)(refa[6])-dead_time_count;

//更新 epwm7
if ((uint16)(refa[7])<死区时间计数)

(* ePWM[7]).cmpa.bit.cmpA =(uint16)(refa[7]);//dead_time_count
(* ePWM[7]).CMPB.bit.CMPB =(uint16)(refa[7])-dead_time_count;

其他

(*ePWM[7]).cmpa.bit.cmpA =(UINT16)( refa[7]);
(* ePWM[7]).CMPB.bit.CMPB =(uint16)(refa[7])-dead_time_count;

//更新 epwm8.
if ((uint16)(refa[8])<死区时间计数)

(* ePWM[8]).cmpa.bit.cmpA =(uint16)(refa[8]);//dead_time_count
(* ePWM[8]).CMPB.bit.CMPB =(uint16)(refa[8])-dead_time_count;

其他

(*ePWM[8]).cmpa.bit.cmpA =(UINT16)( refa[8]);
(* ePWM[8]).CMPB.bit.CMPB =(uint16)(refa[8])-dead_time_count;

//更新 epwm9.
if ((uint16)(refa[9])< dead_time_count)

(* ePWM[9]).cmpa.bit.cmpA =(uint16)(refa[9]);//dead_time_count
(* ePWM[9]).CMPB.bit.CMPB =(uint16)(refa[9])-dead_time_count;

其他

(*ePWM[9]).cmpa.bit.cmpA =(UINT16)( refa[9]);
(* ePWM[9]).CMPB.bit.CMPB =(uint16)(refa[9])-dead_time_count;

//更新 epwm10
if ((uint16)(refa[10])< dead_time_count)

(* ePWM[10]).cmpa.bit.cmpA =(uint16)(refa[10]);//dead_time_count
(* ePWM[10]).CMPB.bit.CMPB =(UINT16)(refa[10])-dead_time_count;

其他

(*ePWM[10]).cmpa.bit.cmpa=(UINT16)( refa[10]);
(* ePWM[10]).CMPB.bit.CMPB =(UINT16)(refa[10])-dead_time_count;

//更新 epwm11
if ((uint16)(refa[11])<死区时间计数)

(* ePWM[11]).cmpa.bit.cmpA =(uint16)(refa[11]);//dead_time_count
(* ePWM[11]).CMPB.bit.CMPB =(uint16)(refa[11])-dead_time_count;

其他

(*ePWM[11]).cmpa.bit.cmpA =(UINT16)( refa[11]);
(* ePWM[11]).CMPB.bit.CMPB =(uint16)(refa[11])-dead_time_count;

//更新 epwm12
if ((uint16)(refa[12])<死区时间计数)

(* ePWM[12]).cmpa.bit.cmpA =(uint16)(refa[12]);//dead_time_count
(* ePWM[12]).CMPB.bit.CMPB =(uint16)(refa[12])-dead_time_count;

其他

(*ePWM[12]).cmpa.bit.cmpa=(UINT16)( refa[12]);
(* ePWM[12]).CMPB.bit.CMPB =(uint16)(refa[12])-dead_time_count;

if (count < 400){
carrier1[count ]= refa[1];
carrierint1[count ]= GpioDataRegs.GPBDAT.bit.GPIO37;//ePWM[1]->CMPA.bit.CMPA;//refa[1];
carrier2[count ]= refa[2];
carrierint2[count ]= ePWM[2]->TBCTR;
carrier3[count ]= refa[3];
carrierint3[count ]=ePWM[3]->TBCTR;
carrier4[count ]= refa[4];
carrierint4[count++]=ePWM[4]->TBCTR;

其他

计数= 0;
carrier1[count ]= refa[1];
carrierint1[count ]= GpioDataRegs.GPBDAT.bit.GPIO37;
carrier2[count ]= refa[2];
carrierint2[count ]= refa[2];
carrier3[count ]= refa[3];
carrierint3[count ]= refa[3];
carrier4[count ]= refa[4];
carrierint4[count ]= refa[4];
count++;

//生成载波
// phasecarierergen( Initcarrierphasea、carriera、directionupa );
// phasecarierergen( Initcarrierphaseb, carrierb, directionupb );
// phasecarierergen( Initcarrierphasec, carrierc, directionupc );

//
//清除此计时器的 INT 标志
//
EPwm1Regs.ETCLR.bit.INT = 1;

//
//确认此中断以接收来自组3的更多中断
//
PieCtrlRegs.PIEACX.ALL = PIEACK_Group3;

XINT2:

// 1.5 - XINT2中断
_interrupt void XINT2_ISR (void)

//在此处插入 ISR 代码

XINT2CTR [icount++]= XintRegs.XINT2CTR;
if (icount =400) icount=0;
// GpioDataRegs.GPBTOGGL.bit.GPIO56=1;

//要从该 PIE 组接收更多中断,
//确认此中断。
PieCtrlRegs.PIEACX.ALL = PIEACK_Group1;


//接下来的两行仅用于调试,以在此处停止处理器
//插入 ISR 代码后删除
// asm (" ESTOP0");
// for (;;);

  

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    extsyncdout 信号应为一个脉冲。 不是这样吗?

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    是的、extsynsynctout 信号是脉冲。 最终、syncin 信号应符合滤波噪声的条件、以便 PWM 不会因噪声而触发。 非常感谢。