打印

DSpic30F查表法变频疑问,请指教,谢谢!

[复制链接]
1830|0
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
闲来玩玩|  楼主 | 2013-2-18 20:31 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

在MCPWM 中断服务程序中对B 相进行调制  摘自GS004+文档
/*********************************************************************************************************************************************/.
Phase += Delta_Phase;                                                      // 将Delta_Phase 累加到Phase 变量中
Phase_Offset = _120_DEGREES;                                      // 将正确的值加入相位偏移量中
Multiplier = sinetable[(Phase + Phase_Offset) >> 10];        // 获取正弦信息
asm("MOV _Multiplier, W4");                                              // 装载第一个乘数
asm("MOV _PTPER, W5");                                                 // 装载第二个乘数
asm("MOV #_Result, W0");                                                  // 将结果地址载入W0
asm("MPY W4*W5, A");                                                       // 执行小数乘法
asm("SAC A, [W0]");                                                           // 将乘法结果装入var 结果
PDC2 = Result + PTPER;                                                   // 移除占空比的负值
/********************************************************************************************************************************************
第一次PWM进中断,刚开机Phase很小,(Delta_Phase=197),方括号[内的数据是21] 输出第21号正弦数据运算占空比,第二次PWM中断,Phase值还是小,方括号内的数还是21,第N次中断Phase值加上相位偏移量使方括号内的数变成22,查表得22号正弦数据运算占空比,当B相从21号查到63,因为是第一次刚开机,B想完成240度,下一步B相
会从0号开始输出正弦数据表,这时候PWM进中断B相应该不用再加上相位偏量,回过来,难道微软这文档是错的,问题1:位偏移量只能开机时加一次,问题2:同一个正弦数据要中断很多次?
/***********************************************************************************************************************************************/
SineTable:
.hword 0,3212,6393,9512,12539,15446,18204,20787,23170,25329
.hword 27245,28898,30273,31356,32137,32609,32767,32609,32137,31356,30273,28898
.hword 27245,25329,23170,20787,18204,15446,12539,9512,6393,3212,0,-3212,-6393
.hword -9512,-12539,-15446,-18204,-20787,-23170,-25329,-27245,-28898,-30273
.hword -31356,-32137,-32609,-32767,-32609,-32137,-31356,-30273,-28898,-27245
.hword -25329,-23170,-20787,-18204,-15446,-12539,-9512,-6393,-3212

#define _120_DEGREES 0x5555
#define _240_DEGREES 0xAAAA
unsigned int Phase, Delta_Phase, Phase_Offset;
int Multiplier, Result;
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

16

主题

87

帖子

0

粉丝