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:
35:92b0f1b75a51
Parent:
34:bdf918bc9b59
--- a/setup.cpp	Sat Jul 05 04:11:35 2014 +0000
+++ b/setup.cpp	Mon Jul 07 15:41:20 2014 +0000
@@ -18,7 +18,8 @@
 extern Serial       pc;        // Salida Serial de mbed
 extern Serial       RS_232;    // Salida Serial a  MAX232
 extern QEIHW        encoder;
-extern Timer        crono;     // Cronometro interno del microcontrolador
+extern Timer        cronometro;     // Cronometro interno del microcontrolador
+extern Timeout      temporizador;  //  temporizador para 
 extern DigitalIn    isPC;      // Bit de configuracion serial en la placa
 extern DigitalOut   pin_son;   // SON
 extern DigitalOut   pin_dir;   // SIGN+
@@ -31,14 +32,31 @@
 extern InterruptIn  limite_3;
 extern InterruptIn  limite_4;
 
+extern int bandera_pulsos;  //bandera del contador de PULSOS GENERADOS
+extern int num_pulsos;     //  Numero de pulsos generados
+
+
 int fq_posicion = 10000;  // Variable global donde se almacenara 
                          // la velocidad de posicionamiento en Hz
 float t_alto;           // para el posicionamiento del motor
 
 int fq_actual = 0;    // Ultimo valor seteado para el tren de pulsos
 
-int bandera_inicio = 0;
+int bandera_inicio = 0;   //bandera de ir a inicio HOME
+
  
+
+void posicion_ok()
+{
+    cronometro.stop();
+    stopTimer2(); //Detener tren de pulsos
+    float tiempo_pulsos_generados = cronometro.read_ms();
+    int num_pulsos = (int) (fq_posicion * tiempo_pulsos_generados) / 1000;
+
+    bandera_pulsos = 1;  // En la funcion main() se imprimiran los resultados;
+           
+}
+
 int velocidad_rpm()
 {
     return encoder.GetVelocityCap();
@@ -188,22 +206,18 @@
             
             bandera_inicio = 0;  //En caso que haya estado yendo a HOME, cancelar
 
-            //DEBUG
-            //pc.printf("Tiempo en timer en seg = %f", t_alto);
-            
             stopTimer2();               //Deten el tren de pulsos
             setPTO( fq_posicion );      //Nueva frecuencia de salida
-            startTimer2();              //Inicia el tren de pulsos
-            wait( t_alto );             //Espera hasta llegar a la posicion
-            stopTimer2();               //Posicion alcanzada ALTO. 
             
+            pc.printf("\n\nattach funcion: %f ", t_alto);
 
-            // Envia un OK de comando recibido
-                if( isPC )
-                    pc.printf("OK\r\n");
-                else
-                    RS_232.printf("OK\r\n");
+            temporizador.attach( &posicion_ok, t_alto );
+            cronometro.start();
             
+            startTimer2();              //Inicia el tren de pulsos
+                                       // termina cuando el timeout detiene
+
+            pc.printf("\n\nCorriendo ");
 
             break;
         }