引き続き MKR + IDE を実装しようかと思いましたが、一旦寝かせて SPI 2系統の M5Stack Tough に戻りました。
こちらは SPI 2系統を ESP32 の 2コアで扱えます。これを意図して購入した訳ではなかったので、とても lucky。実装の仕方によっては、センサーとの通信を邪魔せずにSDカードへの書き込みが可能となります。
そこで登場するのが ESP-IDF FreeRTOS。
https://docs.espressif.com/projects/esp-idf/en/latest/esp32/api-reference/system/freertos.html
https://shop.m5stack.com/products/m5stack-tough-esp32-iot-development-board-kit
- Fully compatible with with Arduino, ESP32-IDF, and other mainstream development platforms
- Executing Dual-core processor on FreeRTOS to run multiple tasks for better performance.
全く読まずに購入していました。2コアが必要になるとも思っていませんでしたし、コアを指定してマルチスレッドで実装するような知識もありませんでした。
調べてみると、意外と簡単。と思ったのですが、そこそこ時間がかかりました。
流れは、以下の通り。
- センサーとの通信タスク、SDカードとの通信タスクを別に作る。
- それぞれにコアを割り当てる。
- タスク間のデータの受け渡し用に Queue を作成。
- センサー値を Queueに投入し、SDカード側のタスクで取り出す。
- 取り出した値をSDカード側で書き込み。
設定に多々ハマりましたが、それはまた後日。60秒に一度書き込みを行う設定にしたので、 他の演算やLCDへの表示もできそうです。
まだおかしな表示になる部分や、時刻の欠損を取り切れていないのですが、最低限、電源を与えると 100Hz でデータをとり続け、MicroSD に保存するプログラムができました。明日から外でテストしてみましょう。
****************************
20231230 試作品をGitHubに公開
https://github.com/T40O0/ADXL355_SPI_M5_SD_FIR.git
0 件のコメント:
コメントを投稿