RL78/G13でWAVプレイヤーとLCD表示を合体させてみた

前回、大きなプログラムが動かない場合がある不具合の原因を取り除いて
から、信頼性が向上した為、ようやく不安無く大きなプログラムを作る事
ができるようになった。

そこで、以前に作ったWAVプレイヤーに、LCDファイラーなどを合体
させて、単独で機能するプレイヤーにアップデートしてみた。

   text    data     bss     dec     hex filename
  85991     112    3744   89847   15ef7 wav_play_sample.elf

かなり巨大になり、書き込み時間もそれなりにかかるようになった・・・
RAMは、合計4Kバイト程、スタックに最大1Kくらいは使うと思うの
で5K程、まだまだ余裕がある、思った程消費していない。
プログラムは、「15EF7」だけど、実際には0x3000から始まる
ので、96K程消費している。
R5F100LGAFB (FLASH:128K, RAM:12K, DATA-FLASH:8K) @340
は、バランスが良いデバイスなのかもしれない。

RL78のI/Oを制御するテンプレートクラスは、このような場合にリ
ソースの割り当てが柔軟なので、かなり楽が出来る、しかも、余分なコー
ドが入らないから、高速に動作し、メモリーの節約にもなる。
やはり C++ は組み込みマイコンに適した言語なのだと思える。

※ファイル選択の様子
img_0840s

起動時:
・左ボタンでファイラー起動
・十字ボタンの上下でファイルを選択
・十字ボタンの右で、再生(ディレクトリーの場合は、移動)
・十字ボタンの左で、ディレクトリーを戻る
・右ボタンで、ディレクトリー連続再生

再生中:
・十字ボタンの右で、次の曲
・十字ボタンの左で、曲の先頭
・左ボタンで一時停止

※再生中
img_0841s
※WAVファイルには、TAG情報が含まれているので、それを表示してい
る。

再生中に、経過時間を表示したいが、16ビットステレオの44.1KHz
では、ループに余裕が無く、LCDの書き換えをリアルタイムに行なえない。
SPI通信をDMAにするとか、時分割処理が必要なので、この機能は現在
は実装していない、そのうち対応したい。

外部に接続した、ターミナルには、経過時間(1秒毎)を表示している。
また、ターミナルからの操作も常に受け付ける。

RL78/G13 WAVプレイヤー