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.

[参考译文] TMS320F28379D:MATLAB Simulink 直接在中断中覆盖 PWM CMPA CMPB CMPB 寄存器

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

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/843206/tms320f28379d-matlab-simulink-overwirte-pwm-cmpa-cmpb-registers-directly-in-interrupt

器件型号:TMS320F28379D

大家好、

是否有人知道我如何直接在中断内部写入 PWM CMPA/CMPB 寄存器。

我正在使用 Simulink。

谢谢

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

    尊敬的 Kevin:

     C28x 硬件中断块也是如此。

    有关更多信息、请参阅示例'c28379Dpmsfocdual_CPU1_ERT'。

    在这里、我们将更新中断中的 CMPA 和 CMPB 寄存器。

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

    Venkatesh 您好、

    我尝试将所有 PWM 模块放入中断,但需要很长时间。

    我只想写入 CMPA、CMPB 和死区(DBRED /DBFED)寄存器。

    我确实使用了系统更新自定义代码块,它可以正常工作,但变量名 与 projectname 组合在一起。 因此、当我 用 另一个名称保存项目时、自定义代码不再工作、必须进行编辑。

    我还想读取 ADC 值。

    我可以使用存储器副本吗?如何使用?  我尝试过、但它不起作用。

    在这里、我的设置:

    此致

    Kevin

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

    您好!

    对于存储器复制块、在更新寄存器值的代码行前后、EALLOW 和 EDIS 指令可能会丢失数据。

    为此,您需要检查“插入自定义代码.....” "选项"选项卡下的选项。

    您已在上面捕获选项卡。

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

    您好!

    不管用。

    当我查看 C 代码时、内存复制块不在直接中断函数中...

    我希望在每次中断时覆盖 CMPA/CMPA/死区时间值。 还需要读取每个中断的 ADC 值。

    这是生成的代码:


    /* S 函数的 ConstCode (c28xisr_C2000):'/C28x 硬件中断包含:
    *子系统:'/中断_ADC'
    *
    /*函数调用系统的 ConstCode:'/Interrupt_ADC'*/
    /*本地块 I/O 变量*/
    领域32_T RTB_Conv9;
    Real32_T RTB_CCminusCMPA;
    /* S-function 的 ConstCode (memorycopy):'/Memory Copy'*/
    real32_T *memindsrc =(real32_T *)(&RTB_Conv9);
    real32_T *meminddst =(real32_T *)(EPwm1Regs.CMPA.bit.CMPA);
    EALLOW;
    *(real32_T *)(meminddst)= *(real32_T *)(memindsrc);
    EDIS;
    /* S-function 的 ConstCode (memorycopy):'/Memory Copy1'*
    real32_T *memindsrc =(real32_T *)(&RTB_CCminusCMPA);
    real32_T *meminddst =(real32_T *)(EPwm1Regs.CMPB.bit.CMPB);
    EALLOW;
    *(real32_T *)(meminddst)= *(real32_T *)(memindsrc);
    EDIS;
    /* S-function 的 ConstCode (memorycopy):'/Memory Copy2'*
    real32_T *memindsrc =(real32_T *)
    (&PWM_3PHASE_DAB_30_09_V1_B.Deadtimecheck);
    real32_T *meminddst =(real32_T *)(EPwm1Regs.DBRED.bit.DBRED);
    EALLOW;
    *(real32_T *)(meminddst)= *(real32_T *)(memindsrc);
    EDIS;
    /* S-function 的 ConstCode (memorycopy):'/Memory Copy3'*
    real32_T *memindsrc =(real32_T *)
    (&PWM_3PHASE_DAB_30_09_V1_B.Deadtimecheck);
    real32_T *meminddst =(real32_T *)(EPwm1Regs.DBFED.bit.DBFED);
    EALLOW;
    *(real32_T *)(meminddst)= *(real32_T *)(memindsrc);
    EDIS;
    /* S 函数的 ConstCode 结束(c28xisr_c2000):'/C28x 硬件中断'*/
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    尊敬的 Kevin:

    请您附加您的模型吗?

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

    您好!

    我现在做了一个权变措施。 我正在使用数据存储存储器和自定义代码块。

x 出现错误。请重试或与管理员联系。