数据发送/接收状态LED功能



很多硬件都配有Tx/Rx状态LED,但如果您的硬件没有,并且您想查看数据是否在传输,该怎么办?如果你只是将LED设置为线路的值,它可能在你看到它之前就亮起和熄灭(<1/100秒(。

我的问题是,如何编写中断驱动函数来驱动LED状态?我在网上搜索了一下,什么也没找到,我可以用一个带模数的计数器,但这似乎很笨重。还有其他想法吗?

PS-我想在Arduino或Mbed中使用这个,但我怀疑它是否会对哪个问题产生影响。。。

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时自行禁用。

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

这样,指示器在最后tx/rx活动后200ms熄灭。如果活动持续,指示灯将保持点亮。

如果tx/rx突发是间歇性的,间隔大于200ms,则指示灯将闪烁。因此,关闭、打开和闪烁的状态提供了数据活动的广泛指示。

最新更新