TI中文支持网
TI专业的中文技术问题搜集分享网站

关于28335调试时的问题

老师你好!我遇到个很奇怪的问题,烦请您帮忙分析一下。我只输出一个PWM。

void EPwm1Setup(); 

main()

{

……..

EPwm1Setup();            //PWM输出模块,已经配置正常,能输出了

………

for(;;)

{}

}

EPwm1Setup();

{

………

}

问题一:按照以上这样的再RAM里运行,正常。点击运行(F5),执行。点击停止运行,停止。问题来了,在我第二次再点击运行时,还有波形输出,为什么啊?第二次点击时,应该不执行啊,停留在主循环for(;;)里啊,为什么还有波形输出?

问题二:把上面的调用函数位置换一下,不在主循环的外面调用,放到主循环里,就不执行了,没有波形输出了,这是为什么啊?

void EPwm1Setup(); 

main()

{

……..

//EPwm1Setup();            //PWM输出模块,已经配置正常,能输出了

………

for(;;)

{

EPwm1Setup();  

}

}

EPwm1Setup();

{

………

}

针对我以上的问题,是我哪里配置出问题了,请告诉我可能问题出现的位置,我在检查,感谢

user4539844:

回复 Eric Ma:

你好,老师,我是初学,下面是我这个PWM的函数,有一些#define我就没有列举,想知道问题出在哪里?

void EPwm1Setup(){

// Setup TBCLK EPwm1Regs.TBCTL.bit.HSPCLKDIV = TB_DIV2; // Clock ratio to SYSCLKOUT EPwm1Regs.TBCTL.bit.CLKDIV = TB_DIV2; EPwm1Regs.TBCTL.bit.CTRMODE = TB_COUNT_UPDOWN; // Count updown EPwm1Regs.TBPRD = EPWM1_TIMER_TBPRD; // Set timer period,10K时为1875 EPwm1Regs.TBCTL.bit.PHSEN = 0x1; // Disable phase loading EPwm1Regs.TBPHS.half.TBPHS = 0x0000; // Phase is 0 EPwm1Regs.TBCTL.bit.PRDLD =0x1; EPwm1Regs.TBCTR = 0x0000; // Clear counter

// Setup shadow register load on ZERO EPwm1Regs.CMPCTL.bit.SHDWAMODE = CC_SHADOW; EPwm1Regs.CMPCTL.bit.SHDWBMODE = CC_SHADOW; EPwm1Regs.CMPCTL.bit.LOADAMODE = CC_CTR_ZERO; EPwm1Regs.CMPCTL.bit.LOADBMODE = CC_CTR_ZERO;

// Set Compare values EPwm1Regs.CMPA.half.CMPA = 390; // Set compare A value 938 is 50% // EPwm1Regs.CMPB = EPWM1_MIN_CMPB; // Set Compare B value

// Set actions EPwm1Regs.AQCTLA.bit.CAU = AQ_SET; // Set PWM1A on Zero EPwm1Regs.AQCTLA.bit.CAD = AQ_CLEAR; // Clear PWM1A on event A, up count

// EPwm1Regs.AQCTLB.bit.ZRO = AQ_SET; // Set PWM1B on Zero // EPwm1Regs.AQCTLB.bit.CBU = AQ_CLEAR; // Clear PWM1B on event B, up count

// Interrupt where we will change the Compare Values EPwm1Regs.ETSEL.bit.INTSEL = ET_CTR_ZERO; // Select INT on Zero event EPwm1Regs.ETSEL.bit.INTEN = 1; // Enable INT EPwm1Regs.ETPS.bit.INTPRD = 0x01; // Generate INT on 3rd event EPwm1Regs.ETSEL.bit.SOCAEN=1; EPwm1Regs.ETSEL.bit.SOCASEL=0x1; EPwm1Regs.ETPS.bit.SOCAPRD=0x1; }

老师你好!我遇到个很奇怪的问题,烦请您帮忙分析一下。我只输出一个PWM。

void EPwm1Setup(); 

main()

{

……..

EPwm1Setup();            //PWM输出模块,已经配置正常,能输出了

………

for(;;)

{}

}

EPwm1Setup();

{

………

}

问题一:按照以上这样的再RAM里运行,正常。点击运行(F5),执行。点击停止运行,停止。问题来了,在我第二次再点击运行时,还有波形输出,为什么啊?第二次点击时,应该不执行啊,停留在主循环for(;;)里啊,为什么还有波形输出?

问题二:把上面的调用函数位置换一下,不在主循环的外面调用,放到主循环里,就不执行了,没有波形输出了,这是为什么啊?

void EPwm1Setup(); 

main()

{

……..

//EPwm1Setup();            //PWM输出模块,已经配置正常,能输出了

………

for(;;)

{

EPwm1Setup();  

}

}

EPwm1Setup();

{

………

}

针对我以上的问题,是我哪里配置出问题了,请告诉我可能问题出现的位置,我在检查,感谢

囧:

回复 user4539844:

PWM初始化做一遍就会一直出波形了,你为什么要重复的放在状态机里再去初始化?

老师你好!我遇到个很奇怪的问题,烦请您帮忙分析一下。我只输出一个PWM。

void EPwm1Setup(); 

main()

{

……..

EPwm1Setup();            //PWM输出模块,已经配置正常,能输出了

………

for(;;)

{}

}

EPwm1Setup();

{

………

}

问题一:按照以上这样的再RAM里运行,正常。点击运行(F5),执行。点击停止运行,停止。问题来了,在我第二次再点击运行时,还有波形输出,为什么啊?第二次点击时,应该不执行啊,停留在主循环for(;;)里啊,为什么还有波形输出?

问题二:把上面的调用函数位置换一下,不在主循环的外面调用,放到主循环里,就不执行了,没有波形输出了,这是为什么啊?

void EPwm1Setup(); 

main()

{

……..

//EPwm1Setup();            //PWM输出模块,已经配置正常,能输出了

………

for(;;)

{

EPwm1Setup();  

}

}

EPwm1Setup();

{

………

}

针对我以上的问题,是我哪里配置出问题了,请告诉我可能问题出现的位置,我在检查,感谢

user4539844:

回复 囧:

我是想控制什么时候输出这个波形。我在做直流电机控制项目,想在外部有信号输入时,在输出PWM.

赞(0)
未经允许不得转载:TI中文支持网 » 关于28335调试时的问题
分享到: 更多 (0)