【问题标题】:Data Tx/Rx status LED function数据 Tx/Rx 状态 LED 功能
【发布时间】:2013-02-11 05:09:42
【问题描述】:

很多硬件都带有 Tx/Rx 状态 LED,但如果您的硬件没有,而您想查看数据是否正在传输,该怎么办?如果您只是将 LED 设置为线条的值,它可能会在您看到它之前就亮起和熄灭(

我的问题是,如何编写中断驱动函数来驱动 LED 状态?我在互联网上搜索并没有发现任何东西,我可以使用带模数的计数器,但这似乎很笨重。还有其他想法吗?

PS - 我想在 Arduino 或 Mbed 中使用它,但我怀疑它会影响哪个问题......

【问题讨论】:

  • 所以你的基本问题是你想为 LED 设置一个最小开启时间。您是否还想确保它在一段时间内保持关闭以产生“运动”感,或者您是否希望 LED 保持持续亮起,只要在最短开启时间之前传输另一个字符已到期?附带说明一下,现在认为最短接通时间是一种很好的安全做法,因为几年前实际上有研究通过记录开关面板上的灯来嗅探网络流量。
  • 哇,我不知道,但“理想”的情况是当流量发生时 LED = !LED 每 0.1 秒左右
  • 实际上,为了确保它是一个实际的 ON/OFF 信号,也许我想让它做些别的事情。老实说,我不知道什么是最好的……您似乎知识渊博,您有什么建议?
  • @SamSkuce:你有提到流量嗅探的参考吗?听起来很有趣!
  • @MartinThompson,it.slashdot.org/story/02/03/06/1221224/led-lights-friend-or-foe 是 2002 年的 Slashdot 故事(我很惊讶我记得很久以前的事情),applied-math.org/optical_tempest.pdf 是报纸。

标签: arduino embedded led transmission


【解决方案1】:

一个简单的方法是在 Tx/Rx 中断中打开 LED 并启动一个 200 毫秒的计时器(足够长以感知)。然后在定时器 ISR 中关闭 LED。

这样,指示器在最后一次 tx/rx 活动后 200 毫秒熄灭。如果活动持续,指示灯将保持亮起。

如果 tx/rx 脉冲是间歇性的,间隔大于 200 毫秒,则指示灯会闪烁。因此,关闭、开启和闪烁状态提供了数据活动的广泛指示。

【讨论】:

    【解决方案2】:
    void receive_or_transmit_interrupt()
    {
         g_traffic = true;
         /* other stuff. */
    }
    
    void timer_that_fires_every_100_milliseconds()
    {
         if ( led == ON)
         {
              led = OFF;
              g_traffic = false;
         }
         else if ( g_traffic )
         {
              led = ON;
         }
    }
    

    如果您不希望计时器在没有流量的情况下始终触发,您可以更改 receive_or_transmit_interrupt 以启用计时器,并且计时器可以在关闭 LED 时自行禁用。

    【讨论】:

    • 啊,好吧,所以这只会在有流量 (1->0, 0->1) 时每 0.1 秒切换一次,如果稳定 (1->1) 则不会切换。
    • 对。它还假设没有其他东西在使用该 LED,并且假设 LED 以“关闭”状态开始,尽管如果该假设错误,它会在第一个交通指示器之后自行修复。
    • 好吧,我很欣赏编码先机!我只是无法想象最终结果。
    • 这个接缝不完整,因为它没有解决如何实现上述中断。我可以看到使用 ISR(UART_RX_vect) 和 ISR(UART_TX_vect),除了它们只是双缓冲(小)。因此,它们只会在初始字节完成时快速跳闸一次。或者是它的 TX 的 UDRn 缓冲区已填充,准备好下一个并完全清空。在 UART_UDRE_vect 之后但在 UART_TX_vect 之前。对于 Rx,情况并非如此。还有中断();需要启用 ISR() 向量。
    • @mpflaga,OP 没有询问如何实现中断,他要求一种通用算法来实现交通 LED 的最短接通时间 - 将我的代码想象为从任何中断调用的函数他实现的处理程序。他还说这可能在 Mbed 或 Arduino 上,所以我会使用谁的中断语法和处理方式?
    猜你喜欢
    • 2012-11-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-10-02
    • 2012-06-05
    • 1970-01-01
    相关资源
    最近更新 更多