OPN系FM音源チップを制御します

OPN3L(YMF288-M)を制御します。

OPNA(YM2608)やOPN(YM2203)にも使用可能だと思われますがテストしていません。

OPNの場合は拡張FM部を正しく指定してください。

ADPCM系はテストしていません。

読出しも未実装です。コメントアウトしてありますが確認とれていません。

このプログラムは YMF288変換基板+Arduinoで簡易S98プレーヤを作る(その1)(http://d.hatena.ne.jp/m_yanase/20130901/1378020818) を参考にしています。

Revision:
2:ea441ce9e405
Parent:
1:df099d954a8f
--- a/FMOPN.h	Tue Jan 12 07:38:22 2016 +0000
+++ b/FMOPN.h	Wed Jan 13 15:26:27 2016 +0000
@@ -9,13 +9,13 @@
 
 
 #include "mbed.h"
-#ifndef __OPN3L__
-#define __OPN3L__
-class OPN3L
+#ifndef __FMOPN__
+#define __FMOPN__
+class FMOPN
 {
 public:
-    // D0 - 7 RST A0 A1 CS
-    OPN3L(
+    // D0 - 7 RST A0 A1 CS WR RD
+    FMOPN(
         PinName _D0,
         PinName _D1,
         PinName _D2,
@@ -27,32 +27,35 @@
         PinName RST,
         PinName A0,
         PinName A1,
-        PinName CS
+        PinName CS,
+        PinName WR,
+        PinName RD
     );
 
     // Reset
     void reset();
 
     // Write
+    // ifadr 0x00 A1 = 0
+    // ifadr 0x01 A1 = 1
+    // adr Address
+    // dat Data
     void reg_write(unsigned char ifadr, unsigned char adr, unsigned char dat);
+//    unsigned char reg_read(unsigned char ifadr, unsigned char adr);
+    
     void adr_write(unsigned char ifadr, unsigned char adr);
     void dat_write(unsigned char dat);
+//    unsigned char dat_read();
 
 private:
-    DigitalOut _BIT0;
-    DigitalOut _BIT1;
-    DigitalOut _BIT2;
-    DigitalOut _BIT3;
-    DigitalOut _BIT4;
-    DigitalOut _BIT5;
-    DigitalOut _BIT6;
-    DigitalOut _BIT7;
+
+    BusInOut _BUS;
     DigitalOut _RST;
     DigitalOut _A0;
     DigitalOut _A1;
     DigitalOut _CS;
-
-    void write_data(unsigned char dat);
+    DigitalOut _WR;
+    DigitalOut _RD;
 
     void law_write(unsigned char ifadr, unsigned char adr, unsigned char dat);