|
楼主 |
发表于 2015-1-26 17:29:46
|
显示全部楼层
回答你的問題 http://www.amobbs.com/forum.php? ... 744&pid=8384377
- switch((u16)(Correction_Time/600)) {
- case n:
- MagDataX[n] = (s16)MoveAve_WMA(Mag.X, MAG_FIFO[0], MagCorrectionAve);
- MagDataY[n] = (s16)MoveAve_WMA(Mag.Y, MAG_FIFO[1], MagCorrectionAve);
- break;
- ...
- default:
- Correction_Time = 0;
- EllipseFitting(Ellipse, MagDataX, MagDataY, 8);
- Mag.OffsetX = Ellipse[1];
- Mag.OffsetY = Ellipse[2];
- SensorMode = Mode_Algorithm; // 切換至運算模式
- break;
- }
复制代码
(Correction_Time/600) 決定每一個 case 會執行的時間與次數。
case 的 n = 0 ~ 7,表示 360 度取樣 8 個點,分別為 0(360), 45, 90, 135, 180, 225, 270, 315
每一個取樣點裡面紀錄 X, Y 軸的磁力大小,MoveAve_WMA 只是求多筆資料的平均值。
所以跑完 case0 ~ case7 會有 8*2 筆磁力計資料(取完平均值的),將這些資料放入橢圓擬合計算橢圓參數。
|
|