Impedance Fast Circuitry Software

Dependencies:   mbed-dsp mbed

Fork of DSP_200kHz by Mazzeo Research Group

Revision:
31:09e7a8b3c7e7
Parent:
30:6a4ef939a93e
Child:
32:bf1e079a2ee3
--- a/main.cpp	Thu Dec 11 13:20:07 2014 +0000
+++ b/main.cpp	Fri Dec 19 21:39:42 2014 +0000
@@ -28,7 +28,7 @@
  *   Take the time to set these constants
  *
  *****************************************/
-#define MALLET 6        // set mallet to a value between 1-7
+#define MALLET 5        // set mallet to a value between 1-7
 #define STATIC 1        // set STATIC to 1 for static ip, set STATIC to 0 for dynamic
 #define PORT 22         // set to a random port number.  All the mallets can use the same port number.
 #define MAX_CLIENTS 2   // set the max number of clients to at least 2 (first client is MATLAB, second is the distance unit)
@@ -93,7 +93,9 @@
 DigitalOut led_blue(LED_BLUE);
 
 // motor control and angle encoder
-MotorControl motor(PTC2, PTA2, PERIOD, ON_OFF_TIME); // forward, backward, period, safetyPeriod
+PwmOut motorA(PTC2);
+PwmOut motorB(PTA2);
+//MotorControl motor(PTC2, PTA2, PERIOD, ON_OFF_TIME); // forward, backward, period, safetyPeriod
 AngleEncoder angle_encoder(PTD2, PTD3, PTD1, PTD0, 8, 0, 1000000); // mosi, miso, sclk, cs, bit_width, mode, hz
 DigitalIn AMT20_A(PTC0); // input for quadrature encoding from angle encoder
 DigitalIn AMT20_B(PTC1); // input for quadrature encoding from angle encoder
@@ -133,24 +135,61 @@
     led_blue = 1;
     led_green = 0;
     led_red = 1;
-    
+    motorA = 0;
+    motorB = 0;
+    motorA.period_ms(8);
+    motorB.period_ms(8);
     pc.baud(230400);
     pc.printf("Starting %s\r\n",NAME);
     
+    
+    /*
+    wait(1);
+
+    
+    motorB = 1; // 0.6 gets it around quickly enough
+    wait_us(10000);
+    motorB = 0;
+    
+    wait_us(60000);
+    
+    motorA = 0.75;
+    wait_us(5000);
+    motorA = 0;
+    
+    wait_ms(300);
+    
+    motorA = 1;
+    wait_us(50000);
+    motorA = 0;
+    
+    wait_us(45000);
+    
+    motorB = 0.75;
+    wait_us(8000);
+    motorB = 0;
+    
+    
+    //motorB = 0.2;
+    //wait_us(5000);
+    
+    
+    motorB = 0;
+    motorA = 0;
+    // make sure motors are off
+    wait_us(PERIOD);
+    
+    
+    
+    while(1) {}
+    */
+    
     for(int i = 0; i < 86; i++) 
     {
         if(NVIC_GetPriority((IRQn_Type) i) == 0) NVIC_SetPriority((IRQn_Type) i, 2);
     }
     
-    //NVIC_SetPriority(SWI_IRQn,0);
-    
-    //NVIC_SetPriority(Watchdog_IRQn,0);
-    //NVIC_SetPriority(MCM_IRQn,0);
-    //NVIC_SetPriority(PIT0_IRQn,0);
-    //NVIC_SetPriority(PIT1_IRQn,0);
-    //NVIC_SetPriority(PIT2_IRQn,0);
     NVIC_SetPriority(PIT3_IRQn,0);
-    //NVIC_SetPriority(LPTimer_IRQn,0);
     
     NVIC_SetPriority(ADC1_IRQn,0);
     NVIC_SetPriority(ADC0_IRQn,0);
@@ -202,10 +241,6 @@
     //NVIC_SetPriority(TIMER3_IRQn,0);
     //pc.printf("Ticker IRQ: %i\r\n", Sampler.irq());
     
-    // corresponding duty   1  0  0.7 1  0.75 
-    uint32_t duration[8] = {0, 0,  0, 0,  0,  0,  0,  0};
-    
-    double duty_cycle = 0.25;
     
     network::Select select;
     network::tcp::Socket server;
@@ -341,7 +376,9 @@
                             case '1': // run motor and sample
                             {
                                 
-                                
+                                motorA = 1;
+                                wait_us(10000);
+                                motorA = 0;
                                 BW_ADC_SC1n_ADCH(0, 0, kAdcChannel12);      // This corresponds to starting an ADC conversion on channel 12 of ADC 0 - which is A0 (PTB2)
                                 BW_ADC_SC1n_ADCH(1, 0, kAdcChannel14);      // This corresponds to starting an ADC conversion on channel 14 of ADC 1 - which is A2 (PTB10)
                                 client[index].write((void *)"Data\n",5);    
@@ -406,24 +443,7 @@
                                 
                             case '2': // run just the motor
                             {
-                                pc.printf("All duration settings 2:\r\n");
-                                for(int i = 0; i < 8; i++)
-                                {
-                                    pc.printf("Duration[%i]: %i\r\n", i, duration[i]);
-                                    }
                                 
-                                // release mallet
-                                motor.forward(duration[0]); // move motor forward
-                                wait_us(duration[1]); // wait
-                                motor.backward(0.7, duration[2]); // stop motor using reverse
-                                
-                                // time for sampling
-                                wait_us(SAMPLING_RATE*TOTAL_SAMPLES);
-                                
-                                // reset mallet
-                                motor.backward(duration[3]);    // move motor backward
-                                motor.backward(0.75, duration[4]);
-                                motor.backward(duty_cycle, duration[5]);
                                 }
                                 break;
                             case 'a':