閑人

アクセスカウンタ

zoom RSS タイトル ファンクションジェネレータ FG085 キー入力対策

<<   作成日時 : 2017/06/25 15:48   >>

なるほど(納得、参考になった、ヘー) ブログ気持玉 1 / トラックバック 0 / コメント 1

これで、最後です。FG085のキー入力の不具合を対策します。
FG085の、キー入力はチャタリング対策に問題があります。そこで、キースキャンのタイミングを見てみました。
画像

約210us周期で、6個のCOL信号を、30usのパルスで読んでいます。チャタリング防止のコンデンサは、挿入できません。そこで、禁断の逆アセンブラの登場です。申し訳ありませんが画像で示します。
逆アセンブラは、簡単に使えるので、「ReAVR」を愛用しています。(ただし、Atmel Studioとの相性は悪い)
画像

最新バージョン「113-08501-132.hex」の場合です
ここは、キー入力のCOLを出力して、ROWデータを取り込む部分です。「call L0836」がdelayで、r25:r24の値で時間が決まるようです。現在値は、"0x0014"で約30usです。これを、約1msにする為に、適当に増やします。私の場合は、0x029B(667)にしました。ハンドアセンブルで、
ldi r24,k9B
idi r25,k02
を、8B E9 92 E0 として、元のコード 84 E1 90 E0 と入れ替えます。私は、TOOLとして、xeditを使わせて頂きました。
変更するROMアドレスの先頭は、address=0x0bd6でした。
書き込みは、AVR ISP Mk2です。

注意:本件に関しての質問は、お受けしません。あしからず。

とりあえず、動いているようです。

結果をまとめると

1. SIN波の歪は、R-2Rのラダー抵抗を変更する事で、2次歪が無くなった。
2. キーボードのチャタリングは、今のところ、解消した。
3. DDSの出力タイミングが、バラツクので、高調波のノイズが大きいのは、変わらない!
4. Power ボタンの動作が時々おかしい、今の所、様子見だ。AVRのリセットに、まだ問題がありそう。

1kHzの波形をFFTで見ると
画像

基本波と、奇数倍の高調波の他に、多数の高調波ノイズが見えています。
これは、DDSのコントローラ側のアルゴリズムによるジッタが原因です。タイマー割り込みで、DDSのレベルを更新しているのですが、実際に、出力されるのは、割り込みの外側で動作しているループプログラムなので、ループ処理のどこで割り込みが発生するかによって、出力タイミングがずれるのです。これは、DDSコントローラのソフトウェアを全面的に修正する必要があります。
このノイズが無ければ、歪率は、0.4%以下に収まってしまいます。
ちょっと残念です。

テーマ

関連テーマ 一覧


月別リンク

ブログ気持玉

クリックして気持ちを伝えよう!
ログインしてクリックすれば、自分のブログへのリンクが付きます。
→ログインへ
気持玉数 : 1
なるほど(納得、参考になった、ヘー)

トラックバック(0件)

タイトル (本文) ブログ名/日時

トラックバック用URL help


自分のブログにトラックバック記事作成(会員用) help

タイトル
本 文

コメント(1件)

内 容 ニックネーム/日時
気持玉を頂きましてありがとうございます。
プログラム自体のアルゴリズムは、チャタリング防止を意識していましたが、タイマーの設定に考慮が不足していたのか、デバッグの見逃しでしょうか。
荒さがしは、結構楽しめました。
TOSHI
2017/07/04 19:28

コメントする help

ニックネーム
本 文
タイトル ファンクションジェネレータ FG085 キー入力対策 閑人/BIGLOBEウェブリブログ
文字サイズ:       閉じる