NECエレクトロニクス社が無料で配布する、78K0S/KA1+マイコンのソフト開発ツール関連のインストール手順などの説明が終わりましたので、音を出す何かを作ってみることとします。
この78Kマイコンは、アプリレット(Applilet)という周辺機器ドライバのソース・コードを生成する無料の開発プログラムがダウンロードできるので、比較的簡単にプログラムを作ることができます。とくに、一般的なマイコンについて知識ある方なら、簡単に使えるようになります。アプリレット・プログラムは各マイコンごとに異なる周辺機能の設定を画面(GUI)で行えるからです。
各マイコンでおなじみのLED点滅は調光なども含めたソース・コード作成は、たった1行のコーディング追加で完了します。今回の工作では、部品は少なめ、追加するソース・コードも少な目を目標でマイコン電子工作を行います。ちなみに追加したソース・コードの行数は多くなりましたが、15行程度で完成しました。
「初めての方でも、ほかのマイコンを使うよりも簡単に使えるようになります」が、正しいかどうかは、この3回の説明で判断してください。
今回の電子工作でのマイコンへの書き込みはWAKAZO-1基板を改造したライタを使っています。それぞれについては過去の記事を参照ください。
78K0S/Kx1開発ツールのインストール (1~4)
参考書籍
・はじめての78Kマイコン (CQ出版社)
・マイコンと表示器をつなぐ10の方法 (CQ出版社)
1.音を出す電子工作、仕様の検討
何を作るかと考えた場合、一つの周波数の音ならば17kHzのモスキート音を出して、聞こえるか/聞こえないかで老化を判定する物が作れそうです。この仕様は1行コーディングでできる「LEDピカピカプログラム」の周波数が異なるだけです。このためプログラムはたった1行のコーディングで完了します。回路もオーディオ・アンプをマイコンのポートに接続するだけで完成します。
また、複数の周波数の音を出すことを考えれば、電子ピアノのようなものができそうです。この場合は音階の周波数をスイッチで選択するので、ちょっと部品やコーディングが多く必要になります。
78Kマイコンで部品数も少なく、コーディングも少ない楽器もどきを作ってみましょう。弦が1本のギターや琴のようなものになりました。
1)音は方形波出力機能で周波数変化させます
2)音階(周波数)の値はA/D変換機能を使います。
3)A-D変換の値はスライド・ボリュームを使い可変します。
先の記事で製作したオーディオ・アンプと接続するとこんな感じになります。右側が今回作るものです。
まず、出す音について決めましょう。音楽の音階であるハ長調「ラ」の音の周波数は440Hz(または442Hz)です。1オクターブ上は倍の高い周波数や1オクターブ下は1/2の低い周波数となります。マイコンでそれらの周波数範囲の音を出すことができれば、「ドレミファソラシド」と音階ができます。ただ、マイコンの動作する発振周波数を使うので、ぴったりの周波数にはできません。
エレキジャック誌NO.4(2007年11月号)のテルミン記事によれば、1オクターブ上の周波数、「ラ」が880Hzで作られているようです。
次は音階(周波数)の選択方法です。一般的には押しボタン・スイッチを複数並べて、そのスイッチに合わせた音階の周波数を出すようにすればできそうです。しかし、それではスイッチ部品が多数必要になり、配線も複雑で、かつプログラムも複雑になります。
ここであくまでも「簡単」を主眼におき、スライドのボリュームを使うことにします。つまり、音階データ(周波数)はボリュームの位置で選択できます。ボリュームの位置はA-D変換することで読み取れます。ボリュームは一般的な回転するものではなく、スライド式のものを使うことにします。ボリュームの位置で音階を決めることができます。
このままでは、音が連続になるので、スイッチを押したときだけ音が出るようにします。つまりボリュームの位置の音階を選択し、押しボタンを押したときだけその音階となって音がでます。1本ギターか1本琴の感じです。
この仕様だと、回路図はこのようになります。少ない部品で作ることを目標にしました。変換基板の78K0S/KA1+マイコン(アスミス=内藤電誠町田製作所製 FB-78K922MC)を使っているので、パスコンは変換基板内にすでに入っています。サンハヤトのマイコンの場合は、パスコンの接続のほか、ピン番号が異なります。圧電スピーカの横にはイヤホン・ジャックをつけました。
78Kマイコンは、書き込み器WAKAZO-1に付属してきた、DIP変換基板型の78K0S/KA1+(FB-78K922MC)を使います。音は他励式の圧電ブザー、音程変換用はアルプス電気のスライド式の20kΩボリューム(B型)、音のON/OFF用に適当な押しボタン・スイッチ、それに抵抗少々です。
電源は5Vですので、ここではACアダプタ(DC5V)を使っています。オーディオ・アンプと接続できるように回路図にないモノラルのイヤホン・ジャックもつけています。
完成基板の写真はこんな感じになります。ボリュームは右にすると抵抗が小さくなり高い音になります。
2.アプリレットでソース・プログラムを作る
では、ソース・プログラムを作りましょう。78Kマイコンの場合、先に述べたようにメーカの無料で配布するアプリレット・プログラムを使えば、ある程度の周辺機能のソース・プログラムを作ってくれます。
最初に、アプリレットを起動して画面に指定していくことでソース・コードを生成します。一般的な説明とともに、アプリレット・プログラムの設定を説明します。
(1) プロジェクトを作る
アプリレットを起動したら新規のプロジェクト作成(ここではonkaiと入力)を行います。マイコン(チップ・シリーズ)は使用するマイコン78K0S/KA1+シリーズのuPD78F9222を指定します。
終わると、このようなメニューの起動画面になり、それぞれマイコンの各機能をGUIで設定することになります。メニューの名前も、ほかのマイコンで使っている標準的な名前です。
(2) システムとウォッチドック・タイマの設定を行う
最初はシステム・メニューをクリックしてシステムの設定を行います。次の画面のように、CPUのスピードとなるメイン・クロックは内蔵発振器クロック(8MHz)へ設定。「P34/リセット端子」は入力ポートとしても使えるので、「リセット端子として使う」にチェックを入れるようにします。このP34/リセット端子は回路図ではRESET端子で、プルアップしています。このピンを入力のままにすると後で問題がおきるので、必ず設定しておきます。
次に、ウォッチドック(WDT)メニューをクリックして、このように「使用しない」に設定します。このようにWDTを止めないと、変なタイミングで勝手にリセットされてしまいます。
この二つはメニュー上規定値になっていますが、そのままにすると後で問題がおきます。この78kマイコンを使うとき、とくに理由がない場合はこのように設定します。
(3) タイマH1から方形波出力するように設定
次は、周波数を変化させるタイマの設定です。タイマメニューをクリックして、タイマH1タブをクリックします。このように、タイマH1の機能設定は方形波が出るようにチェックを入れます。DUTY=50%のPWM波形をポート42に出します。
そして、下にある「詳細」ボタンを押して詳細設定に進めます。
詳細設定は、「方形波のONになっている時間」を指定することになるので、500Hzとして1msを指定します。カウント・クロックは自動でかまいません。ON時間とOFF時間を加えた1周期の時間は倍の2msになり、1msを指定すると500Hzとなります。
この500Hzは発振周波数8MHzが割り切れた値で、音階の中心周波数として440Hz付近の値を仮に指定しています。「割り込み設定」にチェックを入れ、OKをクリックして設定完了。指定した半周期ごと、1周期に2回プログラム割り込みが発生します。
(4) A-D変換ルーチンの設定
そして、音階の変化を決めるA-D変換の設定です。作成する回路ではアナログ・ポート0に音階を決めるボリュームが接続されています。また、Vref端子は電源電圧5Vに接続されています。ボリュームは約1Vより低くならないよう直列に抵抗器を接続してあります。
A-Dコンバータ・メニューをクリックして設定します。A-D変換の動作指定は、使用するにチェックを入れます。アナログ入力チャネルは、ボリュームの接続している0チャネルにチェックを入れます。基準電圧は「4.5V<=AVref」にチェックを入れます。このようにA-D変換ルーチンでは、ボリュームの電圧を読み取る指定を行います。
最後に、A-D変換が完了したら割り込みが起こるように「割り込み設定」にチェックを入れます。
(5) 「押しボタン」の処理
音を出すのを先にするために、ポート41に接続された音をON/OFFするための「押しボタン」の処理は後にまわします。
(6) コード出力
これで「ファイル」メニューから「コード生成」をクリックすると、次の画面になります。空白の含まない英数のフォルダを指定します。「マイドキュメント」や日本語文字をを含むフォルダ名に作ってはいけません。
ソース・コードのフォルダに、画面下にある「コード生成」ボタンを押すと、初期設定のソース・コードができます。
このようなソース・ファイルを作ったんだと思いながら、OKボタンを押します。これで終わりなので、ファイル・メニューからアプリレットを終了させると、設定内容の保存になるので、ソース・コードと同じフォルダに入れます。
ここまでの作業で。ほとんどのソース・コードができてしまいます。引き続き、生成されたコードを確認して、動作に必要なソース・コードを追加することにします。
後田 敏
