关于microchip的AN1017程序
本帖最后由 lanjeo 于 2015-4-29 10:24 编辑angle2 = angle - VECTOR1;
angle1 = SIXTY_DEG - angle2;
t1 = sinetable[(unsigned char)(angle1 >> 6)]; //这个地方角度除以64???????????
t2 = sinetable[(unsigned char)(angle2 >> 6)];
t1 = ((long)t1*(long)volts) >> 15;
t1 = ((long)t1*(long)tpwm) >> 15;
t2 = ((long)t2*(long)volts) >> 15;
t2 = ((long)t2*(long)tpwm) >> 15;
对于这个左移15位 就是除以2的15次方这个算法不是很理解求大神解释下
除64是为了获得查表值在sintable里头,后面移位15是为了把t1和t2能缩放到占空比值里头。 amonghappy 发表于 2013-9-29 09:38
除64是为了获得查表值在sintable里头,后面移位15是为了把t1和t2能缩放到占空比值里头。
前辈 能不能留个QQ号码呀 小子有些问题能不能向你请教一下呀{:soso_e100:} {:soso_e100:} 小弟我刚好这边也有疑问想请问前辈,为什么sinetable表是将360度区分为171个等分,还有表内的171个数值是怎么来的?
int __attribute__((near)) sinetable =
{0,201,401,602,803,1003,1204,1404,1605,1805,
2005,2206,2406,2606,2806,3006,3205,3405,3605,3804,
4003,4202,4401,4600,4799,4997,5195,5393,5591,5789,
5986,6183,6380,6577,6773,6970,7166,7361,7557,7752,
7947,8141,8335,8529,8723,8916,9109,9302,9494,9686,
9877,10068,10259,10449,10639,10829,11018,11207,11395,11583,
11771,11958,12144,12331,12516,12701,12886,13070,13254,13437,
13620,13802,13984,14165,14346,14526,14706,14885,15063,15241,
15419,15595,15772,15947,16122,16297,16470,16643,16816,16988,
17159,17330,17500,17669,17838,18006,18173,18340,18506,18671,
18835,18999,19162,19325,19487,19647,19808,19967,20126,20284,
20441,20598,20753,20908,21062,21216,21368,21520,21671,21821,
21970,22119,22266,22413,22559,22704,22848,22992,23134,23276,
23417,23557,23696,23834,23971,24107,24243,24377,24511,24644,
24776,24906,25036,25165,25293,25420,25547,25672,25796,25919,
26042,26163,26283,26403,26521,26638,26755,26870,26984,27098,
27210,27321,27431,27541,27649,27756,27862,27967,28071,28174,
28276,28377};
页:
[1]