ぬののしらべの小ネタ2018
PSoC 4 の ILO を校正する
PSoC 4 (4100や4200など) で低消費電力を目指す場合、ディープスリープを使いたいところですが、ディープスリープ中に動かせる内蔵低速クロック(ILO)の確度はかなり低い(±60%)です。
だいたい決まった周期でセンサーを利用して計測したい場合などに、基板ごとに手動で校正するのは大変ですが、 cy_lfclk というコンポーネントに用意されているILOの校正(トリミング)用のAPIを使用することで、確度を改善することができます。
高級なPSoC4なら、ずばり CySysClkIloTrim というAPIがあり、±10% にトリミングできるみたいですが、PSoC 4100 や 4200 では、 CySysClkIloCompensate というAPIを使用して、所望の時間のILOのTick数を取得します。
継時安定性は1日くらいしか見ていませんが、1秒のTick数を取得した時は、私が手動でストップウォッチで測った感覚では、10%よりは良い確度で取得できているようです。
以下が実験してみたコードです。
このコードにたどり着くまでに、結構ハマりましたのでここに書いておきます。
参考ページ:
Unbelievably, Highlight command of this Wiki does not support C mode option, but support PHP mode option.
So, ignore <?php and ?>.