« 充電式エボルタお手軽モデル BK-3LLB 充放電800サイクル目通過 | トップページ | 「ミノルタ」のフラッシュ、いりませんか? »

2021年5月 4日 (火)

Arduino周波数カウンタ:FreqCounter Libraryを使った時のカウント異常を再現

2021年5月1日:Arduino UNOで周波数カウンタ:アナデバの電力計用ICのために
にも記しましたが、Arduino Frequency Counter Library
にはちょっとまずい処理が含まれています。
2019年12月20日:Arduino UNOで周波数カウンタに記しました、
★1と★2の間:タイマー1を停止する直前にオーバーフローが入る
とカウントミスが発生するという問題です。

どうなるか再現してみました。
「Arduino Frequency Counter Library」をインクルードする
のではなく、「ino」ファイルの中に取り込んでごそごそしました。
結果、こんなカウント値が現れました。

発振器の周波数を65.536kHzの整数倍数付近で可変すると
このようなミスカウント値が出現しました。

1秒ゲートでオーバーフローが発生するかしないか

65.536kHz」付近の挙動です。

★印に異常値が発生しています。

Frq: 65876Hz
Frq: 65839Hz
Frq: 65673Hz OVF:1
Frq: 37Hz   ★
Frq: 130999Hz  ★
Frq: 65462Hz
 :
Frq: 65461Hz
Frq: 65463Hz
Frq: 65455Hz OVF:2
Frq: 41Hz  ★
Frq: 131161Hz  ★
Frq: 65625Hz
Frq: 65623Hz
 :
Frq: 65731Hz
Frq: 65685Hz
Frq: 65634Hz OVF:3
Frq: 13Hz  ★
Frq: 131061Hz  ★
Frq: 65519Hz
 :

さらに、65536×3の196.608kHz付近の挙動です。

Frq: 197276Hz
Frq: 197171Hz
Frq: 197119Hz
Frq: 196847Hz OVF:5
Frq: 131264Hz OVF:6 ★
Frq: 196747Hz OVF:7
Frq: 196746Hz OVF:8
Frq: 196740Hz OVF:9
Frq: 196741Hz OVF:10
Frq: 196742Hz OVF:11
Frq: 196745Hz OVF:12
Frq: 196751Hz
Frq: 262343Hz OVF:13 ★
Frq: 131270Hz OVF:14 ★
Frq: 196802Hz OVF:15
Frq: 196772Hz
Frq: 261776Hz  ★
Frq: 196131Hz
Frq: 196128Hz


こんなスケッチで試しました。 
  ・ダウンロード - test_freqcounter_1.txt

   (.inoファイルにリネームしてArduino IDEで読んでください)

※その後・・・
あれこれ調べてみましたら、
 ・https://www.arduino.cc/reference/en/libraries/freqcount/
 ・https://www.arduinolibraries.info/libraries/freq-count
では、ちゃんと処置されていました。
古いのが問題だったということで。
お騒がせしました。
  ※カウント中にシリアル通信など他の割り込みが入ると
   カウント値が狂うかもというのは変わらないようです。

|

« 充電式エボルタお手軽モデル BK-3LLB 充放電800サイクル目通過 | トップページ | 「ミノルタ」のフラッシュ、いりませんか? »

Arduino」カテゴリの記事

コメント

コメントを書く



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




« 充電式エボルタお手軽モデル BK-3LLB 充放電800サイクル目通過 | トップページ | 「ミノルタ」のフラッシュ、いりませんか? »