1

24ビット、8チャネルADCを搭載したPIC24ベースのシステムがあります(詳細については、Google MCP3914評価ボード...)。ボードで 8 チャネルすべてをサンプリングし、データを 512x8 バッファに保存し、バッファがいっぱいになったときに USB モジュールを使用してデータを PC に送信します (これは別の割り込みによって行われます)。

唯一の問題は、MCU がデータを送信している場合 (UART 送信割り込みが ADC 読み取り割り込みより優先度が高い)、ADC がデータをサンプリングしていないため、データが失われることです (サンプル レートは約 500 サンプル/秒です)。このデータ損失を防ぐ方法はありますか? 多分いくつかのマルチタスク?

4

3 に答える 3

2

割り込みを使用せずに、ビット TXIF をポーリングすることによって、情報を UART レジスタに送信するだけです。

while (PIR1.TXIF == 0);
TXREG = "the data you want to send";

同じことが ADC 変換にも当てはまります。割り込みを使用して変換を開始/停止していた場合は、必要なビット (ADON) をポーリングするだけで完了です。

TX ビットと AD ビットは、PIC によって異なる場合があります。

これにより、MCU が割り込みサービス ルーチンに入り、3 ~ 4 個のサンプルが失われるのを防ぎます。

于 2014-06-12T18:16:29.820 に答える
1

PIC24 では、割り込みに 8 つの優先順位のいずれかを割り当てることができます。「ファミリ リファレンス マニュアル」の対応するセクションを参照してください -> http://ww1.microchip.com/downloads/en/DeviceDoc/70000600d.pdf

于 2015-01-12T01:05:45.307 に答える