うちで電子オルゴールキットが流行ってます ^^;
秋月で昔買ったと思われるCDSで明るくなると鳴りだすハート形のキット、これを組み立てた家人がいたく気に入り
先日秋月へ寄った際に別のキットを購入、これは5曲入りでやはりCDSで鳴り出すのだが...、どうも地雷だったようで ^^;
キット自体はさっくり組み立て完了してすぐに音出し成功、ところが...
ファミマチャイムのメロディICについてググった時に見つけたY-Labさんのところによると、このUM3485の5曲目の"Yersterday"は「ある意味で一聴の価値があります」とのこと
要は音痴というかデータ間違ってるだろ...的なクオリティです
それとも著作権を意識してワザと別の曲にしているのか...は考え過ぎと思われ ^^;
他に適当なキットが見当たらず、マイコンでないキットを現在も探しているようで
そこでマイコンではあるけれど、ATtiny45にスピーカー直付けで音出しできるChaNさんとこの「Wave Table電子オルゴール」を試してみようかと
因みにフルアセンブラです
(ChaNさんのページ、マイコン工作を始めた頃から拝見させていただいているので一体何年(?)、でも未だに外人も参照(英語ページもあるので)している凄い(!))
ATtiny45を買ってきて書き込めば終わりなのだけれど、せっかくなのでATtiny85にして複数曲の切替えが可能なようにしてみようかと
あとCDSも繋げて明るくなったら起動するように機能追加を
ところでATtiny85やらArduinoでお馴染みのATmega328やらのメーカーであるAMTELはMicrochipに買収され、その結果PIC用のライタ(Snapとか)でAVRが書けたりするようになったりIDEのAMTEL StudioがMicrochip Studioとかいう名前に変わり便利の様なそうでもない様な感じになってました
今回必要な8bit VAR用アセンブラであるAVRASM2はMicrochip Studioの一部なので問答無用でインストールしました(v.7.0.2542)
ところが8bit AVRアセンブラで新規SolutionなのかProjectなのかを作ろうとすると初期化でテンプレをコピーしてくるところで「xxxファイルが無い」と怒られて進まず...
仕方ないのでエラーメッセージをみて対症療法的に
(1) ファイルが無いと怒られるのは C:\Program Files (x86)\Atmel\Studio\7.0\ProjectTemplatesCache\Assembler\1033の中(デフォルトの場所にインストール)
(2) それっぽい(Assembler.zip)のが C:\Program Files (x86)\Atmel\Studio\7.0\ProjectTemplates\Assembler\1033 の中にあった
(3) C:\Program Files (x86)\Atmel\Studio\7.0\ProjectTemplatesCache\Assembler\1033 の中に"Assembler.zip"というフォルダを作りその中に(2)でみつけたzipファイルの中身をコピー
![](https://blogimg.goo.ne.jp/user_image/0f/0f/3b3190bb0558515360277b3a638831f6.png)
これをすると新規Project作成時のエラーが出なくなり期待通りの動作になる...
でChaNさんとこからソースを持ってきて新規作成したProjectのフォルダ内にコピー(Perlスクリプトやらなんやら一式を丸ごとコピー)
元の mg.asm が main.asm になってるのと回路図のbitmap(mg.png)が足されてる以外はまんまコピー
![](https://blogimg.goo.ne.jp/user_image/7d/4f/cbb834a83474cb933c5cf544bc8d9707.png)
ターゲットがATtiny45からATtiny85に変わっているのでソースを最低限1か所は要変更 --> main.asm 中の includeファイルをATtiny85用に変更
![](https://blogimg.goo.ne.jp/user_image/15/aa/c71025b5a0c93800b5f83fc869dbb9d5.png)
但しこれだけだとせっかくATtiny45の4KBに対し倍の8KBあるプログラム領域のFlashが全く生かされず
niconico に上がっていた制作動画を参考に main.asm中の Wave Tableデータの開始位置をプログラム領域の後ろの方にずらして、曲データの格納領域がメモリ増加の恩恵が受けられるようにします
![](https://blogimg.goo.ne.jp/user_image/7d/cf/92b763696876f9accaf94162c4adc13c.png)
ところで、Wave Table やら Envelope のデータは固定長(オリジナルから変更なし)なので、プログラムのおしりに .org でアドレス指定せず繋げて書き、曲データを最後に持ってくれば残りの領域を全部割り当てられるのでこれがベストなのではないかと
曲データが長すぎたら書き込み時にエラーでわかるだろうし
この辺りは後々考えて、ギチギチにデータを詰め込むようにしようかと、今は取り敢えず先人の知恵を拝借してまずは build して動作確認
取り敢えずこの段階で build、Projectフォルダ内の debugフォルダに、.hex が出来るのを確認する
アセンブル時には レジスタを別名で再定義した部分が warning になる(7個出ます)が、出来上がる object には影響はないので無視します
これで自前環境で再アセンブル完了、コードの変更は一旦置いておいて、こんどはATtiny85 への書き込み作業に進みます
最初は Microchip の Snap が使えて、Microchip Studio からさっくり build & 書き込みがいけるかなと思いきや、r48外せだのなんだのと一筋縄ではいかないような ^^;
![](https://blogimg.goo.ne.jp/user_image/78/ca/203005296574a87b0a0137fcaa5601d8.jpg)
手元には中華な USBasp があったので、avrdude を使う旧来の方式で対応しました(Snapは無改造だとターゲットに給電できないし、USBaspはそのまま出来るし)
但し一旦インストール後は、Microchip Studio 内で External tool 登録して IDE内から一発で書き込めるようにはなりました
手順はここにまとめ記事があったのでありがたく参照、ジャンパで繋ぐのが面倒だったので書き込み基板兼単体オルゴール基板をさっくり作成
![](https://blogimg.goo.ne.jp/user_image/73/ec/b2f475202f8a2bf95e844e596e4a14c9.jpg)
これで IDE 内で ATtiny85に 「build --> 書き込み」、と流れ作業にはなったのだが最後にヒューズの指定を忘れてた
ChaNさんによると回路図に記されているようにヒューズをセットせよとのこと
![](https://blogimg.goo.ne.jp/user_image/31/34/9bfcf5e122998ac9166b493b37e60681.png)
ヒューズは間違えるとせっかく内蔵PLLだけでいいのに外付けクリスタルが無いと読み書きできなくなったりするので慎重に...
クロックは8分周せず、内蔵PLL16MHzを使用し、定電圧検出(BOD)は2.7Vで
AVR の Fuse calculator でググればツールがすぐ見つかるので、デフォルトのヒューズ設定にこれらの変更を加え、
high Fuse = DDh, low Fuse=F1h, ext Fuse=FFh
でよいかと
但し、Microchip Studio の External tool 登録したところからはヒューズ設定が直接いじれなかった(External tool 登録時のコマンドにおまじないを足せばいけそうだが漠然と不安 ^^;)ので、別途 arvdude-GUI をインストールしてヒューズだけいじります
実際、.hex ファイルの書き込みもここで出来るのでわざわざ IDE にExternal tool 登録しなくてもよかったのだけれど、まぁものは試し
![](https://blogimg.goo.ne.jp/user_image/70/56/d612f93680a9abe9bbcbf15824e608fd.png)
でヒューズがちゃんとしたら音出し
書き込み基板にはCR2032を載せられるようにしたので、電池を入れ3ピンと6ピンにスピーカーをつなぐと期待通りの音が出ました
3Vなのでスピーカーの前には抵抗は入れてません(オリジナルの指定通り)
![](https://blogimg.goo.ne.jp/user_image/03/2f/4a0e46d396744fbe0416ed69eb4aa26f.jpg)
ソースの Microchip Studio 環境への取り込み、アセンブル、ATtiny85への書き込み、ヒューズ修正、音出しまでは確認できたので、
- 複数曲データを載せ、タクトスイッチで切り替え機能を追加
- CDSをつないで明るくなったらなり始めるように改造
- 1曲リピートなのか、全曲リピートなのかモード設定できるように改造
等々をやっていきたいです
ATtiny85は8ピンなので(とは言え制約はあるだろうけど)、電源で2ピン、スピーカーで2ピン使うので残りは4ピン、出来れば全部載せしたいなぁ...
お久しぶりです。
コロナも今は落ち着いていますね。
さて、久しぶりの工作、楽しく拝見させて頂きました。
私もすっかり歳を取り工作意欲も無くなりました。
でも、ラジオペンチさんのブログだけは見ています。
今回は家人が急にこれにはまったのでなんとなく...という感じで
ATtinyでアセンブラというところがよかったです
複数曲を載せて切り替えは出来たのでCDSをどうしようか...よいうところです
いっそマイクロスイッチにしてケース加工した方が楽カモ