ATtiny1614で周波数カウンタ:キャプチャタイミング
2025年10月3日:ATtiny1614で(裸の)周波数カウンタ
この続き。
TCD0でクロックを数え、RTCの1秒タイミングで
キャプチャして周波数(1秒間のパルス数)を出しました。
この時、周波数が低くなるとキャプチャをミスる
ことが判明。
また、キャプチャ直後に自動で行われるカウンタの
ゼロクリアのタイミングもクロックで刻まれている
ようで、実際のカウント値より1小さい値になるこ
とが分かってきました。
RTCの1秒信号でキャプチャ。
ch2はその応答でキャプチャ割り込みのパルスです。
1秒信号から3クロック遅れて反応しています。
次が10Hz。
同じように3クロック遅れています。
そして、計測値が「9」に。
実際のクロック数より1つ小さいのです。
そして2Hz。
1秒間に2パルスですので、キャプチャ処理に
必要な3クロックには足りません。
それで1秒目のキャプチャ処理が抜けてしまい、
2秒目のタイミングに反応しています。
そして計測周波数出力は「0と3が交互に」
出てきます。
クロックの1つ抜けは、カウント値を+1して
対処できます。
周波数が低いときのキャプチャミスはしかた
ありません。
クロック無しの「0Hz」の判定を「1.5秒」に
しているので、「0Hzが間に出たらおかしいで」
という対処になるでしょう。
※追記
TCD0のキャプチャタイミングとオーバーフロー。
同時ならオーバーフローが優先される。
TCD0は12bitなので、4096クロックの倍数で発生。
キャプチャの有無をチェックしないと、4096カウント
なのに8192となってしまう。
※注意
・2025年10月6日:ATtiny1614につないだ32kHz水晶発振子、隣のピンの影響を受けるみたい
| 固定リンク
「ATtiny」カテゴリの記事
- 1Hzパルス発生回路改造(2026.03.12)
- 14ピンのATtiny3224のEVOUTB出力(2026.03.07)
- tinyAVRマイコンのタイマーAとtakeOverTCA0()(2026.02.22)
- ATtiny3224で裸の32bit周波数カウンタ #3(2026.02.20)
- 備忘録:1Hzパルス発生回路(2026.02.01)



コメント