« ラズピコだと1/65535が出現 | トップページ | I2C液晶のアクセス、割り込み処理で遅れる原因らしきもの »

2024年4月 3日 (水)

超低速2相パルス発生回路・ケース入れ

2024年3月25日:超低速2相パルス発生回路 の続き。
こんな回路に落ち着きました。
Cw_ccw1b
・電池3本運用。
・秋月の昇圧DC-DCモジュール
   AE-XCL102D503CR-G で5Vを発生。
   ただし、ちょい改造(EN端子のプルアップを外す)
・電源スイッチと操作スイッチを共用。1つだけ。
   長押しで電源のon/off操作。
   短押しでCW/CCW/stop選択。
   このためにあれこれややこしい回路に。(黄色部)
・最低周波数が0.1Hz。
 最高周波数を(無理やり)9990.0Hzに。
・周波数によって設定できる最小桁が変化。
 150Hzまでは0.1Hz。2800Hzまでが1Hz。それ以上が10Hz。
・1.5kHz程度までは、設定値から0.01%内の誤差。
 10Hzステップになる2.8kHzあたりだと0.016%。
 5kHzあたりまで上がると0.03%。
 最高周波数に近づくと分周比が小さくなり誤差が目立ちます。
 0.06%ほどの誤差が生じることがあります。
・例えば9810Hzの設定なら分周比が815で
 出てくる周波数が9815.95Hzとなって+0.061%の差。
 また、9970Hzも9980Hzも同じ分周比802になり
 出てくるのはどちらも9975.06Hz。
 でも、8000Hzの設定は誤差ゼロで出てきます。

バックアップがわりのスケッチ。
  ・ダウンロード - cw_ccw2k1b.txt
    ※inoではなくtxtにしてます。

箱はダイソーで買ったプラケース。
  (電池保管用のものだったか・・・)
Cc11_20240404142901

Cc12_20240404142901

LowBat警報表示
Cc14_20240404142901
Cc15
電池電圧が3Vを切ると、空電池マークと半分電池
マークを交互に点滅表示します。
  重要アラームは点滅させて欲しい
   なんて記事も書いてますし。

内部処理でキツいのが周波数を上げたとき。
最高が9990Hzですので、その2倍の周波数
(トグルさせるので2倍に)でタイマー1の
コンペエマッチ割り込みが発生します。
周期が50μ秒ほどとなって、16MHzのATmega328P
にはなかなかキツい。
この割り込みの他に、システムタイマーであるタイマー0の
オーバーフロー割り込みを止めて、別の周期、
3.90625kHz=0.256msのタイマー割り込みを
使っています。
これの主目的はロータリーエンコーダのチャタリング除去。

2つの割り込み処理のタイミングを見てみます。
   オシロの無限残光モードがありがたい
Cs000

Cs001

B相出力が変化する前にタイマー1のコンペエマッチ
割り込みを終えなければ、2つのパルスを正しい
タイミングで出力できません。

タイマー割り込みの処理時間がけっこう長いので、
これが問題。
シリアル出力すると、この割り込み処理による
遅延も入ってきます。
  ※I2C液晶制御でも割り込み絡むのか?
最高周波数になると、タイミングはなかなか
キビシイです。

ロータリーエンコーダの読み取りタイミング。
Cs003
I2C液晶での文字表示(xxxx.xHzの8文字)に
いがいと時間がかかります。

|

« ラズピコだと1/65535が出現 | トップページ | I2C液晶のアクセス、割り込み処理で遅れる原因らしきもの »

電子回路工作」カテゴリの記事

ツール」カテゴリの記事

Arduino」カテゴリの記事

割り込み処理」カテゴリの記事

コメント

おっと・・・
I2Cも割り込みを使こうとるゾ。
最高周波数9990Hzでの運用は、ほんとに微妙なところみたい。
オシロで見る限り、スカタンは生じてないようだけど、タイミングはギリギリ。
LowBat警報の表示、タイマー割り込みでタイムアップを検出。
その表示(I2C液晶だ)処理と「うまいこと」重なると、いちばん大事なOC1A割り込みの処理が遅れる。
けど、現状、なんとか間に合っているようでっす。

タイマー0割り込み(システム用)を殺した(オーバーフローさせない)状態でI2Cの液晶を使ったけど、どうなっているのか・・・
経過時間読み出しのmicrosはまともに動いていないはず・・・
I2Cに異常が起きたら・・・知らん
 まぁ・・・エエか。

投稿: 居酒屋ガレージ店主(JH3DBO) | 2024年4月 5日 (金) 19時43分

テストプログラムを書いてI2Cアクセスでの遅れを観察してみたら・・・
15μsほど遅れるタイミング(割り込みを受け付けてもらえない区間)が出現。
CW/CCW波発生の観察波形と合ってます。
微妙なタイミングが必要な処理で、I2Cアクセスの液晶を使うと、トラブルの要因になるかも。

投稿: 居酒屋ガレージ店主(JH3DBO) | 2024年4月 6日 (土) 11時31分

コメントを書く



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




« ラズピコだと1/65535が出現 | トップページ | I2C液晶のアクセス、割り込み処理で遅れる原因らしきもの »