Thread 中讨论的其他器件:controlSUITE、 C2000WARE
大家好、
我有一个当前在 Timer1中断内运行的 SW 状态机:
INTERRUPT void CPU_Timer1_ISR (void) { CpuTimer1.InterruptCount++; GpioDataRegs.GPASET.BIO9 = 1; GpioDataRegs.GPACLEAR.BIPOL9 = 1; cntOutputsHigh = 0; cntOutputsHigh += GpioDataRegs.GPIO2;GPIO2 cntOutputsHigh += GpioDataRegs.GPADT.BIO4; cntOutputsHigh += GpioDataRegs.GPIO30; cntOutputsHigh += GpioDataRegs.GPIO31; if (cntOutputRegs.GPOutputsHigh!= GpioOutputs.J1 )= GpioOutput15.0;gpit/gpipt1 = gpio1;gpit1 (gpio1.gpit.gpit1)= gpio1; gpio1 = gpio1;gpio1;gpot1 = gpio1;gpipt1–gpio2.gpipt1–gpipt1–gp1–gpipt1–gp1–gpipt1–gp1–gpipt1–gp1–gpipt1–gpipt1–gp1–gpipt1–gpipt1–gop1–gpipt1–gpipt1– g //取4x 位低电平(J1-14) 中断; 情形1: GpioDataRegs.GPACLEAR.GPIO5= 1;//取1x 位高电平(J1-3) GpioDataRegs.GPASET.BIO8= 1;//取2x 位低电平(J1-12) GpioRegs.Gpio3 = 1 ;gpio15.4x 位 GPT = 1;/ gpiDataRegs.gpiET.x 位(gpiO39) //GpioDataRegs.GPASET.bit.GPIO5=1;//将1个位设为低电平(J1-3) GpioDataRegs.GPACLEAR.BIO8=1;//将2个位设为高电平(J1-12) GpioDataRegs.GPASET.BIO25=1;//将 1 个 位设为低电平(J1-12)/GpioRegs.GPOL=3;/ GPIO3x (GpiDataRegs.J1.x =1)//取1个位低(J1-3) //GpioDataRegs.GPIOET.bit.GPIO8= 1;//取2个位低(J1-12) GpioDataRegs.GPACLEAR.BIO25= 1;//取3个位高电平(J1-6) GpioDataRegs.B39=1;/ Gpio39 = 1;GPT = 1。/GPT = 4 = 1//将1x 位拉低(J1-3) //GpioDataRegs.GPASET.BIO8= 1;//将2x 位拉低(J1-12) //GpioDataRegs.GPASET.BIO25= 1;//将3x 位拉低(J1-6) GpioDataRegs.J1.4x 位 断开;// GPIO39 = 1 }(默认值)
逻辑工作正常、问题是中断时序不一致。
以下是初始化代码:
ConfigCpuTimer (&CpuTimer1、86、1); //
使用 GPIO9、我看到以下使用数据采集系统的情况:
因此、在这个500us 窗口中大约有12个设置/清除、它们会在一段时间内随机分配。
我怀疑其他中断优先于嵌入在 Timer1 ISR 中的状态机例程。 这将解释变化的周期。
我在手册(SPRS698D)中看到了一个看起来很有希望的参考:
我是否应该重新配置计时器以将 timer0用作状态机的中断源?
还有其他想法或建议吗?
提前感谢您的宝贵意见!


