主题中讨论的其他器件:TIDA-01606、 TIDA-010210、 controlSUITE、 C2000WARE
您好!
我想创建 RampGen 的 sin 图、因此我在 TI 内部使用了 lib 文件。 (/cfs-file/__key/communityserver-discussions-components-files/171/SolarLib.pdf 第157页)。 我尝试将 CpuTimer0用作中断、每次中断时、它都应该创建一个斜坡。 之后、我得到 了函数的 sin。 但是、我无法获得正确的图。 此外、我不确定是否创建了右侧的斜坡图。 我研究了 TI 的信息来源、但无法解决。 我记下了代码、希望您能向我展示需要更正的器件。 此外、对于这些值、我应该在图形属性中输入什么内容? 如果需要、我可以将完整文件添加为 zip 文件并放置图形结果。
主文件:
#include "Lab.h"//主 include 文件
#include "Solar_IQ.h"
//--全局变量
//我使用缓冲区获取正确的结果。 我把 AdcBuf1IQ 命名为 AdcBuf1IQ、但它不是关于 ADC、而只是一个名称。 我没有从先前的例子中做出太大的改变。
uint16 AdcBuf1[ADC_BUF_LEN];// ADC 数据缓冲区分配
_iq AdcBuf1IQ[ADC_BUF_LEN];// ADC 数据缓冲区分配- IQ
long GlobalQ = global_Q;// IQmath 调试支持
RAMPGEN_IQ 斜坡;
/********
*函数:main()
*
*说明:C28x 的主函数
(二 /
void main (void)
{
//-- CPU 初始化
InitSysCtrl();//初始化 CPU (文件:sysctrl.c)
InitGpio();//初始化共享 GPIO 引脚(文件:gpio.c)
InitPieCtrl();//初始化并启用 PIE (文件:PIECTRL.c)
InitWatchdog();//初始化看门狗计时器(文件:watchdog.c)
//--外设初始化
InitAdc();//初始化 ADC (文件:adc.c)
InitEPwm();//初始化 ePWM (文件:ePWM.c)
InitECap();//初始化 ECAP (文件:ecap.c)
//RAMPGEN 变量
RAMPGEN_IQ_INIT (&斜坡);
ramp.Freq =_iQ24 (90);
Ramp.StepAngleMax =_iQ24 (1.0/1000);
CpuTimer0.InterruptCount = 0;
//LEDcount=0;
DINT;//禁用 CPU 中断
EALLOW;//这是写入 EALLOW 受保护寄存器所必需的
PieVectTable.TINT0 =&TINT0_ISR;
EDIS;//这是禁止写入 EALLOW 受保护寄存器所必需的
//CPU 配置//
InitCpuTimer();
ConfigCpuTimer (&CpuTimer0、90、1000000);//90 MHz、500、000 uSecond
//使用只写指令将 TSS 位设置为0
CpuTimer0Regs.TCR.ALL = 0x4000;
PieCtrlRegs.PIEIER1.bit.INTx7=1;/
IER |= M_INT1;
EINT;
ERTM;
EALLOW;//这是写入 EALLOW 受保护寄存器所必需的
PieVectTable.TINT0 =&TINT0_ISR;
EDIS;//这是禁止写入 EALLOW 受保护寄存器所必需的
//--主循环
while (1)//无限循环-等待中断
{
asm (" NOP");
}
}//end of main()
/***文件结尾 /
ISR 文件;
中断空 TINT0_ISR (空)// PIE1.7 @ 0x000D4C TINT0 (CPU 定时器0)
{
CpuTimer0.InterruptCount++;
PieCtrlRegs.PIEACX.ALL = PIEACK_Group1;//必须确认 PIE 组
静态_IQ * AdcBuf1IQPtr = AdcBuf1IQ;//指向 ADC 数据缓冲区的指针
外部 RAMPGEN_IQ 斜坡;
RAMPGEN_IQ_MACRO (斜坡);
//--管理 ADC 寄存器
AdcRegs.ADCINTFLGCLR.bit.ADCINT1 = 1;//清除 ADCINT1标志
* AdcBuf1IQPtr++= Ramp.out;//当我想查看它的正弦图时,我将该行更改为' AdcBuf1IQPtr++=_IQsinPU (Ramp.out)'。
}