Proyecto de Tesis en Mecatrónica. Universidad Técnica del Norte. Ernesto Palacios <mecatronica.mid@gmail.com>

Dependencies:   EthernetNetIf HTTPServer QEI_hw RPCInterface mbed

Revision:
26:dad0b2031173
Parent:
25:1910a55ff0a3
Child:
27:b8254b76ec57
--- a/setup.cpp	Thu Apr 11 04:31:37 2013 +0000
+++ b/setup.cpp	Sun Dec 29 21:47:15 2013 +0000
@@ -32,7 +32,7 @@
                          // la velocidad de posicionamiento en Hz
 float t_alto;           // para el posicionamiento del motor
 
-const int addres = 0x36;  // Direccion del enconder en modo esclavo
+int fq_actual = 0;    // Ultimo valor seteado para el tren de pulsos
 
 int read_encoder()
 {
@@ -107,38 +107,79 @@
             //  ------  * -------- * ------ * ---------- = -------- 
             //    ms         1s       1min     360 grad     3   Min
             
-            if( isPC )
-                pc.printf("%f", rpm);
-            else
-                RS_232.printf("%f", rpm);
+                if( isPC )
+                    pc.printf("%f", rpm);
+                else
+                    RS_232.printf("%f", rpm);
             break;
         }
         case 'H':                        // Establecer nueva frecuencia
         {
             setPTO( value );
+            fq_actual = value;
+                
+            // Envia un OK de comando recibido
+                if( isPC )
+                    pc.printf("OK\r\n");
+                else
+                    RS_232.printf("OK\r\n");
+
             break;
         }
         case 'K':
         {
             setPTO( value * 1000 );
+            fq_actual = value;
+            // Envia un OK de comando recibido
+                if( isPC )
+                    pc.printf("OK\r\n");
+                else
+                    RS_232.printf("OK\r\n");
+
             break;
         }
         case 'A':                       // Cambiar voltaje de salida
         {
             aout = (float)( value + 10000.0 ) / 20000.0;
+            
+            // Envia un OK de comando recibido
+                if( isPC )
+                    pc.printf("OK\r\n");
+                else
+                    RS_232.printf("OK\r\n");
+            
             break;
         }
         case 'D':                       // Cambiar la direccion
         {
+                
             stopTimer2();
             pin_dir = value;
             wait_us( 2 );
-            startTimer2();
+
+            if ( fq_actual != 0 )
+            {
+                startTimer2();
+            }
+            
+            // Envia un OK de comando recibido
+                if( isPC )
+                    pc.printf("OK\r\n");
+                else
+                    RS_232.printf("OK\r\n");
+            
             break;
         }
         case 'V':                   //Setear la velocidad de Posicionamiento 
         {
             fq_posicion = value;
+            
+            // Envia un OK de comando recibido
+                if( isPC )
+                    pc.printf("OK\r\n");
+                else
+                    RS_232.printf("OK\r\n");
+            
             break;
         }
             // Generar un numero definido de pulsos a la velocidad de posicionamiento  
@@ -152,6 +193,15 @@
             startTimer2();              //Inicia el tren de pulsos
             wait( t_alto );             //Espera hasta llegar a la posicion
             stopTimer2();               //Posicion alcanzada ALTO. 
+            
+
+            // Envia un OK de comando recibido
+                if( isPC )
+                    pc.printf("OK\r\n");
+                else
+                    RS_232.printf("OK\r\n");
+            
+
             break;
         }
         case 'E':                       //Leer posicion angular relativa del encoder
@@ -162,12 +212,28 @@
                 RS_232.printf( "%d",read_encoder() );
             break;
         }
+
         case 'Z':           //Limpiar contador encoder
             clear_encoder();
+            
+            // Envia un OK de comando recibido
+                if( isPC )
+                    pc.printf("OK\r\n");
+                else
+                    RS_232.printf("OK\r\n");
+
             break;
 
         case 'S':               //Encender el Servo
+
             pin_son = value;
+
+            // Envia un OK de comando recibido
+                if( isPC )
+                    pc.printf("OK\r\n");
+                else
+                    RS_232.printf("OK\r\n");
+
             break;
     }
          
@@ -198,11 +264,11 @@
     aout =  0.5 ;
  
     if(isPC)
-        pc.printf( "AL" ); //ALARMA! solo es AL para que 
+        pc.printf( "AL\r\n" ); //ALARMA! solo es AL para que 
                           //sea conciso con el modo ETH y funcione
                          //bien en LabVIEW.
     else
-        RS_232.printf( "AL" );
+        RS_232.printf( "AL\r\n" );
 }
 
 int getMRvalue( int fout  )
@@ -291,14 +357,14 @@
         setMR2( getMRvalue( freq ) );  // Cambiar frefuencia
         startTimer2();                // Iniciar Timer
         if( pin_alm == 0 )
-            sprintf( output,"Ok" );
+            sprintf( output,"OK\r\n" );
         else
             sprintf( output,"AL" );    
     }else{
         stopTimer2();
         LPC_TIM2->TC = 0x00;  // Resetear Timer
         if( pin_alm == 0 )
-            sprintf( output,"Ok" );
+            sprintf( output,"OK\r\n" );
         else
             sprintf( output,"AL" );
     }           
@@ -316,7 +382,7 @@
     stopTimer2();               //Posicion alcanzada ALTO. 
     
     if( pin_alm == 0 )
-        sprintf( output,"Ok" );
+        sprintf( output,"OK\r\n" );
     else
         sprintf( output,"AL" );    
     
@@ -329,7 +395,7 @@
     // Esta funcion cambia la velocidad con la que se
     // posicionara el eje del motor en un angulo determinado
     if( pin_alm == 0 )
-        sprintf( output,"Ok" );
+        sprintf( output,"OK\r\n" );
     else
         sprintf( output,"AL" );    
         
@@ -340,7 +406,7 @@
     int    vout = atoi( input );
     aout = (float)( vout + 10000 ) / 20000;   
     if( pin_alm == 0 )
-        sprintf( output,"Ok" );
+        sprintf( output,"OK\r\n" );
     else
         sprintf( output,"AL" );
 }
@@ -354,7 +420,7 @@
     pin_dir = value;
     
     if( pin_alm == 0 )
-        sprintf( output,"Ok" );
+        sprintf( output,"OK\r\n" );
     else
         sprintf( output,"AL" );
 }
@@ -368,7 +434,7 @@
     pin_son = value;
     
     if( pin_alm == 0 )
-        sprintf( output,"Ok" );
+        sprintf( output,"OK\r\n" );
     else
         sprintf( output,"AL" );
         
@@ -389,7 +455,7 @@
     clear_encoder();
     
     if( pin_alm == 0 )
-        sprintf( output,"Ok" );
+        sprintf( output,"OK\r\n" );
     else
         sprintf( output,"AL" );
     
@@ -397,7 +463,6 @@
 
 void getRPM_eth( char * input, char * output )
 {
-    int ang = 0;
     float rpm;
     
     rpm = encoder.CalculateRPM( encoder.GetVelocityCap() ,   // ultima velocidad leida desde el encoder
@@ -406,7 +471,7 @@
                          
     
     if( pin_alm == 0 )
-        sprintf( output,"Ok" );
+        sprintf( output,"OK\r\n" );
     else
         sprintf( output,"%f", rpm );