Version 1

Revision:
5:8269e635183f
Parent:
4:bdd445879de2
Child:
6:d881a556eb9a
--- a/main.cpp	Thu Mar 16 12:20:01 2017 +0000
+++ b/main.cpp	Thu Mar 16 12:55:44 2017 +0000
@@ -44,6 +44,8 @@
 volatile float dutyCycle;
 volatile float targetSpeed;
 
+volatile float timeMap[] = {0.0 , 0.0 , 0.0 , 0.0 , 0.0 , 0.0 };
+
 //Status LED
 DigitalOut led1(LED1);
 DigitalOut led2 (LED2);
@@ -51,6 +53,9 @@
 
 //Photointerrupter inputs
 InterruptIn I1intr(I1pin);
+InterruptIn I2intr(I2pin);
+InterruptIn I3intr(I3pin);
+
 DigitalIn I1(I1pin);
 DigitalIn I2(I2pin);
 DigitalIn I3(I3pin);
@@ -93,8 +98,8 @@
     led3 = !led3;
     float speedTime;
     speedTime = t.read();
-    revPerMin = 1.0/(speedTime - revTime);
-    revTime = speedTime;
+    revPerMin = 1.0/(speedTime - timeMap[I1 + 2*I2 + 4*I3]);
+    timeMap[I1 + 2*I2 + 4*I3] = speedTime;
 }   
 
 void controlLoop(void){
@@ -161,7 +166,7 @@
     int8_t intState = 0;
     int8_t intStateOld = 0;
     float per = 0.02f; 
-    targetSpeed = 10.0;
+    targetSpeed = 3.0;
     
     L1L.period(per);
     L1H.period(per);
@@ -178,7 +183,15 @@
     //th2.set_priority(osPriorityRealtime);
     //th1.start(blinkLED2);
     //th2.start(blinkLED3);
+    
+    //define interrupts
     I1intr.rise(&mesRot); //start photoInterrupt
+    I2intr.rise(&mesRot);
+    I3intr.rise(&mesRot);
+    I1intr.fall(&mesRot);
+    I2intr.fall(&mesRot);
+    I3intr.fall(&mesRot);
+    
     controlLoopThread.start(controlLoop);  //start conrol unit thread
     t.start();
     //tick.attach(&decrease, 10);
@@ -189,10 +202,10 @@
              char buffer[128];
         
                 pc.gets(buffer, 6);
-                dutyCycle = atof(buffer);
-                 pc.printf("I got '%s'\n\r", buffer); 
-                 pc.printf("Also in float '%f'\n\r", dutyCycle); 
-                 orState = motorHome();
+                targetSpeed = atof(buffer);
+                pc.printf("I got '%s'\n\r", buffer); 
+                pc.printf("Also in float '%f'\n\r", targetSpeed); 
+                orState = motorHome();
             }
         
         if (intState != intStateOld) {