Chirp Signal Generator

Dependencies:   mbed

Fork of TAU_ZOOLOG_Playback_Rev1_1 by Yossi_Students

Revision:
21:7aa784deffc8
Parent:
20:048516dc1015
Child:
23:024fd1442fce
--- a/main.cpp	Tue Mar 27 07:58:22 2018 +0000
+++ b/main.cpp	Sun Apr 08 07:40:55 2018 +0000
@@ -14,12 +14,18 @@
 */
 #include "mbed.h"
 #include "chirp.h"
-#define PULSE_RATE 10.0f // in HZ
+#define PULSE_RATE 20.0f // in HZ
+#define FREQ_POT_EN // Potentiometer to set PULSE Rate
+#define MIN_FREQ 0.5f //(HZ)
+
+float pulseRate=PULSE_RATE;
 // Serial over USB as input device
 Serial pc(SERIAL_TX, SERIAL_RX);
 
 // mbed variables, Settings
 AnalogOut out(PA_4);
+AnalogIn potFreq(A0);
+// Potentiometer analog INPUT
 
 // digital pins
 DigitalOut led(LED1);
@@ -68,9 +74,9 @@
     while(true) {
         if (mybutton.read()==0) { // if button pressed, generate pulse out
             led.write(1);
-            
+
             /////////////////////////////////////////////////////////////////////////////////
-            __disable_irq();    // Disable Interrupts 
+            __disable_irq();    // Disable Interrupts
             // generate chirp out
             for (int ii=0; ii<NUM_SAMPLES; ii++) {
                 // toogle io for loop frequency
@@ -95,15 +101,15 @@
             *(__IO uint32_t *) Dac_Reg = (uint16_t)(4095/2);
             __enable_irq();     // Enable Interrupts
             //////////////////////////////////////////////////////////////////////////////////
-            
+
             // generate delay between pulses
             // delay post pulse // sets the pulse rate
-            float waitTime = (1.0f/(2.0f*PULSE_RATE) - (((float)NUM_SAMPLES)/1000000.0f));
+            float waitTime = (1.0f/(2.0f*pulseRate) - (((float)NUM_SAMPLES)/1000000.0f));
             if (waitTime > 0) {
                 led.write(0);
                 wait(waitTime);
                 led.write(1);
-                wait(1.0f/(2.0f*PULSE_RATE));
+                wait(1.0f/(2.0f*pulseRate));
             } else {
                 wait(0.5);
                 printf("!!! Error Wait time is negative %f !!!\r\n", waitTime);
@@ -111,6 +117,13 @@
             }
         } // end button press
         led.write(0);
+
+        // update freq based on potentiometer
+#ifdef FREQ_POT_EN 
+        pulseRate = potFreq * PULSE_RATE;
+        if (pulseRate < MIN_FREQ) pulseRate = MIN_FREQ;
+        //printf("Pulse Rate %f\r\n", pulseRate);     
+#endif
     }// end while(True)
 }