dsPIC的除法运算

2020-02-09 11:40发布

使用dsPIC30F2020中间有一个除法,a/b,需要的到后面的小数值。
应该最简单的就是用a*(1/b)了,而且这样可以使用dsp内核计算,手工算出1/b是一个很小的数,然后乘a,a为INT型,但是使用DSP内核后读出的结果是0!不知道是什么原因,难道这样除不行吗?那还有没有其它方法呢?
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
17条回答
snail0204
1楼-- · 2020-02-09 15:00
是不是溢出了?
liansh
2楼-- · 2020-02-09 16:14
 精彩回答 2  元偷偷看……
xyufo2000
3楼-- · 2020-02-09 20:02
为什么不是直接a/b,.31精度因该够了。
headwolf_83
4楼-- · 2020-02-09 21:02
16位内核(无需动用DSP),有32位/16位的除法指令,比如要算3/2.33,不要小数点,你可以换成300/233来算,要小数点后1位,3000/233,这样的前提是工业控制场合。如果你要做DSP上的一些分析处理,这个方法就算了。
xyufo2000
5楼-- · 2020-02-09 23:28
两个数的数据格式不同。在这里 INT x Q15 ?
liansh
6楼-- · 2020-02-09 23:29
回复【3楼】xyufo2000  
-----------------------------------------------------------------------

不是精度的关系,主要是我用MPLAB SIM仿真来看float型除法要将近500个指令周期,太夸张了!

回复【4楼】headwolf_83  
-----------------------------------------------------------------------

这个数除出来要送到PID环节里面去调整用的,由于调整量是一个比例系数(小于1),所以必须要有小数,而且这两个值一个是INT型,一个是LONG型的,然后再放大有些麻烦了。


回复【5楼】xyufo2000  
-----------------------------------------------------------------------

确实一个是INT,一个是Q15格式。是不是这样不行啊?用MPLAB仿真环境这样仿真其它计算好像没有问题!只是小数位不见了!

一周热门 更多>