Rotork Research Team / Mbed 2 deprecated TFM_Encoder

Dependencies:   mbed QEI

Revision:
4:3aedc9246ae4
Parent:
3:4249dbdf7ed3
Child:
5:4e5c644d5cc3
diff -r 4249dbdf7ed3 -r 3aedc9246ae4 main.cpp
--- a/main.cpp	Wed Nov 14 09:58:13 2018 +0000
+++ b/main.cpp	Wed Nov 14 15:18:12 2018 +0000
@@ -11,6 +11,7 @@
 void Ph34 (void);
 void Ph4(void);
 void Ph41 (void);
+void GetChar (void);
 
 Serial pc(USBTX, USBRX); // tx, rx - set up the Terraterm input from mbed
 
@@ -24,6 +25,7 @@
 DigitalOut      Phase4                 (p24);
 
 DigitalIn       Button1                 (p11);
+DigitalIn       Button2                 (p12);
 
 DigitalOut      led1(LED1);
 DigitalOut      led2(LED2);
@@ -37,6 +39,8 @@
 int RPS = 0;
 int RPM = 0;
 
+char c;
+
 float x=0.05, y=0.02, z=1;   //x=time of square wave when 1 phase energised, y=time of square wave when 2 phases energised
 
 int main(void) 
@@ -46,7 +50,7 @@
     Initialisation();
     wait(0.1);
     t.start();
-    
+        
 while(wheel.getRevolutions()==0)
     {    
     switch(StateA)
@@ -71,17 +75,59 @@
             StateA=0;
             }
         } 
-    }        
+}        
         
  while(1)
- {       
-        while(wheel.getRevolutions()>0 && wheel.getPulses()>0)
+ { 
+        while((led1 == 0) && (led2 == 0))
+        {
+            GetChar();
+        }
+        while((wheel.getRevolutions()>0) && (wheel.getPulses()>0) && (led1==1))
         {
-        StateB = (wheel.getPulses())%16;
-        //pc.printf("StateA= %i\n\r", StateA);
-        pc.printf("1 StateB= %i, Pulses= %i, Revs= %i\r", StateB,wheel.getPulses(),wheel.getRevolutions());
-        //pc.printf("",);
-       // pc.printf("",);
+            GetChar();
+            StateB = (wheel.getPulses())%16;
+            //pc.printf("1 StateB= %i, Pulses= %i, Revs= %i\r", StateB,wheel.getPulses(),wheel.getRevolutions());
+            
+            switch(StateB)
+            {
+            case 0:Ph3();break;
+            case 1:Ph3();break;
+            case 2:Ph34();break;
+            case 3:Ph34();break;
+            case 4:Ph4();break;
+            case 5:Ph4();break;
+            case 6:Ph41();break;
+            case 7:Ph41();break;
+            case 8:Ph1();break;
+            case 9:Ph1();break;
+            case 10:Ph12();break;
+            case 11:Ph12();break;
+            case 12:Ph2();break;
+            case 13:Ph2();break;
+            case 14:Ph23();break;
+            case 15:Ph23();break;
+            default:break; 
+            } 
+        
+            if(wheel.getYay()==1)
+            {
+                wheel.ResetYay();
+                TimePerClick = (t.read_us());  
+                t.reset();
+                TimePerRev = TimePerClick * 400;
+                TimePerRev = TimePerRev / 1000;
+                RPS = 10000000 / TimePerRev;
+                RPM = (RPS * 60)/10000;
+                pc.printf("RPM = %d\n\r", RPM);
+            }  
+        }
+    
+        while(wheel.getRevolutions()>0 && wheel.getPulses()<1 && (led1==1))
+        {
+            GetChar();
+            StateB = (800+wheel.getPulses())%16;
+            //pc.printf("2 StateB= %i, Pulses= %i, Revs= %i\r", StateB,wheel.getPulses(),wheel.getRevolutions());
             
             switch(StateB)
             {
@@ -105,7 +151,7 @@
             } 
         
         if(wheel.getYay()==1)
-            {
+        {
             wheel.ResetYay();
             TimePerClick = (t.read_us());  
             t.reset();
@@ -113,51 +159,8 @@
             TimePerRev = TimePerRev / 1000;
             RPS = 10000000 / TimePerRev;
             RPM = (RPS * 60)/10000;
-            //pc.printf("RPM = %d\n\r", RPM);
-            }    
-        }
-    
-    
-    while(wheel.getRevolutions()>0 && wheel.getPulses()<1)
-        {
-        StateB = (800+wheel.getPulses())%16;
-        //pc.printf("StateA= %i\n\r", StateA);
-        pc.printf("2 StateB= %i, Pulses= %i, Revs= %i\r", StateB,wheel.getPulses(),wheel.getRevolutions());
-        //pc.printf("",);
-       // pc.printf("",);
-            
-            switch(StateB)
-            {
-            case 0:Ph3();break;
-            case 1:Ph3();break;
-            case 2:Ph34();break;
-            case 3:Ph34();break;
-            case 4:Ph4();break;
-            case 5:Ph4();break;
-            case 6:Ph41();break;
-            case 7:Ph41();break;
-            case 8:Ph1();break;
-            case 9:Ph1();break;
-            case 10:Ph12();break;
-            case 11:Ph12();break;
-            case 12:Ph2();break;
-            case 13:Ph2();break;
-            case 14:Ph23();break;
-            case 15:Ph23();break;
-            default:break; 
-            } 
-        
-        if(wheel.getYay()==1)
-            {
-            wheel.ResetYay();
-            TimePerClick = (t.read_us());  
-            t.reset();
-            TimePerRev = TimePerClick * 400;
-            TimePerRev = TimePerRev / 1000;
-            RPS = 10000000 / TimePerRev;
-            RPM = (RPS * 60)/10000;
-            //pc.printf("RPM = %d\n\r", RPM);
-              }    
+            pc.printf("RPM = %d\n\r", RPM);
+              }  
         }
     
     }
@@ -253,6 +256,21 @@
     led3 = 0;
     led4 = 0;
     wheel.ResetYay();
-    
-
+}
+   
+void GetChar (void)
+{    if (pc.readable())   
+        {
+            c = pc.getc();
+            if(c == 'z')  
+            {
+                led1 = !led1;
+                led2 = 0;
+            }
+            if(c == 'x')  
+            {
+                led1 = 0;
+                led2 = !led2 ;
+            }
+        }
 }
\ No newline at end of file