工業製造
産業用モノのインターネット | 工業材料 | 機器のメンテナンスと修理 | 産業プログラミング |
home  MfgRobots >> 工業製造 >  >> Industrial Internet of Things >> 埋め込み

ADCドライバ設計:ブロッキングvsノンブロッキングポーリング手法の比較

前回の記事では、適切に構造化されたインターフェースが、ローレベルドライバの詳細をアプリケーションロジックから分離し、ハードウェアプラットフォーム間での拡張性と移植性を高めることを探りました。

今回は実践的なADCドライバ実装に踏み込み、ポーリングアプローチに焦点を当てます。ブロッキング設計とノンブロッキング設計を対比し、それぞれがシステムパフォーマンスにどう影響するかを示します。

ブロッキングドライバとノンブロッキングドライバ

マイクロコントローラドライバを作成する際、開発者はAPIが操作完了まで実行をブロックするかどうかを決定しなければなりません。ブロッキングドライバはプログラムフローを停止し、タスク完了後にのみ後続コードが実行されることを保証します。典型的な例はUARTバックドのprintfです:

printf("Hello World!"); 

ブロッキングUARTドライバでは、この呼び出しの次の行は、12バイトの文字列(96ビット)が完全に送信されるまで実行されません。実際の遅延はボーレートに依存:1Mbpsなら約96µs、9.6kbpsなら約10msに伸びます。

対照的に、ノンブロッキングドライバは転送を開始して即座に制御をアプリケーションに戻します。UARTはデータがストリーミング出力される間、通常は割り込み、DMA、送信バッファを介して処理を継続できます。このアプローチはレイテンシに敏感な文脈で効率を向上させますが、ドライバとアプリケーションに複雑さを加えます。

適切なモデルの選択は、アプリケーションのタイミング要求とハードウェア構成に依存します。高速UART(例:1Mbps)では、ノンブロッキング設計のオーバーヘッドが利益を上回る可能性があります。低速リンク(例:9.6kbps)では、ノンブロッキングドライバが管理可能な複雑さ増大で大きな性能向上をもたらします。

ADCドライバのアーキテクチャ

堅牢なADCドライバは通常3層で構成されます:

ローレベルドライバは、簡潔で再利用可能なAPIを持つハードウェア抽象化層(HAL)を提供します。実プロジェクトからの例:

これらのAPIにより、初期化、変換制御、ステータスポーリングが容易になります。レジスタアクセスヘルパーは、シングルチャネル変換などのカスタム機能のために、公開APIを肥大化させずにHALを拡張することを可能にします。

シンプルなブロッキングADCドライバの実装

最小限のブロッキングドライバは、ハードウェアを開始し、完了を待ち、結果を呼び出し元提供バッファにコピーする単一のAdc_Sampleルーチンを公開するかもしれません。以下のコードが核心アイデアを示します:

ADCドライバ設計:ブロッキングvsノンブロッキングポーリング手法の比較

whileループはAdc_ConversionCompleteがtrueを返すまでブロックし、その後ドライバは変換レジスタを読み取りサンプルを格納します。

ノンブロッキングADCドライバへの転換

ノンブロッキングモデルへの切り替えには、APIの小さな変更が必要です:呼び出し元はステータスフラグを受け取り、完了をポーリングする必要があります。更新された関数は次のようになります:

ADCドライバ設計:ブロッキングvsノンブロッキングポーリング手法の比較

アプリケーションでの典型的なシーケンスは:

Adc_Sample(); while (!Adc_ConversionComplete()) { // 他のタスクを実行 } // 結果を読み取り 

このアプローチにより、ADCハードウェアが変換を完了する間、CPUが無関係なコードを実行できるようになります。

まとめ

ブロッキングとノンブロッキングの両ADCドライバには明確な利点があります:

次回は、センサー取得をアプリケーションロジックからさらに分離する割り込みベースのADCドライバを実演します。

埋め込み

  1. Satellite CCRMAキットでセンサー駆動オーディオエフェクトを構築
  2. Raspberry Piで単一GPIOピンを使ってアナログセンサーを測定
  3. HC-SR501 PIRモーションセンサーをRaspberry Piで接続・調整・プログラミングする方法
  4. コンベア:建設現場のトラックドライバー不足を解決するスマートな選択
  5. Bulgin、手頃なIIoT統合向けスリムライン光電センサーを発売
  6. ams、Sensors Expo 2019で最先端光学センサーテクノロジーを披露
  7. DATA MODUL、LG Innotek 40~86インチPCAPタッチシステムでタッチセンサラインアップを拡充
  8. Contrinex 2020:クラウド対応センサ & Bluetoothライトカーテンで安全性向上
  9. 統合ドライバーが高出力ステッピングモーター設計を簡素化
  10. センサー種類と回路図の包括的ガイド
  11. IoTセンサーが大気汚染モニタリングと公衆衛生に革命をもたらす