何でも実習生の実習日誌

電子工作、模型スチームエンジン工作など、何でも工作が大好きです。
手持ちの工作機械は卓上ボール盤だけ、全て手作りです。

カウンタープログラムに誤りがありました

2020-08-14 18:39:27 | 電子工作
2020/08/13(木曜日) 晴れ

マイコン(ESP-32)にプログラムで計数するカウンタを作り、
その出力を抵抗ラダー回路(R-2Rというらしい)加えて鋸歯状波を
取り出す実験をしているのだがどうもうまくいかない。
R-2Rには約9Vの電圧を加えて、ピークが9V近い鋸歯状波が得ら
れるはずなのだが約半分ぐらいの電圧しか得られない。
それに鋸歯状波のスロープには針状のノイズが沢山出ている。



波形をコピーしてみた。
8bitの出力は針のような尖った波形でおかしい。


R-2Rに加える8bitのバイナリカウンタ出力はマイコン(ESP-32)で
プログラム処理で作り出している。
プログラム内に2バイトのカウンタ用変数を用意してプログラムによって1つずつ
カウントアップしていき、256をカウントしたら(0~255まで)また0に戻って
カウントを繰り返すというものだ。
以前、12bitのカウンタを作ったときのプログラムを流用した。
だけどちょっと気になることがある。
カウンタ用変数がカウントした値の各ビット情報はビット読み出し(関数)で
取り出してくる。
このとき最下位ビットを‟bit1(1bit目)”とし、最上位ビットを‟bit8
(8bit目)としてプログラムを組んである。
もしかすると最下位ビットは‟bit0”、最上位ビットは‟bit7”かもしれない。
その辺を確認してプログラムを修正してみた。

おーっ、鋸歯状波の出力が大きくなった。
最上位ビットの出力も正常に見える。
なんてーこった・・・・・・
バイトデータのビットは1ビット目、2ビット目・・・・ではなくて0ビット目、1ビット目
・・・・・と指定するんだ! (当たり前かもしれないけど知らなかったです。)

修正後はこんな感じです。
(実際にはプログラム修正だけです。 配線は元のままです。)


鋸歯状波の出力が大きくなった。


バイナリカウンタの各ビットの出力も正常になった。


スロープに発生するスパイクはカウンタ変数内のビット状態を読み出すのに
ごくわずかだが時間がかかるのだろう。
その間、出力端子がHIGHになるものがあるのだろう。
その結果鋸歯状波も鋭く立ち上がってスパイク状になるのかもしれない。
まぁ、前回作った全ハード構成のカウンタによる鋸歯状波作成回路でも
同じような現象が見られたのだから仕方がないか・・・・・・
出力に並列にコンデンサを抱かせて吸収してみるかな。





コメント (2)
  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする