This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

[参考译文] TMS320F28069:时间关键型操作需要以一致的时间增量运行

Guru**** 2581345 points
Other Parts Discussed in Thread: CONTROLSUITE, C2000WARE

请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/626157/tms320f28069-time-critical-operation-needs-to-run-in-consistent-time-increments

器件型号:TMS320F28069
Thread 中讨论的其他器件:controlSUITEC2000WARE

大家好、

我有一个当前在 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用作状态机的中断源?

还有其他想法或建议吗?

提前感谢您的宝贵意见!

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    以下是原始帖子中缺少的图像:

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    尊敬的 Robin:

    您可以正确地指出、只有计时器0可用于 CLA。 我在 下图中突出显示了中断的路径。 您可以在《TMS320xF2806x 技术参考手册》 中找到该手册:http://www.ti.com/lit/ug/spruh18g/spruh18g.pdf 

    在同一手册的第1.4.5节中、您将能够从图中更清楚地了解到只有 Timer0连接到 PIE 块。 定时器1和2直接连接到 CPU、因此 CLA 无法将它们用于中断。  

    请使用计时器0从 CLA 生成中断、并检查您是否能够生成一致 的中断。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    谢谢 Ritvik、感谢您的帮助。  我看到 CLA 可以提供并行处理、以使一些时间关键型代码更一致地运行。

    我一直在对文档进行介绍、但我感到困惑。

    9.3.2 SPRUH18G 中的 INIT 序列是排印错误的。  下面是我所做的、我感到困惑的地方。

    1.将 CLA 代码复制到 CLA 程序 RAM 中
    以下是 main()初始化区域中的代码:
       memcpy (&Cla1ProgRunStart、&Cla1ProgLoadStart、(uint32)&Cla1ProgLoadSize);
    (我不知道 Cla1ProgRunStart 在何处声明或定义。  这个 memcpy()如何知道包含我的 stateMachineTask()代码?)

    2.初始化 CLA 数据 RAM:
      无需数据。  我要使用的算法是一个简单的状态机、它对4个 GPIO 的输出状态进行采样、并根据所测试的4个 GPIO 的状态设置4个其他 GPIO。

    3.配置 CLA 寄存器:
      -在 PCLKCR3寄存器中启用 CLA 时钟:
        这是用于初始化时钟的代码
             SysCtrlRegs.PCLKCR3.bit.CPUTIMEENCLK = 1;
      -填充 CLA 任务中断矢量:MVECT1至 MVECT8:
        这是设置矢量的代码、之前由不同的 eng 添加。
             Cla1Regs.MVECT1 =((UINT16) Fir256Task -(UINT16)&Cla1ProgRunStart);
             Cla1Regs.MVECT8 =((UINT16) CircBufClearTask -(UINT16)和 Cla1ProgRunStart);
        我认为我需要做一个类似的发言。  这看起来是对的吗?
             Cla1Regs.MVECT7 =((UINT16) StateMachineTask -(UINT16)&Cla1ProgRunStart);
    (我想创建一个名为 stateMachineTask()的函数,它包含状态机代码吗?  这可以是标准 C 函数吗?)
      -选择任务中断源:
        下面介绍了实现方法
            Cla1Regs.MPISRCSEL1.bit.PERINT8SEL = 2;
      -如果需要、启用 IACK 以从软件启动任务:
        我不确定我的状态机代码是否需要该代码。  它显然是在其他地方使用的、因为如果我禁用它、其他代码将停止工作。  这是初始化代码
             Cla1Regs.MCTL.bit.IACKE   = 1;
      必要时将 CLA 数据 RAM 映射到 CLA 空间:
        该代码之前由不同的 SW eng 设置。 我认为它不会干扰我尝试执行的操作、但如果您不同意、请告诉我。
             Cla1Regs.MMEMCFG.bit.RAM0E   = 1;
             Cla1Regs.MMEMCFG.bit.RAM1E   = 1;
           Cla1Regs.MMEMCFG.bit.RAM2E   = 1;
             Cla1Regs.MMEMCFG.bit.RAM0CPUe   = 1;
      将 CLA 程序 RAM 映射到 CLA 空间:
        该代码之前也是由不同的 SW eng 设置的。 我认为它不会干扰我尝试执行的操作、但如果您不同意、请告诉我。
             Cla1Regs.MMEMCFG.bit.PROGE   = 1;

    4.初始化 PIE 矢量表和寄存器:
        该代码之前由不同的 SW eng 设置。
             PieCtrlRegs.PIEIER1.bit.INTx7=1;
             PieCtrlRegs.PIEIER1.bit.INTx8 = 1;
           PieVectTable.CLA1_INT1 =&cla1_Task1_ISR;
        我认为我需要做一个类似的发言。  这看起来是对的吗?
             PieVectTable.TINT0 =&cla1_task7_ISR;
    (请参阅底部的我的评论。)

    5.启用 CLA 任务/中断:
        该代码之前由不同的 SW eng 设置。
             Cla1Regs.MIER 位。INT1=1;
             Cla1Regs.MIER 位.INT8 = 1
        我认为我需要做一个类似的发言。  这看起来是对的吗?
             Cla1Regs.MIER 位.INT7 = 1;

    6.初始化其它外设:
        该项目使用多个板载 ADC、但 SOC 由软件触发。  我不知道 CLA 是否实际被使用。  一些设置工作已经完成、但代码似乎被忽略。  现有 CLA 代码将提供的服务实际上是由 CPU 提供的、而不是通过其他代码提供的。


    我对 MVECT 分配地址与外设中断矢量表的区别和用法感到困惑。

    定时器0启动 TINT0中断、看起来像 PIE Mux 外设 int 矢量表5-11、指示程序执行跳转到存储在0xD4C 中的地址(根据表5-11)。

    但是、MVECT7似乎包含任务的中断矢量。  上面显示的代码似乎将任务的地址加载到 MVECT 中。  那么、如果我的 stateMachineTask()代码的起始地址在 MVECT 中、那么 TINT0向量到0xD4C 的作用是什么?

    感谢您的帮助!

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好!

    MVECT 应指向 CLA 任务。 您不需要像您所示那样对向量进行任何偏移或减法。 请参阅 controlSUITE 和 C2000Ware 中的 CLA 示例。 您应该创建一个类似于 ramfuncs 段的 CLA 代码段、然后在 main 的开头执行该段的 memcpy。 然后、您只需使用任务别名或符号将 CLA 任务矢量分配给 MVECT。

    此外、请确保已正确启用 CLA 的时钟。

    您最好查看我们提供的 CLA 示例。

    SAL
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    谢谢 Sal。  我正在努力确定从 CLA 运行状态机所需的条件、以及不需要的条件。  我查看的是尝试计算它的示例代码。  稍后会对此进行详细介绍...

    我之前讲过有关状态机的错误信息。  它不测试4个 GPIO 的状态、而是测试4个 ePWM 的状态。  在 C28xx CPU 代码中、我测试GpioDataRegs.GPADAT.bit.GPIOx以查看 ePWM 状态是高电平还是低电平。  (除了时间一致性之外、这很有用。  通过使用 CPU Timer1中断来运行代码、其他中断会导致时间间隔不一致。)

    很幸运、我使用的是 ePWM 而不是 GPIO、因为 F280969的 CLA 显然不能直接访问 GPIO 寄存器、但它可以直接访问 ePWM 寄存器。

    第一个问题是、如何测试 CLA 中 ePWM 的输出状态?

    第二个问题是、由于 F280969的 CLA 不能直接访问 GPIO 寄存器、因此在状态机以时间一致的方式确定要设置的输出后、如何设置它们的输出状态?

    提前感谢!

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    尊敬的 Robin:

    1) 1)我不确定是否有方法可以直接使用 CLA 测试 PWM 的状态、而不是查看 PWM 寄存器。 我想您可以设置一些回向 ADC 的回调、并生成一个中断、触发 CLA 任务来检查这一点。

    2) 2)我认为最好的方法是将一些数据写入消息 RAM 或 CLA 数据 RAM、以便 C28x 在任务完成后读取。 任务完成后、您可以触发 C28x 中断、然后在 ISR 中、该中断可以从 CLA 读取消息数据并根据需要配置 GPIO。

    SAL
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好 Sal、

    1) 1)我不确定是否有方法可以直接使用 CLA 测试 PWM 的状态、而不是查看 PWM 寄存器。

    是否有办法通过查看 PWM 寄存器来查看 PWM 输出电平?  如果是、哪个寄存器将包含该信息?

    2) 2)我认为最好的方法是将一些数据写入消息 RAM 或 CLA 数据 RAM、以便 C28x 在任务完成后读取。 任务完成后、您可以触发 C28x 中断、然后在 ISR 中、该中断可以从 CLA 读取消息数据并根据需要配置 GPIO。

    我看到您说的话、我将进一步对此进行调查。

    谢谢 Sal!

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    尊敬的 Robin:

    您到底在寻找什么信息?

    首先、我将查看 TRM 第3.4节中的 ePWM 寄存器。

    www.ti.com/.../spruh18g.pdf

    SAL
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好 Sal、

    我的状态机每~10us 需要知道4个 ePWM 的输出是高电平还是低电平。  

    我开始使用 C28XX 定时器中断、通过查看 GPIODAT 寄存器来检查它们的输出。  状态机的输出由4个 ePWM 的输出状态决定。  逻辑工作正常、但遗憾的是、由于其他中断插入延迟、该操作的时序不一致。

    因此、当我将代码从 C28XX 移出并移入 CLA 时、我需要知道如何检查这些 ePWM 输出。  在我看来、CLA 没有对 GPIODAT 寄存器的访问权限、但它确实有对 ePWM 寄存器的直接访问权限。  我只是不知道是否有任何 ePWM 寄存器包含有关 ePWM 输出状态的信息。

    哪个寄存器将告诉我 ePWM 的输出状态?

    谢谢、
    Robin

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    Robin、

    我在 PWM 模块中看不到一个在其输出端提供状态的寄存器。  通常、获取 PWM 当前状态的最佳方法 是按照您的操作:直接读取 GPIO 引脚。  但是、正如您指出的、CLA 没有对 GPDAT 寄存器的访问权限。  我只能想到两种实际的解决方案:

    -触发来自 Timer0的 CPU 中断、读取 CPU 端的 GPxDAT 寄存器、将信息存储在消息 RAM 中、并从 CPU ISR 触发 CLA 任务。   然后、我们将回到您之前在帖子中提出的时间问题。

    -如果您有固定的 PWM 配置,则应该能够通过读取 PWM 计时器计数和比较寄存器来确定 PWM 状态。 CLA 可以访问 这些寄存器、因此、对于已知的 PWM 模式、您应该能够以这种方式推断瞬时 PWM 状态。

    此致、

    Richard

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好 Richard、

    是否建议将 ePWM 配置为递增/递减计数(EPwm2Regs.TBCTL.bit.CTRMODE = TB_COUNT_updown;)、然后使用 TBSTS 寄存器(EPwm2Regs.TBSTS.bit.CTRDIR)确定输出电平?

    谢谢、
    Robin

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    尊敬的 Robin:

    是的、我想到了这样的东西。 根据 PWM 的配置方式、您应该能够通过读取 TBSTS 中的 TB 计数器、比较寄存器和可能的方向位来确定 PWM 状态。 您不必使用向上/向下计数模式来执行此操作。

    此致、

    Richard
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好 Richard、

    根据之前提到的 PWM 变化、我的状态机的输入端现在正在工作。  现在、我正在努力为器件上的引脚获取四个输出。  提醒一下、我要将其设置为从 CLA 运行。  因此、该方法只需使用可直接从 CLA 访问的寄存器。

    我需要四个输出来独立改变状态、频率不超过每125us、精度为正负几微秒。  我可能使用~10us 的轮询率。  时钟以86MHz 的频率运行、因此应该有足够的时间。

    我已排除使用大多数 CLA 可访问模块(比较器、eCAP、eQEP 和 ADC)、除了 ePWM。  我知道这是 PWM 的一种非常规用途、但 我的选择已经用完了。  

    在这种情况下、 我需要从 CLA 切换器件上的四个独立输出引脚。  根据 SPRUH18G 和 SPRS698F 的介绍、我可以控制 ePWM 输出的输出状态、如下所示:

    1. 设置 GP MUX 寄存器、为输出引脚分配四个 ePWM。
    2. 设置 TZ 寄存器以控制这四个 ePWM。
    3. 在 CLA C 代码中、软件强制一个或多个 ePWM 发生跳闸。
    4. 结果是一个或多个 ePWM 输出的状态变化。

    这有道理吗?  如果不可行、我不想花很多时间来解决这个问题。

    感谢您的宝贵帮助!

    Robin

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    尊敬的 Robin:

    您的方法应该起作用。  您可以使用 TZCTL 中的 TZA 或 TXB 字段配置适当的 PWM 逻辑、然后使用 TZFRC 中的 OSHT 位强制执行一次性跳闸。  对于下一个转换、您将使用 TZCLR 清除事件、重新配置 TZCLT、然后重复此操作。  看起来不错、但我没有尝试以这种方式使用 PWM。

    或者、如果遇到困难、您可以尝试每次重新配置 AQ 模块以强制设置高/低电平。  其缺点是您需要一个转换的(counter=COMPARE)匹配、因此计数器必须通过 CMPAA/B 运行、并且延迟很小、但这似乎并不是很重要的时间、您可以选择高 PWM 频率。

    此致、

    Richard

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好 Richard、

    很棒!  现在、我能够如您所述切换 ePWM 输出、但我需要消除 ePWM 本身生成的信号。

    以下是 ePWM 在执行强制跳闸之前生成的信号:

    以下是实施强制跳闸后的情况:

    如图所示、ePWM 大约每650us 生成一个低占空比周期性脉冲。 在进行这些强制跳闸更改之前、我已经通过这种方式进行了设置。 当输出应为高电平时、新的状态机代码强制跳闸、并在输出应为低电平时将其清除、而不考虑 ePWM 自身生成的信号。

    禁用 PWM 生成的周期性信号的适当方法是什么? 通常、我会通过禁用 ePWM 的时钟来禁用它。 我认为它需要时钟来执行强制跳闸功能。 只需消除在定时器到达零和周期时设置和清除输出的两行代码是否合适? 如此处注释所示:

    是否有更好的方法?

    谢谢、

    Robin

     

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    尊敬的 Robin:

     我认为是这样。  请尝试先删除这两行。  

     PWM 模块的时钟输入需要启用、但我认为由于您强制跳闸、PWM 计时器实际上不需要运行。  尝试冻结计时器:

    EPwm1Regs.TBCTL.bit.CTRMODE = 3;//冻结 TB 计数器

    ...然后像以前一样操作 TZCLR、TZCTL 和 TZFRC。  我认为这应该已经足够了。

    此致、

    Richard

     

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好 Richard、

    好的、我在 C28x 中编写并验证了代码。  我使它模块化、因此它可以更轻松地移植到 CLA。  

    现在、我已将其移至 CLA。  似乎我能够正确设置所有寄存器、因为我看到 CLA 函数中发生了一些事情。  Timer0正在创建一个中断、并且正在发生正确的情况。

    但是、我在写入 ePWM 寄存器时遇到问题。  它是一个受保护寄存器、需要 EALLOW/EDIS 从 C28x 写入它。  这在 CLA 中不起作用。  我在这里找到了 CLA 中对使用 MEALLOW/MEDIS 的引用:
    "processors.wiki.ti.com/index.php/Control_Law_Accelerator_(C2000_CLA)_FAQ"如下所示:

    问:您提到的一些寄存器是 EALLOW、受主 CPU 的恶意写入保护。 CLA 也具有此保护功能吗?

    CLA 状态寄存器中有一个名为 MEALLOW 的位、用于启用/禁用 CLA 写入保护。 这由 MEALLOW/MEDIS CLA 指令置位和清零。 这种保护与主 CPU 的 EALLOW 位无关。 也就是说、主 CPU 可以通过 EALLOW 启用写入、但是寄存器仍将通过 MEALLOW 受到 CLA 写入保护。


    当应用 MEALLOW 和 MEDIS 时、生成代码会产生错误:
    #20标识符"MEALLOW"未定义

    是否缺少宏定义?

    是否有不同的方法来控制该位?

    可能允许这样的写入:

    EALLOW;
    Cla1Regs._MSTF.bit.MEALLOW = 1;
    EDIS;

    不允许这样的写入:

    EALLOW;
    Cla1Regs._MSTF.bit.MEALLOW = 0;
    EDIS;

    感谢你的帮助。

    Robin

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    最后一个帖子的附录:

    我向我的模块头文件添加了以下代码:
    #define MEALLOW __asm (" MEALLOW ")
    #define MEDIS __asm (" MEDIS")
    ePWM 输出现在正在响应从 CLA 运行的状态机代码。

    我将进行一些测试、以了解时间安排如何改进(相对于原始帖子)并报告我的发现。

    再次感谢。
    Robin
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    好的、我的状态机正在 CLA 中工作、但现在 DSP 滤波器不再工作。  他们一直在 C28中工作、而不是 CLA、我不打算将他们放在 CLA 中。

    表达式监视窗口将其显示为"+INF"或"-INF"。  通过一些疑难解答、我可以看到滤波器记录(biquad)按预期启动、但每次迭代时、值都会不断上升到溢出状态、读出为"inf"。

    我猜是我在某种程度上打破了 IQ Math 函数。  添加 CLAMath 库是否可能导致与 IQMath 库发生冲突?  以下是 project.h 文件中的包含项:

    以下是滤波器代码的一个片段:

    有什么想法吗?

    谢谢、
    Robin

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    Robin、

    很抱歉、我错过了您之前的帖子。

    IQmath 和 CLA 库之间不应存在冲突。  当您迭代滤波器时、第一次乘法的结果是否正确?  如果是这样、则表示 IQmath 不是问题。  您能否在观察窗口中检查您的系数设置以确保它们符合预期?  如果是、请尝试在不同的项目中运行滤波器代码、以查看其行为是否不同。

    BTW、我注意到您正在源文件中设置 MATH_TYPE 和 GLOBAL_Q、但这些通常在"IQmathLib.h"中设置、我建议您这样做。  您能检查是否存在冲突?

    此致、

    Richard

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    由于 sin()函数没有声明,因此过滤器不起作用。  我曾在某个时候评论过 math.h、但忘记了它。  删除注释后、筛选器开始工作。

    这是一条漫长而曲折的道路、但一切都在正常工作。

    ePWM 生成四个音调、而在 CLA 中运行的状态机代码查看 PWM 寄存器以确定波形输出状态。

    状态机的输出像控制 GPIO 一样控制 ePWM 输出。

    最初的时间不一致问题已有显著改善。

    感谢所有贡献者!

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    尊敬的 Robin:

    很高兴听到您使用它。  干得不错、感谢您的介绍。

    此致、

    Richard