【问题标题】:facing trouble while working with MSp430 timer and interrupts在使用 MSp430 定时器和中断时遇到问题
【发布时间】:2015-01-20 14:26:37
【问题描述】:

我正在尝试使用 msp430g2553 制作一个项目。我面临的问题是我在编码时。我要做的是:

  1. 我在 msp 的一个引脚上启用了输入。定时器在输入的上升沿启动。
  2. 它计数到存储在 TACCRO 中的某个值。
  3. 这将永远持续下去。

现在我要做的是:

  1. 当达到 TACCRO 中的值时,将变量 c 增加 1。
  2. 还可以对存储在 TAR 寄存器中的计数器的值进行一些计算。

问题 我无法弄清楚我应该在哪里用 TAR 中的值编写计算代码,我应该只在 ISR 中编写它还是应该在主代码中编写它。 有人可以指导我吗?

P.S 我是第一次在这里写一个问题,所以如果需要更清楚,请告诉我。

【问题讨论】:

  • 什么时候你应该阅读 TAR?
  • 一旦输入的上升沿到来,在停止计时器后,我正在阅读它。

标签: timer embedded interrupt msp430


【解决方案1】:

这取决于您最终想要实现的目标,但根据您提供的信息,我想最简单、最简单的方法是将 ISR 用于适当的计数器并在那里编写代码。

请记住,ISR 应该简短而快速,以便处理器可以继续执行其他任务。如果您的计算很复杂或过程繁重,我建议将值存储在全局变量中,设置一个全局标志,并通过一个检查并重置该标志的循环让复杂的计算在主代码中完成。

希望这会有所帮助。

【讨论】:

  • 你能告诉我一件事吗(@asier)。如果我喜欢编写两个不同的 ISR,那么我将如何在代码中指示哪个 ISR 对应于哪个中断?
  • @AbhishekTyagi 这取决于编译器,是一个不同的问题。
  • @AbhishekTyagi 作为@CL。说,这取决于编译器。例如,在 IAR 中,它意味着使用 PRAGMA 指令来定义要运行的函数以获得精确的中断向量。顺便说一句,我猜你的意思是两个 ISR 用于 不同,否则:一个中断只能有一个 ISR。 (如果您喜欢这个答案,请标记为已回答或点赞,以便其他人也能发现它有用)
  • 我的意思是两个不同的中断,我正在使用 CCS v5.5.0
  • @AbhishekTyagi 很抱歉,我不熟悉 CCS,我使用 IAR,但是在文档中寻找合适的关键字应该不难找到:中断处理例程,是的,...
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2014-11-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多