2

多くのハードウェアには Tx/Rx ステータス LED が付属していますが、ハードウェアに LED がなく、データが送信されているかどうかを確認したい場合はどうすればよいでしょうか? LED を線の値に設定しただけでは、表示される前に点灯したり消灯したりすることがあります (1/100 秒未満)。

私の質問は、LED の状態を駆動する割り込み駆動関数をどのように作成すればよいかということです。私はインターネットを検索しましたが、何も見つかりませんでした。モジュラスのあるカウンターを使用できましたが、それは扱いにくいようです。他のアイデアはありますか?

PS - これを Arduino か Mbed のどちらかで使用したいのですが、どちらかという質問に違いがあるとは思えません...

4

2 に答える 2

6
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 をオフにしたときにタイマー自体を無効にすることができます。

于 2013-02-25T23:30:39.260 に答える
1

簡単な方法は、Tx/Rx 割り込みで LED をオンにし、たとえば 200ms のタイマーを開始することです (十分に認識できる長さ)。次に、タイマー ISR で LED をオフにします。

そうすれば、インジケーターは最後のtx/rx アクティビティから 200 ミリ秒後に消えます。アクティビティが持続している場合、インジケータは点灯したままになります。

tx/rx バーストが 200 ミリ秒を超えるギャップで断続的である場合、インジケータは点滅します。したがって、オフ、オン、ちらつきの状態は、データ アクティビティの広範な指標を示します。

于 2013-02-26T11:13:19.970 に答える