■>サンテックのホームページTOPへ       ■>サンおやじの工作室TOPへ
    工作室
       H8/Mini2でWAVファイルを再生してみよう 

<工作室へ戻る
H8/Mini2でWAVファイルを再生してみよう


H8/Mini2 (サンテック製)

この製品の詳細
H8/MiniとH8/Mini2にはメモリカードソケットが実装され、専用ライブラリを使用するとSD/MMCカードを使うことができます。
専用ライブラリはFAT16、8.3形式(DOS形式)のファイルを読み書きすることができます。
H8/Mini用の専用ライブラリもしくはH8/Mini2用の専用ライブラリを使ってWAVEフォーマットのファイルを再生してみましょう。

H8/MiniとH8/Mini2のCPUはH8/3028F 25MHz、MODE7(シングルチップアドバンストモード)で、電源電圧は3Vです。
シングルチップアドバンストモードは基本的に外付け回路を必要としないため、H8/Mini基板またはH8/Mini2基板にプログラムを書き込み、電源を与えるだけで動作させることができます。

WAVEファイルを再生するためにはD/Aコンバータが必要ですが、幸いなことにH8/3028には8ビットのD/Aコンバータが2チャンネル組み込まれています。
このD/Aコンバータとタイマー割り込みを使うだけでWAVEファイルが再生できます。
もちろん、再生した音を聞くためには外部にスピーカーなどの発音素子が必要です。

このプログラムを変更し、例えばロボットが転んだときに”助けて〜、助けて〜”と連呼するだとか、起きあがるときに”よいしょ〜ぉ”と言わせるだとか、おもしろい遊びができると思います。
 開発環境のインストール      
         
開発環境はKPIT クミンズ インフォシステムズリミテッドから無償でダウンロードできます。
無償のC/C++言語でソフトを作ろう”を参照してインストールして下さい。

■お読みください■

H8/Mini2はKPITクミンズGNUH8v901以前をご使用ください。

KPITクミンズのGNUH8 v60x Windows Tool Chain (ELF)以降でファイルシステムライブラリを使用する場合の注意点があります。H8/Mini2ダウンロードページよりGNUH8 v60X Notes.pdfをお読みください。


KPITクミンズのGNUH8 v802 コンパイラ以降を使用する場合の注意点があります。
H8/Mini2ダウンロードページよりGNUH8 v802 Notes.pdfをお読みください。


H8/Mini2用WAVEファイル再生プログラム( WavePlay2.zip)または、
H8/Mini用WAVEファイル再生プログラム(WavePlay.zip)をダウンロード、解凍します。

HEWプロジェクトを作成します。 プロジェクト名はとりあえず“WavePlayer”、とでもしておきましょう。
新規プロジェクトを作ったら、勝手に作られるファイルを RemoveFiles で全てプロジェクトから切り離して下さい。
次に、新規プロジェクトフォルダ内の *.c , *.h , *.asm を全て削除します。
解凍したプログラムソースを全て新規プロジェクトフォルダにコピーします。
AddFiles でコピーしたファイルを全てプロジェクトに加えます。
次に、プロジェクトの設定をReleaseにします。
[Build(B)] → [Linker...] で“Linker Options”を開き、“Sections”の内容を書き換えます。




書き換えは、 .data のアドレスを0x00FFBF20に、.stack のアドレスを0x00FFFF20に設定します。
ここまでの詳しい手順はこちら→hew_project.pdf
最後に AllBuild して .mot ファイルを作成します。
   
 
 プログラムをH8/Mini2にダウンロードする      
      
H8/Mini2にはPCとの通信に使えるダウンロードキット基板が付属しています。
ダウンロードキット基板を組み立て、シリアルケーブル(ストレート)でPCと接続し、スイッチを"PROG"側に倒して電源(3V)を与えるとダウンロードモードに入ります。

この状態でFDT(Flash Development Toolkit HEWに組み込まれている場合があります)を使って
・・・・\WavePlay\WavePlay\Rerease\WavePlay.mot をH8/Mini、H8/Mini2にダウンロードします。

ダウンロードの方法は”CPUへのダウンロード方法”を参照して下さい。
ダウンロード終了後は必ず通信を切断して下さい。(COMポートを自動で開放してくれません)

         ●● H8/Mini用WAVEファイル再生プログラム → WavePlay.zip ●●
        ●● H8/Mini2用WAVEファイル再生プログラム → WavePlay2.zip ●●

著作権について

ダウンロードしたプログラムの著作権は、(有)サンテックが保有します。
ダウンロードしたプログラムは、弊社CPUボードで使用する場合に限り、商用・個人使用を問わず、改造も配布も自由です。
但し、ファイルアクセス専用ライブラリはSDカードのライセンスに抵触しますので、改造をしないでください。
   
 
 WAVEファイルを再生する      
         
※再生可能なWAVEファイル
このプログラムで再生できるWAVEファイルは44.1KHz 8ビット ステレオまでです。
内蔵のD/Aコンバータが8ビットですので16ビットのデータは再生しないようになっています。
Windowsに標準で付いている”サウンドレコーダー”を使って8ビットデータに変換してから使って下さい。
このときのファイル名は01.wav〜30.wavとして下さい。 このファイル名の順番で繰り返し連続再生します。

H8/Mini、H8/Mini2単体でWAVEファイルを読み込みD/Aコンバータを使って波形を出力することができますが、この出力を音に変えるには外部スピーカーが必要です。
オーディオ用のスピーカーはインピーダンスが低すぎて外部アンプが必要になります。
とりあえず音が出ていることを確認するだけならば、他励振の圧電スピーカーをD/Aコンバータの出力につなぐだけで音を鳴らすことができます。

  ● 実際にWAVEファイルを再生している様子 ●
Lchの+側をCNT3−3ピン、Rchの+側をCNT3−4ピン、
両方の−側をCNT3−1ピンに接続しています。

LEDは左からカードアクセス中、再生中、検索中、エラーです。

ポート5の出力端子から抵抗を通してそれぞれのカソードに接続
し、アノード側をGNDに接続してあります。

音は小さいし低音は弱いですが、しっかり鳴っています。
 
  オーディオ用のスピーカーやヘッドフォンで聴きたい場合は、必ずアンプを自作するようにして下さい。
H8/MiniもしくはH8/Mini2から出力される信号は、1.5Vセンター、3Vp−p、減衰なしです。
通常のオーディオアンプなどに直結すると、アンプやスピーカーを壊す可能性があります。
また、ヘッドフォンで聴きたい場合は音圧の調整ができませんので、どうなるか保証できません。
 

   
 
 アンプ内蔵スピーカーで聴いてみる      
 
※※ 以下の方法はあくまで自己責任に於いて行って下さい。 ※※
簡単に大きな音で聴きたい場合、アンプ内蔵のスピーカーに直接つないでしまうという裏技があります。
アンプ内蔵スピーカーの入力がコンデンサでカップリングされていて、多少入力電圧範囲を越えても壊れにくいだろうという想定の元に実験し、実際に音を鳴らすことができました。
あくまで、ある特定のスピーカーでの実験結果です。
スピーカーの仕様によっては壊れることがありますので、実験する場合は自己責任行って下さい。
実験の様子を動画にしてみました(動かないのに動画???PCの音声をアクティブにしてね)

                      

上手く表示されない方はH8でWAVファイル再生(ダウンロード)
   
 
 ファイルの説明      
 
それでは各ファイルの説明をします。
音楽再生のためのプログラムは main.c に書かれています。

start.asm
新規プロジェクトを作成すると勝手に作られるファイルです。
スタックの設定など、最低限の初期設定をし、main()関数を呼び出します。

hwinit.c
I/Oポート、タイマー、シリアルポート、D/Aコンバータの初期設定を行っています。
start.asmから呼び出されますので、main()以降で呼び出す必要はありません。
ファイルシステムライブラリで使用するポートは、ポート4、SCI0です。
また、16ビットタイマーのチャネル0を割り込みタイマーとして使います。
ポート5はプログラム中でLEDを点灯させるために使っています。

vects.c
割り込み時のベクターテーブルです。
電源投入時(RESET時)のアドレスとタイマー割り込みのアドレスが書かれています。

main.c
音楽再生のプログラム本体です。

TimeSys.c
日付、時間を取得する関数が書かれています。
ファイルアクセスのための専用ライブラリから呼び出されます。

ioh83028f.h
H8/3028Fの内蔵I/Oのアドレス定義です。

FileSys.h
ファイルアクセスのための専用ライブラリを使うときに必要な関数プロトタイプ、構造体、エラー定義などが記述されています。

lib\tH8flib7.a(H8/Miniのみ)
ファイルアクセスのためのH8/Mini専用ライブラリです。

lib\tH82flib7.a(H8/Mini2のみ)
ファイルアクセスのためのH8/Mini2専用ライブラリです。


   
 

<工作室へ戻る