does not work yet. Sound starts but then stops after a few seconds, whole thing hangs. Published so as I can import through mbed CLI.

Dependencies:   mbed sinelookup SDFileSystem_Copy_of_mbed_version I2S

Revision:
6:fd6ae534d120
Parent:
5:5b120a2d9249
Child:
7:fb47ff047ac7
--- a/wolfson_3_wav.cpp	Tue Oct 23 19:02:45 2018 +0000
+++ b/wolfson_3_wav.cpp	Sun Oct 28 16:44:14 2018 +0000
@@ -14,6 +14,7 @@
 DigitalOut led3(LED3);
 Ticker sampletick;
 Timer t;
+Timer t2;
 #include "SDFileSystem.h"     
 #include "WOLFSON_config.h"  
 Serial pc(USBTX, USBRX); // tx, rx //FOR DEBUGGING PROGRAM USING GNU SCREEN
@@ -51,6 +52,12 @@
 int newvar;
 long slice, num_slices;
 int verbosity = 0;
+int interrupt_condition = 0;
+int sampling_freq = 48000;
+int Buffer1[512];
+int Buffer2[512];
+int place_hold1;
+int place_hold2;
 //long long slice_value;
 int slice_value[1];
 FILE *my_wav;
@@ -73,15 +80,17 @@
     printf("buffer data:  %d \n\r",buffer);
     printf("data_sptr data:  %d \n\r",data_sptr);
     }
-    //t.start();
+
     //buffer[0] = (int*)data_sptr;
     //buffer[0] = newvar;
     //buffer[0] = sine16lookup[i];//>>1;//sine16lookup[i];//scale down volume a bit on amp//how would this scale down the volume a bit??
     //buffer[0] = *fp;
     //printf("value: %d",data_sptr);
+    t.start();    
     i2s.write(data_sptr, bufflen);//Send next PWM value to amp
-    //t.stop();
-    //printf("The time taken was %f seconds\n", t.read());
+    t.stop();
+    printf("The time taken was %f seconds\n", t.read());
+    t.reset();
     myled = 0;
     }
 
@@ -335,7 +344,11 @@
     printf("chunk_size - sizeof(wav_format) %d\n\r",wav_data.subchunk2_size-sizeof(wav_format));
     printf("sizeof(wav_format): %d\n\r",sizeof(wav_format));
     printf("do we egt to this point:\n\r");
-    //sampletick.attach(&isr,1/96000);
+    if (interrupt_condition == 1)
+    {
+      sampletick.attach(&isr,10.0);  
+    }
+    
     //sampletick.attach(&isr,1000000/48000);
     //while(!feof(my_wav)){
     //while(1){
@@ -353,7 +366,7 @@
             
     slice_buf=(char *)malloc(wav_format.block_align);
               for (slice=0;slice<num_slices;slice+=1) {
-                  //t.start();
+                  t2.start();
           fread(slice_buf,wav_format.block_align,1,my_wav);//THIS IS WHERE HE READS IN THE DATA, TO SLICE_BUF.  BUT USES WAV_FORMAT.BLOCKALIGN AS HIS SIZE GUIDE
           //I do not understand why he is not "seeking" through the file first though...
           if (feof(my_wav)){
@@ -369,8 +382,43 @@
               case 16:
                 int mybuffer[1];
                 mybuffer[0] = data_sptr[channel];// - 32768;
-                i2s.write(data_sptr,2);
-                wait_us(0.1);
+                if(interrupt_condition==1)
+                {
+                    
+                    
+                }
+                else
+                {
+                    if(verbosity == 1)
+                    {
+                        t.start();
+                        i2s.write(data_sptr,2);
+                        t.stop();
+                        printf("The time taken was %f seconds\n", t.read());
+                        t.reset();      
+                    }
+                    
+                    else
+                    {
+                        
+                       i2s.write(data_sptr,2); 
+                        
+                    }
+                    
+                    if(sampling_freq == 48000)
+                    {
+                    wait_us(0.1);
+                     }
+                     else if(sampling_freq == 8000)
+                     {
+                         wait_us(2);
+                      }   
+                }
+                
+                
+                
+
+
                 if (verbosity)
                   printf("16 bit channel %d data=%d\n\r ",channel,data_sptr[channel]);
                 slice_value[1]+=data_sptr[channel];
@@ -407,8 +455,9 @@
           }
           int mynewvar[1];
           //i2s.write(data_sptr,2);
-          //t.stop();
-          //printf("The time taken was %f seconds\n", t.read());
+          t2.stop();
+          printf("The time taken was %f seconds\n", t2.read());
+          t2.reset();
     }
  /*         dac_data=(short unsigned)slice_value;
           if (verbosity)
@@ -420,8 +469,12 @@
         }*/
 
 
-    
-        //sampletick.detach();
+    if(interrupt_condition == 1)
+    {
+        
+        sampletick.detach();
+    }
+        
     i2s.stop();
     
     fclose(my_wav);