我的情况与相关问题完全相同、但我想问是否有替代方法来使用计时器来持续中断 CPU (因为我们通常不会收到数据包):
是否可以通过软件"触发" FIFO 中断、以便主电机回路(以3、333Hz 的频率运行)可以检查 FIFO 计数、如果它不为零、则无论如何设置一个位来触发它?
(我们不希望为了避免资源访问冲突而直接读取它)
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.
我的情况与相关问题完全相同、但我想问是否有替代方法来使用计时器来持续中断 CPU (因为我们通常不会收到数据包):
是否可以通过软件"触发" FIFO 中断、以便主电机回路(以3、333Hz 的频率运行)可以检查 FIFO 计数、如果它不为零、则无论如何设置一个位来触发它?
(我们不希望为了避免资源访问冲突而直接读取它)
您好、Michael、
感谢您的提问!
[引用 userid="196413" URL"~/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/1180368/tms320f280023c-for-sci-fifo-interrupts-is-there-an-alternate-way-to-the-very-nearly-identical-question-about-sci-and-fifo "] 是否可以通过软件"触发"FIFO 中断从理论上讲、如果您想简单地强制 ISR 在需要时发生、可以直接通过从代码中的任何其他位置调用它来运行 ISR 函数。 棘手的部分是括号中的后续内容:
[引用 userid="196413" URL"~/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/1180368/tms320f280023c-for-sci-fifo-interrupts-is-there-an-alternate-way-to-the-very-nearly-identical-question-about-sci-and-fifo "](我们不想为了避免资源访问冲突而直接阅读它)您将需要器件上的某些器件来从 SCI 移位寄存器/FIFO 中读取数据。 DMA 不能访问 SCI、因此这不是一个选项。 但是、如果我们可以通过某种方式让 CLB 读取 SCIFO 状态的状态、那么我们可以、因为我们可以从 CLB 生成中断。
我联系了 CLB 专家、了解是否可以访问 SCIFO 状态、然后根据该状态触发中断/函数。 请在下周周三之前回复。
此致、
Vince
您好、Michael、
遗憾的是、CLB 和 SCI FIFO 之间没有允许这样做的连接。
此致、
Omer Amir
感谢您的观看。
另一个想法/想法/问题:是否可以通过使用以下命令通过动态更改 FIFO 中断级别(TXFFIL)来实现此目的:
SCI_setFIFOInterruptLevel (SAM_SCI_base、SCI_FIFO_TX1、SCI_FIFO_RX1);
例如、在主循环中、它可以设置为 RX1、然后在 ISR 中、它可以设置为例如 RX9。
动态更改 TXFFIL 值是否会干扰正常运行? 可以在 ISR 中完成吗?
谢谢。
-Mike
尊敬的 Mike:
因此、从理论上讲、动态更改 FIFO 级别没有任何不正确的地方。 唯一的问题是、根据您提到的情况、一旦它进入 ISR、它将停留在 RX9、直到下一次出现主循环代码。 如果可以的话、那么改变 TXFFIL 应该不是问题。
我将在此警告您:如果您在将数据添加到缓冲区时更改 TXFFIL 值、您可能会在比预期更早(或更高)的时间触发、因为您在缓冲区准备就绪时进行了更改。
此致、
Vince