主题中讨论的其他器件:TIDM-1007、 C2000WARE、 powerSUITE、 C2000WARE-DIGITALPOWER-SDK
工具/软件:TI C/C++编译器
大家好、
我使用 PLL 提取电网电压的瞬时相位角、以执行应用的某些控制操作。 我的代码中用于配置 PLL 和 e 的 IF 部分
SPLL_1ph_Sogi_F spll1; 中断空 XINT2_ISR (void) { SPLL_1ph_Sogi_F_init (grid_FREQ、(float)(1.0/ISR_FREQUENCY))、&spll1); SPLL_1ph_Sogi_F_coeff_update (((float)(1.0/ISR_FREQ))、(float)(2*PI*GRGE_FREQ)、&spll1); spll1.u[0]=(Grid_Voltage_1_100.0); SPLL_1ph_Sogi_F_FUNC (&spll1); DacbRegs.DACVALS.all = spll1.cos*1024/1; }
我的 DAC 配置如下、
DacbRegs.DACCTL.ALL = 0x0001; //位15-8 0:保留 //位7-4 0000: DAC PWMSYNC 选择、不使用、因为 LOADMODE=0 //位3 0: 保留 //位2 0: LOADMODE、DACVALA 负载模式、0=下一个 SYSCLK、1=下 一个由 SYNCSEL 指定的 PWMSYNC //位1 0: 保留 //位0 1: DACREFSEL、DAC 基准选择、0=VDAC/VSSA、1=ADC VREFHI/VREFLO //-将 DAC-B 输出设置为中量程 DacbRegs.DACVALS.ALL = 0x0800; // DACVALS =位11-0、位15-12保留 //-启用 DAC-B 输出 DacbRegs.DACOUTEN.BIT.DACOUTEN = 1;// DAC 输出使能、0=禁用、1=使能 //- DAC-B 锁定控制寄存器 DacbRegs.DACLOCK.ALL = 0x0000; //写入1以锁定(设置后无法清除) asm (" EDIS");//禁用 EALLOW 受保护寄存器访问
我已经检查了传感器的 ADC 输出和微控制器生成的 ADC 结果、ADC 结果显示为预期结果。 但是、当我尝试使用微控制器的 DACB 引脚绘制 PLL 的输出时、它会给出零角。 我想知道我犯的错误或执行 PLL 的其他替代方法。
谢谢
Lahiru