nlgplay for mbed

Dependencies:   SDFileSystemEx mbed

Files at this revision

API Documentation at this revision

Comitter:
bkc_mbed
Date:
Wed Aug 20 00:31:00 2014 +0000
Parent:
7:7e183b33c3f9
Child:
9:834e9eed0d72
Commit message:
Reduce program size.

Changed in this revision

SDFileSystem.lib Show diff for this revision Revisions of this file
SDFileSystemEx.lib Show annotated file Show diff for this revision Revisions of this file
lcd.cpp Show annotated file Show diff for this revision Revisions of this file
main.cpp Show annotated file Show diff for this revision Revisions of this file
mbed.bld Show annotated file Show diff for this revision Revisions of this file
--- a/SDFileSystem.lib	Mon Aug 18 22:32:46 2014 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,1 +0,0 @@
-http://mbed.org/teams/mbed/code/SDFileSystem/#e6b0a24df912
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/SDFileSystemEx.lib	Wed Aug 20 00:31:00 2014 +0000
@@ -0,0 +1,1 @@
+http://mbed.org/users/bkc_mbed/code/SDFileSystemEx/#e62142f7a820
--- a/lcd.cpp	Mon Aug 18 22:32:46 2014 +0000
+++ b/lcd.cpp	Wed Aug 20 00:31:00 2014 +0000
@@ -1,3 +1,16 @@
+/*
+ * lcd.cpp : AQM0802A mini library
+ * 
+ *  Based on LCD module "AQM0802A-RN-GBW" sample program  
+ *  Copyright (c) 2013 Yoshihiro TSUBOI
+ *
+ *  Original Arduino version was developed by
+ *  Copyright (c) 2013 Masahiro WAKAYAMA at SWITCH SCIENCE
+ *
+ *  Released under the MIT License: http://mbed.org/license/mit
+ *
+ */
+
 #include "mbed.h"
 
 I2C i2c(dp5, dp27); // sda, scl
--- a/main.cpp	Mon Aug 18 22:32:46 2014 +0000
+++ b/main.cpp	Wed Aug 20 00:31:00 2014 +0000
@@ -1,17 +1,14 @@
+//
+// NLGPLAY : NLG file player for mbed
+//
+
 #include "mbed.h"
 #include "SDFileSystem.h"
 #include "lcd.h"
 
-// #define USE_NBV3
+#define USE_NBV3
+#define USE_FASTIO
 
-// (pinname, initial value)
-DigitalOut io01(dp13, 0);
-DigitalOut io02(dp26, 0);
-DigitalOut io03(dp17, 0);
-DigitalOut io04(dp4, 0);
-
-DigitalOut io05(dp18, 0);
-DigitalOut io06(dp11, 0);
 
 // (pinname, mode)
 DigitalIn sw_play(dp24, PullUp);
@@ -52,6 +49,11 @@
 int  nlg_ctc0;
 int  nlg_ctc3;
 
+#define _WAIT for(int wcnt=0; wcnt < 2; wcnt++)
+
+#ifndef USE_FASTIO
+// 通常IO
+
 #define RCK io04
 #define SCK io03
 #define DBS io01
@@ -60,11 +62,21 @@
 #define IO_A0 io05
 #define IO_WR io06
 
+// (pinname, initial value)
+DigitalOut io01(dp13, 0); // P1_4
+DigitalOut io02(dp26, 0); // P0_3
+DigitalOut io03(dp17, 0); // P1_8
+DigitalOut io04(dp4, 0); // P0_11
 
-#define _WAIT for(int wcnt=0; wcnt < 2; wcnt++)
+DigitalOut io05(dp18, 0); // P1_9
+DigitalOut io06(dp11, 0); // P1_1
+
+void ioInit()
+{
+}
 
 // 16bit output
-inline void ioShiftOut(unsigned int data)
+void ioShiftOut(unsigned int data)
 {
     int i;
     
@@ -94,6 +106,68 @@
     RCK = 0;
     // _WAIT;
 }
+#else
+
+// 高速IO
+
+#define RCK IO_04
+#define SCK IO_03
+#define DBS IO_01
+#define CTS IO_02
+
+
+#define IO_A0 io05
+#define IO_WR io06
+
+DigitalOut io05(dp18, 0); // P1_9
+DigitalOut io06(dp11, 0); // P1_1
+
+
+#define IO_01 (1<<4)  // P1_4
+#define IO_02 (1<<3)  // P0_3
+#define IO_03 (1<<8)  // P1_8
+#define IO_04 (1<<11) // P0_11
+
+
+void ioInit()
+{    
+    // 出力
+    LPC_GPIO0->DIR |= (IO_02 | IO_04);
+    LPC_GPIO1->DIR |= (IO_01 | IO_03);
+}
+
+// 16bit output
+void ioShiftOut(unsigned int data)
+{
+    int i;
+     
+    for(i = 0; i < 8; i++)
+    {
+        /* 2ビット分のデータをそれぞれ出力 */
+        if (data & 0x80)
+            LPC_GPIO0->DATA |= CTS;
+        else
+            LPC_GPIO0->DATA &= ~CTS;
+        
+        if (data & 0x8000)
+            LPC_GPIO1->DATA |= DBS;
+        else
+            LPC_GPIO1->DATA &= DBS;
+        
+        data <<= 1;
+
+        LPC_GPIO1->DATA |= SCK;
+        LPC_GPIO1->DATA &= SCK;
+    }
+
+    LPC_GPIO0->DATA |= RCK;
+    LPC_GPIO0->DATA &= ~RCK;
+
+}
+
+
+#endif
+
 
 
 /* 制御信号定義 */
@@ -224,22 +298,6 @@
 typedef unsigned long  dword;
 
 
-// 変数書き出し(WORD)
-void WriteWORD(byte *p,word val)
-{
-    p[0] = (val & 0xff);
-    p[1] = ((val>>8) & 0xff);
-}
-
-// 変数書き出し(DWORD)
-void WriteDWORD(byte *p,dword val)
-{
-    p[0] = (val & 0xff);
-    p[1] = ((val>>8) & 0xff);
-    p[2] = ((val>>16) & 0xff);
-    p[3] = ((val>>24) & 0xff);
-}
-
 // 変数読み出し(WORD)
 word ReadWORD(byte *p)
 {
@@ -300,6 +358,23 @@
 
 #if 0
 
+
+// 変数書き出し(WORD)
+inline void WriteWORD(byte *p,word val)
+{
+    p[0] = (val & 0xff);
+    p[1] = ((val>>8) & 0xff);
+}
+
+// 変数書き出し(DWORD)
+inline void WriteDWORD(byte *p,dword val)
+{
+    p[0] = (val & 0xff);
+    p[1] = ((val>>8) & 0xff);
+    p[2] = ((val>>16) & 0xff);
+    p[3] = ((val>>24) & 0xff);
+}
+
 // 書き込み用NLGファイルを開く
 int CreateNLG(const char *file)
 {
@@ -369,6 +444,7 @@
         return;
 
     fclose(nlg_file);
+
 #if defined(__MICROLIB) && defined(__ARMCC_VERSION) // with microlib and ARM compiler
     free(nlg_file);
 #endif
@@ -377,31 +453,31 @@
 }
 
 // データの読み出し
-int ReadNLG(void)
+inline int ReadNLG(void)
 {
     return fgetc(nlg_file);
 }
 
 // ファイルポインタの位置を取得
-long TellNLG(void)
+inline long TellNLG(void)
 {
     return ftell(nlg_file);
 }
 
 // ファイルポインタの位置を設定
-void SeekNLG(long pos)
+inline void SeekNLG(long pos)
 {
     fseek(nlg_file, pos, SEEK_SET);
 }
 
 // タイトルの取得
-char *GetTitleNLG(void)
+inline char *GetTitleNLG(void)
 {
     return nlg_title;
 }
 
 // ティックの取得
-int GetTickNLG(void)
+inline int GetTickNLG(void)
 {
     return nlg_tick;
 }
@@ -810,6 +886,8 @@
     led1 = 0;
     led2 = 0;
     
+    ioInit();
+    
     wait_ms(20);
 
     // reset SHIFT REGISTER
@@ -844,18 +922,13 @@
         t.stop();
         
         printf("result_us=%dus\n", result_us);            
-        printf("DATE:%s\nTIME:%s\n", __DATE__, __TIME__);
-        
+        sprintf(buf, "R:%dus", result_us); 
+        lcd_printStrY(1, buf);
+        wait(3);
+                
         sprintf(buf, "%8s", __DATE__); 
         lcd_printStrYscr(1, buf);
         wait(3);
-        sprintf(buf, "%8s", __TIME__); 
-        lcd_printStrY(1, buf);
-        wait(3);
-        
-        sprintf(buf, "R:%dus", result_us); 
-        lcd_printStrY(1, buf);
-        wait(3);
 
         if (files < 0)
             lcd_printStrY(1, "NO FILES");
--- a/mbed.bld	Mon Aug 18 22:32:46 2014 +0000
+++ b/mbed.bld	Wed Aug 20 00:31:00 2014 +0000
@@ -1,1 +1,1 @@
-http://mbed.org/users/mbed_official/code/mbed/builds/0b3ab51c8877
\ No newline at end of file
+http://mbed.org/users/mbed_official/code/mbed/builds/9327015d4013
\ No newline at end of file