Gugen展示版

Fork of MagneWave by kouzi osaki

Revision:
3:500b992880b3
Parent:
2:0fc5df933021
Child:
4:8b4be75fd97a
--- a/MagneWave.cpp	Thu Oct 31 15:07:37 2013 +0000
+++ b/MagneWave.cpp	Sat Nov 02 08:14:03 2013 +0000
@@ -1,36 +1,27 @@
 #include "MagneWave.h"
 
 #define DATA_OFFSET 44
-#define DAC_CENTER  32768
+#define DAC16_CENTER  32768
 
 MagneWave::MagneWave( SoftMCP4922 *dac )
 {
     m_wave_DAC = dac;
-    m_wave_DAC->write_u16( DAC_CENTER );
+    m_wave_DAC->write_u16( DAC16_CENTER );
 }
 
 void MagneWave::play( FILE *wavefile )
 {
-#if 0
-    // data size check
-    unsiged long dataSize = 0;
-    seek( wavefile, 40, SEEK_SET );
-    dataSize = fgetc( wavefile );
-    dataSize |= ( fgetc( wavefile ) << 8 );
-    dataSize |= ( fgetc( wavefile ) << 16 );
-    dataSize |= ( fgetc( wavefile ) << 24 );
-    printf( "data size = %ld\n", dataSize );
-#endif
+    m_timer.start();
+    m_timer.reset();
     
     // jump to wave data
     fseek( wavefile, DATA_OFFSET, SEEK_SET );
     
     while(1){
-    //16bit
-    /*
+#if 1    //16bit
         int tmpL = 0;
         int tmpH = 0;
-        unsigned short dacVal16 = 0;
+        long dacVal16 = 0;
         tmpL = fgetc( wavefile );
         if( tmpL == EOF ){
             break;
@@ -41,10 +32,15 @@
         }
         dacVal16 = tmpL;
         dacVal16 |= ( tmpH << 8 );
+        dacVal16 += DAC16_CENTER;
         m_wave_DAC->write_u16( dacVal16 );
-    */
+
+        // TODO: adjust cycle
+        while( m_timer.read_us()< 125){}
+        m_timer.reset();
+        
+#else    // 8bit
     
-    // 8bit
         int dacVal8 = fgetc( wavefile );
         
         if( dacVal8 == EOF ){
@@ -53,6 +49,11 @@
         m_wave_DAC->write_u8( ( unsigned short )dacVal8 );
         
         // TODO: adjust cycle
-        wait_us( 75 );
+        while( m_timer.read_us()< 125){}
+        m_timer.reset();
+#endif
+
     }
+    m_timer.stop();
 }
+