HIDaspxをhidspxで使用するためのコマンド
「ChaN氏の電子オルゴール」をベースに、ATtiny85で電子オルゴールを奏でるためのやり方を詳細に解説されたニコニコ動画をバイブルとして、製作途上にある電子オルゴールの続き。
前回、回路を組み上げ、プログラムの修正も終わり、ATtiny85への書き込みも成功したのに、「音が出てこない」(微かに雑音らしき音は聞こえる)状態で終わりました。
実際、周辺知識の無い私には、ニコニコ動画の通りにやって動かなければ “お手上げ” 状態。
家に帰って早速試してみようと、いくつかある内の1つのATtiny85をHIDaspxにセットし、AVR Studio からプログラムを書き込んでみると・・・・・
何と、音が出たんです! 「こんなことを試して」みる前に音が出たんです。前回の音が出ない状態に何の手も加えていないのに、結果が変わりました。

手元にあるいくつかのATtiny85を、あっちのプログラムで焼いたり、こっちのプログラムで使ったりしているので、今回手に取ったATtiny85のヒューズビットが、たまたま “合致” したんでしょうね。
問題は、どうやったら同じ状態を作れるのかってこと。新品のATtiny85に書き込んでみたら、やっぱり前回と同じく、微かな雑音しか聞こえてきません。
そもそもヒューズビットの状態が見えないのが大問題。○○なら音が出るけど、××だと音が出ないという、この○○、××が分からないから手の出しようが無い。
手元にある HIDaspx や Arduino といったハードに、AVR Studio とか arduino IDE、mymelo2、hidspx 等のソフトを組み合わせて色々とやってみました。
その結果、「HIDaspx + mymelo2」で何らかの曲データを焼いた後に、改めて「HIDaspx + AVR Studio」で曲データを焼くと、雑音ではなく曲が流れ出すことが分かりました。
ただし、曲のテンポが速い。感覚的には1.5倍~2倍といった感じ。
うーむ、やっぱりヒューズビットの状態を見れないことにはどうしようもないなと。
コマンドラインで、ターゲットのAVRマイコンのFuse情報を確認(hidspx -rf)したり、Fuse Lowの設定(hidspx -fL<hex>)ができます(もちろんFuse Highの設定も)。
早速、ATtiny85のFuse情報を確認。先ずは、出荷時の状態。
*後日、この記述を見ながら自分でやろうとしたら、すっかりやり方を忘れていて一苦労。いやいや、すぐに忘れるもんですね(私がバカなだけ?)。なので追記しておきます。
コマンドプロンプトを起動し、
続けて、

Fuse Highの方は、いじるのが怖いので手をつけずにFuse Lowに注目して、mymelo2 で書き込み後のATtiny85のヒューズ設定を調べてみた(曲テンポがやけに速いやつ)。
続いて、どういう過程でこの状態になったのか分からないけど、テンポ的には妥当(元音楽より少し遅めだけど)なATtiny85を調べてみると。
なるほどー。3つのヒューズ設定を見比べてみると、先ず「7bit」の「クロック分周初期値」が「0」だと音が出ないってことが分かります。
曲のテンポは、「0bit」~「3bit」の「システムクロック選択」によって変わるらしいということも分かりました。ま、当然といえば当然。
この情報を頭の隅に置きながら、Arduino(互換機)からATtiny45へとスケッチを書き込んだ際のヒューズ設定を調べてみると、こんな記述を見つけました。
ATtiny85 (internal 8 MHz clock) attiny85-8.bootloader.low_fuses=0xe2
「0xe2」とは、2進数にすると「11100010」となります。ってことは、(まあまあ)適度なテンポで流れるヒューズ設定は、どうやらこの作業の時に書き込まれたようです。
更に、今回の製作でバイブルとしているニコ動のヒューズ設定部分を改めて詳細に見ていくと、Low Fuseに「0xF1」という設定をしているのを見つけました。
「0xF1」、すなわち「11110001」です。これは、先の曲テンポがやけに速いシューズ設定(11100001)と比べると、「4bit」の「起動時間」が違うだけ。
でも「起動時間」って、電源投入からプログラムが動作するまでの遅延時間の選択らしいので、ここを変えてもテンポには影響が出ないような気がするんだけど。
うーむ。これ以上、ヒューズ設定をあれこれいじるのは怖いので、取り敢えず「11100010」でFixとし、微妙なテンポの調整は、大元の曲のテンポを調整することにしましょう。
まだ微妙にモヤモヤしてはいるけど、ヒューズ設定を自分で書き込めるようになったのは間違いなく大きな前進だと思う。
前回、回路を組み上げ、プログラムの修正も終わり、ATtiny85への書き込みも成功したのに、「音が出てこない」(微かに雑音らしき音は聞こえる)状態で終わりました。
実際、周辺知識の無い私には、ニコニコ動画の通りにやって動かなければ “お手上げ” 状態。
天から降ってきたアイデアとは何の関係も無く音が流れ出した
どうすることも出来ずに1週間くらい手付かずにいたある日、ランニングをしながら何となく、「こんなことを試してみたらどうだろう?」ってのが天から降りてきました。家に帰って早速試してみようと、いくつかある内の1つのATtiny85をHIDaspxにセットし、AVR Studio からプログラムを書き込んでみると・・・・・
何と、音が出たんです! 「こんなことを試して」みる前に音が出たんです。前回の音が出ない状態に何の手も加えていないのに、結果が変わりました。

ヒューズ設定を再現できないことには
考えられるのは、やっぱりヒューズビットの違いかな。手元にあるいくつかのATtiny85を、あっちのプログラムで焼いたり、こっちのプログラムで使ったりしているので、今回手に取ったATtiny85のヒューズビットが、たまたま “合致” したんでしょうね。
問題は、どうやったら同じ状態を作れるのかってこと。新品のATtiny85に書き込んでみたら、やっぱり前回と同じく、微かな雑音しか聞こえてきません。
そもそもヒューズビットの状態が見えないのが大問題。○○なら音が出るけど、××だと音が出ないという、この○○、××が分からないから手の出しようが無い。
手元にある HIDaspx や Arduino といったハードに、AVR Studio とか arduino IDE、mymelo2、hidspx 等のソフトを組み合わせて色々とやってみました。
その結果、「HIDaspx + mymelo2」で何らかの曲データを焼いた後に、改めて「HIDaspx + AVR Studio」で曲データを焼くと、雑音ではなく曲が流れ出すことが分かりました。
ただし、曲のテンポが速い。感覚的には1.5倍~2倍といった感じ。
うーむ、やっぱりヒューズビットの状態を見れないことにはどうしようもないなと。
HIDaspxをhidspxで使用するためのコマンドを見つけた!
更に、あっちを調べ、こっちを調べと足掻いている内に、やっと見つけました。「HIDaspxをライタとして利用する」ということを解説している「千秋ゼミ」のページがありました。コマンドラインで、ターゲットのAVRマイコンのFuse情報を確認(hidspx -rf)したり、Fuse Lowの設定(hidspx -fL<hex>)ができます(もちろんFuse Highの設定も)。
早速、ATtiny85のFuse情報を確認。先ずは、出荷時の状態。
*後日、この記述を見ながら自分でやろうとしたら、すっかりやり方を忘れていて一苦労。いやいや、すぐに忘れるもんですね(私がバカなだけ?)。なので追記しておきます。
コマンドプロンプトを起動し、
[cd(チェンジディレクトリ)+半角スペース+hidspxのディレクトリ(置き場所)]でENTER
続けて、
[hidspx -rf] で、READ FUSE(フューズの確認)
[hidspx -ph -d4 -fL11100010]で、Fuse Low の設定(11100010は例えばの数値)
[hidspx -ph -d4 -fL11100010]で、Fuse Low の設定(11100010は例えばの数値)

Fuse Highの方は、いじるのが怖いので手をつけずにFuse Lowに注目して、mymelo2 で書き込み後のATtiny85のヒューズ設定を調べてみた(曲テンポがやけに速いやつ)。
続いて、どういう過程でこの状態になったのか分からないけど、テンポ的には妥当(元音楽より少し遅めだけど)なATtiny85を調べてみると。
なるほどー。3つのヒューズ設定を見比べてみると、先ず「7bit」の「クロック分周初期値」が「0」だと音が出ないってことが分かります。
曲のテンポは、「0bit」~「3bit」の「システムクロック選択」によって変わるらしいということも分かりました。ま、当然といえば当然。
取り敢えず「11100010」でFix
バカな私にも少しずつ見えてきました。この情報を頭の隅に置きながら、Arduino(互換機)からATtiny45へとスケッチを書き込んだ際のヒューズ設定を調べてみると、こんな記述を見つけました。
ATtiny85 (internal 8 MHz clock) attiny85-8.bootloader.low_fuses=0xe2
「0xe2」とは、2進数にすると「11100010」となります。ってことは、(まあまあ)適度なテンポで流れるヒューズ設定は、どうやらこの作業の時に書き込まれたようです。
更に、今回の製作でバイブルとしているニコ動のヒューズ設定部分を改めて詳細に見ていくと、Low Fuseに「0xF1」という設定をしているのを見つけました。
「0xF1」、すなわち「11110001」です。これは、先の曲テンポがやけに速いシューズ設定(11100001)と比べると、「4bit」の「起動時間」が違うだけ。
でも「起動時間」って、電源投入からプログラムが動作するまでの遅延時間の選択らしいので、ここを変えてもテンポには影響が出ないような気がするんだけど。
うーむ。これ以上、ヒューズ設定をあれこれいじるのは怖いので、取り敢えず「11100010」でFixとし、微妙なテンポの調整は、大元の曲のテンポを調整することにしましょう。
まだ微妙にモヤモヤしてはいるけど、ヒューズ設定を自分で書き込めるようになったのは間違いなく大きな前進だと思う。
- 関連記事
-
-
AVRマイコンの電源スイッチとスリープモードと
-
3種類の方式の電子オルゴール -- その音の違いは
-
HIDaspxをhidspxで使用するためのコマンド
-
ブレッドボード配線パターンタイプのユニバーサル基板は便利!
-
フッ素樹脂テープとホットメルト(グルーガン)で成形もどき
-