« ATtiny1614で(裸の)周波数カウンタ | トップページ | ATtiny1614につないだ32kHz水晶発振子、隣のピンの影響を受けるみたい »

2025年10月 4日 (土)

ATtiny1614で周波数カウンタ:キャプチャタイミング

2025年10月3日:ATtiny1614で(裸の)周波数カウンタ

この続き。
TCD0でクロックを数え、RTCの1秒タイミングで
キャプチャして周波数(1秒間のパルス数)を出しました。
この時、周波数が低くなるとキャプチャをミスる
ことが判明。
また、キャプチャ直後に自動で行われるカウンタの
ゼロクリアのタイミングもクロックで刻まれている
ようで、実際のカウント値より1小さい値になるこ
とが分かってきました。

その様子です。
まず100kHz。
Ca000_20251004113101

RTCの1秒信号でキャプチャ。
ch2はその応答でキャプチャ割り込みのパルスです。
1秒信号から3クロック遅れて反応しています。

次が10Hz。
Ca001
同じように3クロック遅れています。
そして、計測値が「9」に。
実際のクロック数より1つ小さいのです。

そして2Hz。
Ca002_20251004113101
1秒間に2パルスですので、キャプチャ処理に
必要な3クロックには足りません。
それで1秒目のキャプチャ処理が抜けてしまい、
2秒目のタイミングに反応しています。
そして計測周波数出力は「0と3が交互に」
出てきます。

クロックの1つ抜けは、カウント値を+1して
対処できます。
周波数が低いときのキャプチャミスはしかた
ありません。
クロック無しの「0Hz」の判定を「1.5秒」に
しているので、「0Hzが間に出たらおかしいで」
という対処になるでしょう。


※追記
TCD0のキャプチャタイミングとオーバーフロー。
Cc51
同時ならオーバーフローが優先される。
TCD0は12bitなので、4096クロックの倍数で発生。
キャプチャの有無をチェックしないと、4096カウント
なのに8192となってしまう。

※注意
2025年10月6日:ATtiny1614につないだ32kHz水晶発振子、隣のピンの影響を受けるみたい

|

« ATtiny1614で(裸の)周波数カウンタ | トップページ | ATtiny1614につないだ32kHz水晶発振子、隣のピンの影響を受けるみたい »

ATtiny」カテゴリの記事

コメント

コメントを書く



(ウェブ上には掲載しません)




« ATtiny1614で(裸の)周波数カウンタ | トップページ | ATtiny1614につないだ32kHz水晶発振子、隣のピンの影響を受けるみたい »