M0没有硬件除法,如何高效得实现较大的除法算式??

2019-12-30 19:25发布

电机PI调速时,计算速度值时遇到一些问题。
计算速度时用到一个位数较大的除法,原来用的是 TI 的 DSP 没有问题,后移植到 M0 时出问题。
后来发现 M0 没有硬件除法指令,计算时耗时很大,导致异常。
测速采用的 T 法,所以最终简化的公式是:
        Speed = Scaler / T,T 为测得的一个变化量。
速度调节是几个 ms 调节一次,而这个算式得花很长时间,根本无法提供给 PI 模块的速度值来进行调节。

请教大家都是怎么做的?
坛里应该有很多人用 M0 来做电机控制的吧,那于这种除法是怎么来做的,或者怎么来避免?
谢谢~~~
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
41条回答
gaoqiu88
1楼-- · 2020-01-03 12:27
 精彩回答 2  元偷偷看……
ssclark1988
2楼-- · 2020-01-03 12:27
gaoqiu88 发表于 2016-5-20 10:34
你这种只有一个除法计算,可以放在一个定时器中断里面做(不要放在pwm中断里),中断时间1个ms,中断的优先级 ...

已经拿出来,放在定时器中断里做了,还是一样,等会修改下优先级,谢谢回答 ~~
gxnnhy
3楼-- · 2020-01-03 12:30
我就吃过除法运算的亏!
ssclark1988
4楼-- · 2020-01-03 16:12
gxnnhy 发表于 2016-5-22 16:49
我就吃过除法运算的亏!

帅哥,终于找到跟我一样掉进这个坑里的人了

后来你怎么解决这个问题的?

目前我测试的结果是:这个除法指令大概花费了 30us 左右,而且发现这期间不能被中断打断,导致 PWM 中断(30k)在这个时候被延迟了几个周期,导致系统正常。

我将 PWM 频率改为 10k,降低了这个频率,保证了这个期间不超过一个 PWM 的中断,这样虽然这一时刻的 PWM 中断会稍微晚一些,但至少系统正常了。
Magicfjpg
5楼-- · 2020-01-03 22:04
ssclark1988 发表于 2016-5-23 16:20
帅哥,终于找到跟我一样掉进这个坑里的人了

后来你怎么解决这个问题的?

除法运算时为啥要屏蔽PWM中断?
ssclark1988
6楼-- · 2020-01-04 04:00
 精彩回答 2  元偷偷看……

一周热门 更多>