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

TMS320F28027: 目前在编写关于单相UPS的程序,发现程序无法运行到main函数的while(1)的函数体里面

Part Number:TMS320F28027Other Parts Discussed in Thread:C2000WARE, TIDM-HV-1PH-DCAC

目前在编写关于单相UPS的程序,发现程序无法运行到main函数的while(1)的函数体里面,我只是把 函数enablePWMCLKCounting();这条语句去掉就可以执行到while里面 这是为什么?

enablePWMCLKCounting函数的代码如下:

//TODO enablePWMCLKCounting
void enablePWMCLKCounting(void)
{
EALLOW;
SysCtrlRegs.PCLKCR0.bit.TBCLKSYNC =1;
EDIS;
}

只要是在这个函数调用的后面语句都不会执行 这是怎么回事?但PWM中断程序可以运行?

谢谢!

Green Deng:

你好,还请说明一下是根据C:\ti\c2000\C2000Ware_DigitalPower_SDK_3_03_00_00\solutions\tidm_hv_1ph_dcac中的哪个例程进行测试的?对例程做过哪些修改?

,

jun liu:

您好!我是参考POWERSUITE下的DC-AC单元部分Single Phase Inverter: Voltage Source TIDM-HV-1PH-DCAC项目的I点击mport F280049C Project后导入的工程文件代码

我后来发现只要去掉这个函数  updateInverterPWM(INV_PWM1_BASE,INV_PWM2_BASE, invDutyPU);就可以运行好像是浮点数的影响?请问浮点数有什么好的办法?

此外当#if SENSING_OPTION ==ADC_BASED_SENSING这个条件成立的时候,在这个PWM2的20KHZ中断是在CTR = PRD发生还是在

在函数calibrateOffset中关于PWM中断好像是发生在CTR值递减为CMPB时发生的中断,个人认为PWM的中断应该发生在ZRO处才能保证SPWM波形正确,

因为在CTR = CMPB的时候发生中断那么去执行中断函数那么就会更新CMPA的值 这样就会改变PWM引脚的动作,ADC模式的时候中断设置如下

// // PWM1 INT is used to trigger the ISR // INT on Period event // EPWM_setInterruptSource(INV_ISR_TRIG_PWM_BASE,EPWM_INT_TBCTR_D_CMPB);

CMPB值设置代码为

// // set duty 0% initially // EPWM_setCounterCompareValue(INV_ISR_TRIG_PWM_BASE,EPWM_COUNTER_COMPARE_B, EPWM_getTimeBasePeriod(INV_ISR_TRIG_PWM_BASE)-(50/2));

以上代码均在函数calibrateOffset(&invIiOffset, k1, k2);中,请问按照这个逆变方案PWM的中断发生在什么时候?

谢谢!

// // Offset Calibration Routine#if SENSING_OPTION ==ADC_BASED_SENSING calibrateOffset(&invIiOffset, k1, k2);#endif

,

Green Deng:

抱歉误触了“TI认为已解答”。

浮点数的处理确实是一个代码迁移的难题,因为F280049是带FPU浮点运算单元的,而F28027不带FPU,所以所有牵扯到浮点运算的地方都要用IQmath来处理,定点芯片处理浮点数最直接的就是调用IQmath函数库

,

jun liu:

谢谢您的解答 正在考虑采用IQmath来处理 但现在有个疑问,例如我程序中用到三种范围的float数据,数据情况如下:

1.第一种浮点数范围为3122.66~5333.33

2.第二种浮点数范围为3.03~6.06

3.第三种浮点数范围为-1.999~2.0

"IQmathLib.h"文件中GLOBAL_Q为19 那么这个时候我怎么处理后面两种数据,这样才能保持数据结果的精度,谢谢!

,

Green Deng:

这个问题已经分配其他工程师了,会尽快回复的。

,

jun liu:

收到 谢谢 

赞(0)
未经允许不得转载:TI中文支持网 » TMS320F28027: 目前在编写关于单相UPS的程序,发现程序无法运行到main函数的while(1)的函数体里面
分享到: 更多 (0)

© 2024 TI中文支持网   网站地图 鲁ICP备2022002796号-1