【问题标题】:UART data is lost when working with external intterupts使用外部中断时 UART 数据丢失
【发布时间】:2014-06-17 20:18:59
【问题描述】:

我在 ARM7 lpc2378 中使用了两个中断:

  1. UART1 从某个外部模块接收数据
  2. ADC 读取的外部中断

在执行外部中断 ISR 期间,由于中断被禁用,来自 UART1 的数据会丢失。

在执行其他 ISR 时,我应该如何收集或保存 UART1 数据?

应该采取什么措施来确保来自UART1的数据不丢失?

【问题讨论】:

  • 在 ISR 开始时启用中断听起来像是一个简单的解决方案(尽管它通常在中断向量本身中应用,就在调用 ISR 之前)。
  • 你的uart有fifo吗?是否启用?您是否在 isr 中花费最少的时间?为什么 uart isr 被禁用了?

标签: interrupt-handling arm7


【解决方案1】:

我不知道这个特定微控制器的详细信息,但通常您应该尽可能少地在 ISR 上花费时间:不要在那里进行任何昂贵的处理。例如,在您的 ISR 中,读取重要信息,将它们写入一些变量,然后离开 ISR。在您的应用程序的主循环中,对变量更改做出反应(有几种方法可以实现这一点,因此我以非常通用的方式进行描述)。

【讨论】:

  • 由于两个中断事件都是异步的,并且UART1中的数据丢失并不频繁,但是在任何情况下保存UART1数据而不丢失是一项重要任务。在我的项目中,外部中断 ISR 最多需要大约 7.5 毫秒,在此期间,有时 UART1 接收到的数据会丢失。现在,即使我减少了外部中断 ISR 处理时间,但也有可能丢失 UART1 数据,我不想错过它。必须有某种方法或技术来处理此类情况。
猜你喜欢
  • 2014-09-28
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-12-19
相关资源
最近更新 更多