dsp语句执行时间问题

[复制链接]
1320|9
 楼主| Erichk 发表于 2017-9-26 10:23 | 显示全部楼层 |阅读模式
ACtemp=AC_current/4096*3.3;
result1 = result1+ACtemp*ACtemp;(这是用来采样交流电流,来计算有效值)像这样的计算语句执行要多长时间。(ACtemp和result1均为float)
我把这语句放到timer1定时器中断里边就会影响到以timer0为触发源的ADC采样。
我把timer1的周期设为30000(为500US),timer0的周期为60*1000000(为1S),时钟脉冲为60MHZ。
有考虑到用IQ来做写,但是都不执行不知道是什么原因。
ACtemp=_iq29(AC_current/4096*3.3);
result1 = _IQ29(result1+ACtemp*ACtemp);
迪卡 发表于 2017-9-26 10:41 | 显示全部楼层
不要用除法,除法耗资源太多
冰河w 发表于 2017-9-26 10:55 | 显示全部楼层
AC—current是AD口寄存器的16位整数,ACtemp = (float)(AC_current >>12) * 3.3
Thorald 发表于 2017-9-26 11:14 | 显示全部楼层
定点dsp
Bjorn 发表于 2017-9-26 11:25 | 显示全部楼层
定点dsp做浮点除法狠耗cpu的,这个是常识问题,想办法转换成定点乘法最好
Rollo 发表于 2017-9-26 11:32 | 显示全部楼层
浮点数右移?
Rangar 发表于 2017-9-26 18:14 | 显示全部楼层
浮点数移位操作的意义是啥?
Stannis 发表于 2017-9-26 18:23 | 显示全部楼层
可以用长的数据类型,把运算数据放大变成定点乘法,最终的计算结果再除以被放大倍数
Brand2 发表于 2017-9-26 18:37 | 显示全部楼层
代码处理可能会多做一点工作,但是编译之后的步骤相对定点机器处理浮点除法的运算过程,会下降几个数量级
Brand2 发表于 2017-9-26 18:42 | 显示全部楼层
C28 CPU只有乘法指令,且是整数乘法,使用浮点数(乘法或除法),都要调用内部过程,这样占用时间较多。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

99

主题

500

帖子

0

粉丝
快速回复 在线客服 返回列表 返回顶部