您好,
在我们的设计中,我们使用的是6455 DSP。 当我们启用 多个中断时,只有最新启用的中断工作,并且它正在覆盖第一个中断。
但是、当我看到我的事件设置寄存器(相应的事件已设置)时、即使 INTMUX 寄存器也会显示与该 VectId 挂钩的事件。
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.
您好,
在我们的设计中,我们使用的是6455 DSP。 当我们启用 多个中断时,只有最新启用的中断工作,并且它正在覆盖第一个中断。
但是、当我看到我的事件设置寄存器(相应的事件已设置)时、即使 INTMUX 寄存器也会显示与该 VectId 挂钩的事件。
Surabhi、
这里没有足够的信息来猜测您在代码中所做的事情、无论对还是错。
[引用 user="SURABHI Rakesh"]当我们启用 多个中断时,只有启用的最新中断有效,且它正在覆盖第一个中断。
这不清楚。 当您启用中断时、如何覆盖另一个中断? 您是否意味着在启用第二个中断时会覆盖第一个 ISR?
还是意味着第一个中断不再启用? 如果是这种情况、那么您使用的命令可能会向使能寄存器写入完整值、而不是执行读-修改-写操作。
中断路径中有许多寄存器、因此请具体说明您使用的寄存器和命令。
[引用 USER="SURABHI Rakesh"]但当我看到我的事件集寄存器(相应的事件已设置)时,即使 INTMUX 寄存器也会显示与此 VectId 挂钩的事件。[/quot]
您正在讨论什么事件集寄存器?
我的回忆是、INTMUX 仅显示中断映射是什么。 不指示任何状态。
如果您要在此板上开发新项目、则必须从我们的工作示例之一开始、最好先在 EVM/DSK 上进行、这样您就可以了解硬件和软件问题之间的差异。 为什么要使用类似这样的旧器件启动新项目? 或者、这是一个旧板、在这种情况下、您应该有一些自己的内部工作示例。
C6455是一款功能非常强大的定点 DSP。 但它的内部功能非常复杂、包括中断。 因此、您必须从一个工作示例开始、然后仔细阅读文档以了解其工作原理。
此致、
RandyP
Rakesh、
[引用 user="vaishnavi gujjula]我们已经注意到了这一点
配置文件的位置
GPIO5_interrupt ();
GPIO3_INTERRUPT ();
DSP[/报价]仅接收 GPIO3中断
很明显、您的团队在编写代码和使用 DSP 方面的技能很好。 我们需要术语尽可能精确、以便交换导致您问题的技术细节。
"配置文件"通常是指扩展名为.cfg 或类似内容的文件、并且 O/S 在编译时使用该文件来配置程序的各个部分。 您是否在此应用中使用 DSP/BIOS、SYS/BIOS 或 TI-RTOS 等 O/S?
现在、我假设您所说的"配置文件"是 C 源文件中的一组 C 函数、例如 main.c、并且您正在使用此命令序列来配置中断(以及其他操作)。 如果是这种情况、函数 GPIO3_interrupt ()和 GPIO5_interrupt ()来自哪里? 我不会将这些识别为 TI CSL 命令。 如果这些是您编写的函数、那么根据您的观察结果、这些函数被错误写入似乎是合乎逻辑的。 您是否同意我的解释?
[引用 user="vaishnavi gujula"]根据 TI 提供的文档(spru871k)(第7.5.1.1节)、EFR 显示发生的事件。在我的应用程序中、EFR 显示两个事件都发生了[/引用]
在 SPRU871的副本中、第7.5.1.1节介绍了 EVTFLAGn 寄存器。 EFR 是异常标志寄存器、在其他地方进行了说明。 EFR 不应是中断配置的一部分。 EVTFLAGn 寄存器可用于查看是否发生了中断事件、但它们不会直接参与您尝试工作的中断路径。 EVTFLAGn 仅在使用事件组合器生成 EVT[3:0]时使用;您使用的是两个 GPIOn 中断到 DSP INT15-4的直接映射。
请找到一个 CSL 示例项目或将向您展示如何设置中断的源文件。 从一个工作示例开始、然后对其进行修改以实现所需的确切功能要容易得多、而不是编写自己的代码并尝试对其进行调试-尤其是远程调试。
此致、
RandyP
Rakesh、
[引用 user="vaishnavi gujjula"]您能否发送多个中断的 CSL 示例链接。
我的 CSL 安装自2006年、因此文件夹结构可能已更改为您安装的文件夹结构。 特别是、我的安装中的 INTC CSL 与其他 CSL 代码分开、甚至是单独的库。 但所有功能都可能相同。
您可以查看一些名为"example"的文件夹、以找到一个令人满意的文件夹。 我甚至有一些名为 intc_example.c N=1-6的文件。 但是、我找到适合我需要的任何文件的最佳方法和方法是使用一个良好的桌面搜索工具并搜索 CSL_intcInit。
尝试将两个 GPIO_interrupt()函数组合成一个函数并删除重复的代码。
一般而言、您不想调用 CSL_ 多次初始化。 对于某些模块、这不是问题、但对于其他模块、这是一项要求。 您可以搜索该模块的 Init 源代码以查看其功能、如果它不仅仅返回成功值、则不要多次调用它。
此致、
RandyP