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.

[参考译文] TMS320F2.8055万:当SCI中断发生时,SPINTAC运动失去控制

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

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/579782/tms320f28055-spintac-motion-lost-control-when-sci-interrupts-happen

部件号:TMS320F2.8055万

您好,TI:

 如何将ADC中断设置为最高优先级,以便SCI RX中断在SPINTAC运行时不会影响其位置计划?

有没有其他方法可以避免这两个中断之间的冲突?

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    是的,您可以将ADC中断设置为饼图中的最高优先级。 请调查HAL_enableAddInts()函数-您将看到一些设置ADC中断优先级的函数调用。 如果遵循ADC_IntNumber_1到相应的枚举定义,您将看到ADC_IntNumber_1HP的枚举。 您可以在PIE中断矢量表(本文档的第134页: www.ti.com/.../spruhe5c.pdf)上看到 ,ADC实际上可以设置为最高优先级的中断,这与我提到的枚举相对应。 根据需要更改传递给这些函数的变量。 另请将CPU中断编号更改为高优先级中断的相应编号。

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

    你好,Sean,

     我已经尝试将优先级更改为ADCINT9 ,它也在PIE的组1中,但它没有解决冲突问题。

    除了设置优先级之外,我还能做什么来避免Rx中断以停止我的电机运动?  

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

    我将ADC优先级设置为ADC_IntNumber_1HP,如下所示,但它的电机无法初始化。 这与我设置ADCINT9的方式相同,电机 工作正常。但没有解决SCI RX中断的冲突问题。 所以我将最后一个尝试。

    静态内联void HAL_initIntVectorTable(HAL_handle )
    {
    HAL_Obj *OBJ =(HAL_Obj *) handle;
    PIE_Obj *PIE =(PIE_Obj *)obj->PiHandle;
    
    
    enable_protect_register_write_mode;
    
    PIE->ADCINT1_HP =&&;PIE->SCIRXINTA ISR_mainsciar_protected
    
    
    模式; ISR_DISA_protect_mode; ISR_DISA_mode=
    
    return;
    }// hal_initIntVectorTable()函数的结束 
    静态内联void HAL_acqAdcInt(HAL_handle handle,const ADC_IntNumber_e intNumber)
    {
    HAL_Obj *obj =(HAL_Obj *) handle;
    
    
    //清除ADC中断标志
    ADC_PIRINTFlag (obj->adcHandle,intNumber);
    
    
    //从PIE组10 PIE_CLEAR_INT(->CLEAR_RETURN1;
    Group_ADACNumber_EN_END=<=<obj_ADACNumber_EN;}
    
    
    

    void HAL_enableAdcInts(HAL)
    { HAL_Obj
    *obj =(HAL_Obj *) handle;
    
    
    //启用与ADC中断PIE_ENableAdcInt(PireInt->ADC_Handle,ADC_IntNumber_1hp);
    
    
    
    //启用ADC ADC_enableNumber(obj->adcHandc1cpu/
    
    
    
    中断
    
    
    
    启用ADC_IntNumber; IN1cpu_Endl;启用ADC<_EndleNumber_Endle/CUp_Interrupt/<obj_Endl>中断< 

    //确认ADC中断
    HAL_acqAdcInt (halHandle,ADC_IntNumber_1HP); 

    当我设置 ADC_IntNumber_1HP时,我是否需要任何额外的步骤?