Saya adalah anggota sarjana dari tim peneliti yang mengerjakan proyek yang melibatkan ASIC pemancar RF, dan penerima nirkabelnya yang pada akhirnya harus mengirim data ke PC.
Receiver mengeluarkan sinyal serial non-standar yang cepat , kontinu, asinkron, dan tidak standar (mis. Bukan SPI, I2C, UART, dll.) Sehingga tugas saya adalah menulis perangkat lunak mikrokontroler untuk menghubungkan penerima ke komputer. Saat ini pendekatan saya adalah menggunakan interupsi terpicu tepi untuk menempatkan data dalam buffer melingkar dan melakukan seluruh proses decoding bit-by-bit dalam loop utama. Mikrokontroler harus secara bersamaan menampilkan data ini menggunakan USB (virtual com port) ke komputer.
Ini adalah masalah yang saya alami, dan satu yang saya antisipasi:
Saya tidak dapat memproses data yang disangga cukup cepat bahkan dengan prosesor ARM Cortex M3 72 MHz saya yang cukup kuat. Bitrate adalah 400 Kbps (2,5 us / bit). Untuk referensi yang hanya menyisakan 180 siklus per bit (termasuk decoding DAN ISR, yang memiliki ~ 30 siklus overhead aduh!). MCU juga harus menangani banyak tugas lain yang akan dipilihnya dalam loop utama.
Driver port virtual USB virtual juga berbasis interupsi. Ini membuat saya hampir yakin bahwa driver pada akhirnya akan memiliki prosesor terganggu begitu lama sehingga melewatkan jendela 2,5 mikrodetik (180 siklus) di mana sedikit dapat ditransmisikan. Saya tidak yakin bagaimana interupsi konflik / ras seperti ini biasanya diselesaikan.
Jadi pertanyaannya adalah sederhana, apa yang mungkin dilakukan seseorang untuk menyelesaikan masalah ini atau apakah ini bukan pendekatan yang benar? Saya bersedia mempertimbangkan lebih sedikit pendekatan yang berfokus pada perangkat lunak. Misalnya, menggunakan chip USB khusus dengan semacam mesin keadaan perangkat keras untuk decoding, tetapi ini adalah wilayah yang tidak dikenal.