ブレーキペダルをロードセルにしたい4
ロードセルというかHX711読み出しの改良
HX711は電源入れるとすぐ

約11.5msごとのナゾパルスが出ていると(約86Hz)。
で、このパルスを避けるため、パルスの立ち上がり時に割り込みをしかけ、パルスをやりすごしたあと(100μsec後)読み出しを始める。というのが以下の結果

読み出したあと、HX711の信号線がLOWにならないと次の読み込みが出来ないのですが、次のナゾパルスの立ち上がりは、信号がLOWになったあと、11ms後くらいになるので、結局読み出しは約23msごとにしか出来ず、約43Hzくらいでしか読み出し出来ていないのです。
ただコレよく見ると、ナゾパルスの出てるタイミングで信号LOWになってね?という気も。
つまりナゾパルスはHX711が読み出し可能になったタイミングで発生してるのでは?だとしたらナゾパルスと呼ばずにリセット信号またはレディ信号と呼んであげた方がいいかもね。
で、リセット信号がLOWになったタイミング(FALLING)を割り込みで引っかけて
attachInterrupt(割り込み番号, pin, FALLING);
みたところ、

なんとリセット信号のたびに読み出し出来るようになりましたとさ(^^;
USBロジアナで比較してみたのがコレ。上半分が以前ので、下がリセット信号のたび読むようにした結果。

これで晴れて80Hz以上で読み込み出来るようになりました。
さて次の問題?は、体感としては全然問題ないけど、画面表示がちょっと処理としては重いんだろうと思うけど、どんな感じ?USBロジアナでキャプチャしてみると

今回重要なのはLoopとI2C CLC。Loopは、arduinoでのメインループが1週するごとに、ON/OFFが切り替わるようにしてあって、つまりそのタイミングでアナログ信号を読み取ってジョイスティック値を更新してます。で、メインループが14周するごとに画面表示を更新するようにしてるので、LoopのON/OFFが14回(凸が7個)ごとに画面更新のI2C CLC信号が発生してるという感じなのですが、その間はアナログ値の読み出し出来てないので、ジョイスティック値もその間更新出来てないわけで。
とはいえ止まってるのは12msくらいなもんなので、現状でも60Hz以上でジョイスティック値の更新は出来てることにはなるのであんま問題にはならないし所詮ペダルのアナログ入力なのでそこまでタイミングシビアに考える必要もないのですが気分的になんかね(^^;
画面表示は現在、大きく分けて5つの部分で構成されていて、左上と左下は更新が無い場合は書き換えせず。

中央と右上右下部分は常時更新、というようにして負荷を下げてるつもりですがそれでも右半分更新で12msくらいかかってるので、あとはもう分割して順次更新するしかないなと。
で、更新ルーチンが呼ばれるたび、右上、右下を交互に書き換えるようにしてみた結果。上段が1更新で右半分更新、下段が1更新で右上または右下書き換え

I2C CLCの連続時間(画面更新時間)が、約12msから、約5~7msに減ってるので、まぁ分散は出来てるかな。まぁ正直ペダルフィールには全く反映しないと思うけど(^^;
コレでだいたいプログラム完成かなぁ。