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.

[参考译文] TMS570LS1224:系统软件中断问题

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

https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/575067/tms570ls1224-problem-with-system-software-interrupt

器件型号:TMS570LS1224
主题中讨论的其他器件:HALCOGEN

你(们)好

IM 与 SSI 一起工作。 我从 GIO 通知中调用它。 由于 GIO 位于通道9 (高优先级)上、而 SSI 是通道23或2倍、因此我在 GIO 通知上的中断过程完成、然后 SSI 开始。  

就在调用 SSI 之前、我使用 gioDisableNotification (gioPORTB、2);为了避免 SSI 内部出现中断(是算法的核心)。 然后、我开始从 SSI 运行代码、所有操作都很完美。  

最后一步是使用 gioEnableNotification (gioPORTB、2);以便重新激活中断。 对于我看到的情况、它没有改变任何东西。 发生的情况是:

重新激活中断后、中断到达"}"并进入 RTI 计数器停止函数、从 SSI 返回到"}"、然后进入初始化并重新启动所有内容、但 Gio 通知从未到达...

使用 SSI 时是否缺少内容??

谢谢!!

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

    您好!

    您能否发布函数代码?

    重新激活中断后、它到达"}"并进入 RTI 计数器停止函数、返回到"}"

    哪个功能?

    此致、

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

    你(们)好

    我已经解决了这个问题。 我将从与 SSI 相关的代码中发布这些器件。 这是 Gio 通知中断的结束

    if (m_count>5149)
    {
    
    m_count=0;
    DONE_MUSTER_DATA=1;
    if (inicialization_don=1)//&& don_Muscus_data=1)
    {
    
    
    SS_INTERRUPT=data1;
    systemREG1->SSISR1 =(0x7500 |(0xFF 和 data1));
    
    
    }
    }//if (m_count>999)*/
    SAMPLING_MUSC=0; 

    这是 SSI 例程  

    if (ss_interrupt=data1)
    {
    
    //gioDisableNotification (gioPORTB、2);
    //_disable_IRQ ();
    //对信号进行 FIR 滤波
    //linREG->PIO3=(uint32) 2;//LIN_RX
    FIR_520();
    
    
    //检查接收到的信号是否只是一个脉冲
    //signal_pulse ();
    TIME_SIGNAL ();
    
    if (fif_don=1)/&& Muscum_data_prom>1.8 && signal_time>20)//&& arm_puls=0)
    {//使用从 SPI 获取的数据执行 FFT}
    
    
    
    
    
    
    
    
    
    
    
    //if (muscum_data_prom>1.0 && fir _done = 1)
    
    
    }//信号处理
    
    
    
    //gioEnableNotification (gioPORTB、2);
    don_processing=1;} 

    我刚刚在 中断开始时添加了 uint32 offset = systemREG1->SSIVEC 并且问题得到了解决。  

    您必须完全做到这一点。 如果只写入 systemREG1->SSIVEC,它将不起作用。 必须将值分配给变量。  

    SSI 的问题是您编写所有例程。 但在其他中断上、您只需执行所需的操作。 HALCOGEN 会处理所有标志和激活相关的事情  

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    你(们)好
    我遇到了与以前相同的问题、即使是读取寄存器、但我不知道原因。 我无法在此处上传代码、但我可以将其直接发送给您...

    问题是、一旦中断结束、它将再次进入 RTI.c 文件并进入计数器。 有两种情况:
    1) 1)禁用中断、以便我在系统中断内部没有任何中断
    2) 2)不禁用中断

    在第一种情况下,到达}后,代码将转至 RTI 代码。 但在第二种情况下,第一次达到}时,它将继续正常运行,第二次进入 RTI 代码...

    有什么想法吗??

    此致