Manufaktur industri
Industri Internet of Things | bahan industri | Pemeliharaan dan Perbaikan Peralatan | Pemrograman industri |
home  MfgRobots >> Manufaktur industri >  >> Industrial Internet of Things >> Tertanam

Desain Driver ADC: Teknik Polling Blocking vs Non-Blocking

Dalam artikel sebelumnya kami mengeksplorasi bagaimana antarmuka yang terstruktur dapat memisahkan detail driver tingkat rendah dari logika aplikasi, meningkatkan skalabilitas dan portabilitas di seluruh platform hardware.

Dalam entri ini kita menyelami implementasi driver ADC praktis, fokus pada pendekatan polling. Kami akan membandingkan desain blocking dan non-blocking dan menunjukkan bagaimana setiap yang mempengaruhi performa sistem.

Drivers Blocking vs Non-Blocking

Saat membuat driver mikrokontroler, seorang pengembang harus memutuskan apakah API akan memblokir eksekusi hingga operasi selesai. Driver blocking menghentikan alur program, memastikan kode berikutnya hanya berjalan setelah tugas selesai. Contoh klasik adalah printf yang didukung UART:

printf("Hello World!"); 

Dengan driver UART blocking, baris yang mengikuti panggilan ini tidak akan berjalan hingga string 12 byte (96 bit) telah sepenuhnya ditransmisikan. Tunda sebenarnya tergantung pada laju baud: pada 1 Mbps, blok berlangsung sekitar 96 µs; pada 9,6 kbps, tertahan hingga sekitar 10 ms.

Sebaliknya, driver non-blocking memulai transfer dan segera mengembalikan kontrol ke aplikasi. UART dapat terus memproses sementara data mengalir keluar, biasanya melalui interrupt, DMA, atau buffer transmisi. Pendekatan ini meningkatkan efisiensi dalam konteks sensitif latensi tetapi menambahkan kompleksitas ke driver dan aplikasi.

Memilih model yang tepat tergantung pada kebutuhan waktu aplikasi dan konfigurasi hardware. Untuk UART berkecepatan tinggi (misalnya, 1 Mbps), overhead desain non-blocking mungkin melebihi manfaatnya. Untuk tautan yang lebih lambat (misalnya, 9,6 kbps), driver non-blocking dapat membuka kenaikan performa yang signifikan dengan kompleksitas tambahan yang dapat dikelola.

Merancang Arsitektur Driver ADC

Driver ADC yang kuat biasanya terdiri dari tiga lapisan:

Driver tingkat rendah menyediakan Hardware Abstraction Layer (HAL) dengan API yang ringkas dan dapat digunakan kembali. Contoh dari proyek nyata meliputi:

API ini memungkinkan inisialisasi, kontrol konversi, dan polling status yang sederhana. Pengakses register memungkinkan pengembang untuk memperluas HAL untuk fitur kustom, seperti konversi satu saluran, tanpa membesarnya API publik.

Mengimplementasikan Driver ADC Blocking Sederhana

Driver blocking minimal mungkin mengekspos satu rutinitas Adc_Sample yang memulai hardware, menunggu selesai, dan menyalin hasil ke buffer yang disediakan pemanggil. Kode di bawah ini menunjukkan ide inti:

Desain Driver ADC: Teknik Polling Blocking vs Non-Blocking

Loop while memblokir hingga Adc_ConversionComplete mengembalikan true, setelahnya driver membaca register konversi dan menyimpan sampel.

Mengonversi ke Driver ADC Non-Blocking

Beralih ke model non-blocking memerlukan perubahan kecil pada API: pemanggil sekarang menerima flag status dan harus polling untuk selesai. Fungsi yang diperbarui mungkin terlihat seperti ini:

Desain Driver ADC: Teknik Polling Blocking vs Non-Blocking

Dalam aplikasi, urutan yang umum menjadi:

Adc_Sample(); while (!Adc_ConversionComplete()) { // Lakukan tugas lain } // Baca hasil 

Pendekatan ini membebaskan CPU untuk mengeksekusi kode yang tidak terkait sementara hardware ADC menyelesaikan konversinya.

Kesimpulan

Kedua driver ADC blocking dan non-blocking memiliki keuntungan yang berbeda:

Dalam posting berikutnya, kami akan memperluas diskusi ini dengan menunjukkan driver ADC berbasis interrupt yang lebih memisahkan akuisisi sensor dari logika aplikasi.

Tertanam

  1. Panduan Lengkap Jenis Sensor dan Sirkuit
  2. Bulgin Meluncurkan Sensor Fotoelektrik Slimline untuk Integrasi IIoT Hemat Biaya
  3. ams Memamerkan Showcase Sensor Optik Canggih di Sensors Expo 2019
  4. DATA MODUL Memperluas Rentang Sensor Sentuh dengan Sistem PCAP LG Innotek 40–86 Inci
  5. Contrinex 2020: Sensor Siap Cloud dan Light Curtain Bluetooth untuk Keselamatan
  6. Driver Terintegrasi Sederhanakan Desain Stepper Motor Daya Tinggi
  7. Membangun Efek Audio Berbasis Sensor dengan Kit Satellite CCRMA
  8. Mengukur Sensor Analog pada Raspberry Pi dengan Satu Pin GPIO
  9. Cara Menghubungkan, Mengkalibrasi, dan Memprogram Sensor Gerakan PIR HC-SR501 dengan Raspberry Pi
  10. Sensor IoT Merevolusi Pemantau Polusi Udara dan Kesehatan Masyarakat