Dspic30f4011 Saturation 問題。

作者 W.W. 於 2019年03月16日 17:49:20
各位先進好,

最近想把控制器的運算時間壓縮,
在判斷Saturation上一直沒有想法。

因為想要讓控制器有較小的問態誤差,Gain通常都會有點大,
用 Fractonal 的方法會把Gain壓得很低(不希望越乘越小)。

因此在判斷Saturation上,現階段是以
long(datatype) = int(datatype) * int(datatype)
然後對 long 最前面 16Bit作判斷決定saturation與否,
但是這樣計算時間就會大大提升,

初步測試(Simulator):
long = long * long 需要 16個cycle
long = int   * int    需要  5個cycle
int   = int   * int    需要  3個cycle

若是再加入 Saturation 的判斷 總會需要較多的時間
測試 OV flag,Z flag 與 C flag 在乘法時,基本上是無效。

想請教各位先進前輩,有沒有使用
int   = int   * int   
直接判斷的方法,或是 可以直接設定某個Config讓他自動Saturation (我有找過,但找不到)

感謝各位幫忙解答,

謝謝。

來自: http://www.microchip.com.tw/newbb/viewtopic.php?forum=2&topic_id=22571&post_id=79371