Chirp Signal Generator

Dependencies:   mbed

Fork of TAU_ZOOLOG_Playback_Rev1_1 by Yossi_Students

Revision:
20:048516dc1015
Parent:
19:5a6bf2a0ecf6
Child:
21:7aa784deffc8
--- a/main.cpp	Mon Mar 26 12:12:37 2018 +0000
+++ b/main.cpp	Tue Mar 27 07:58:22 2018 +0000
@@ -1,9 +1,10 @@
 /*
 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-% Generate Chirp Signal - 21/08/2017                %
+% Generate Chirp Signal - 27/03/2018                %
 % Arkadi Rafalovich - % Arkadiraf@gmail.com         %
 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-
+% Updates:
+% Disable interrupt during chirp out, fixes systic interrupt delays at 1ms interval for 0.5 us
 Pinout:
 DAC -- PA_4 -- A2
 
@@ -67,6 +68,9 @@
     while(true) {
         if (mybutton.read()==0) { // if button pressed, generate pulse out
             led.write(1);
+            
+            /////////////////////////////////////////////////////////////////////////////////
+            __disable_irq();    // Disable Interrupts 
             // generate chirp out
             for (int ii=0; ii<NUM_SAMPLES; ii++) {
                 // toogle io for loop frequency
@@ -89,19 +93,21 @@
             // Output value using DAC
             // HAL_DAC_SetValue(&hdac1, DAC_CHANNEL_1, DAC_ALIGN_12B_R, ADCValueOut);
             *(__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));
-            if (waitTime > 0){
+            if (waitTime > 0) {
                 led.write(0);
                 wait(waitTime);
                 led.write(1);
                 wait(1.0f/(2.0f*PULSE_RATE));
-            }else{
-                 wait(0.5);
-                 printf("!!! Error Wait time is negative %f !!!\r\n", waitTime);
-                 wait(0.5);
+            } else {
+                wait(0.5);
+                printf("!!! Error Wait time is negative %f !!!\r\n", waitTime);
+                wait(0.5);
             }
         } // end button press
         led.write(0);