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:
25:1910a55ff0a3
Parent:
24:a1d16835201c
Child:
26:dad0b2031173
--- a/setup.cpp	Thu Apr 11 04:12:57 2013 +0000
+++ b/setup.cpp	Thu Apr 11 04:31:37 2013 +0000
@@ -9,14 +9,16 @@
  * http://www.gnu.org/licenses/gpl-3.0.html
  */
 
-
+#include "mbed.h"
+#include "qeihw.h"
 #include "setup.h"
 #include "EthernetNetIf.h"
-#include "mbed.h"
+
 
 extern Serial       pc;        // Salida Serial de mbed
 extern Serial       RS_232;    // Salida Serial a  MAX232
-extern I2C          encoder;   // Comunicacion I2C con encoder
+//extern I2C          encoder;   // Comunicacion I2C con encoder
+extern QEIHW        encoder;
 extern Timer        crono;     // Cronometro interno del microcontrolador
 extern DigitalIn    isPC;      // Bit de configuracion serial en la placa
 extern DigitalOut   pin_son;   // SON
@@ -34,48 +36,12 @@
 
 int read_encoder()
 {
-    int  count = 0;
-    int  temp = 0;
-    
-    char w_1 [2], r_1 [2];
-    char w_2 [2], r_2 [2];
-    char w_3 [2], r_3 [2];
-    char w_4 [2], r_4 [2];
-    
-    w_1[0] = 0x10;      // Leer byte 0 del contador
-    w_2[0] = 0x11;     //  Leer byte 1 del contador
-    w_3[0] = 0x12;    //   Leer byte 2 del contador
-    w_4[0] = 0x13;   //    Leer byte 3 del contador
-    
-    encoder.write( addres, w_1,1 );
-    encoder.read( addres, r_1, 1 ); 
-    
-    encoder.write( addres, w_2,1 );
-    encoder.read ( addres, r_2, 1 ); 
-    
-    encoder.write( addres, w_3,1 );
-    encoder.read ( addres, r_3, 1 ); 
-    
-    encoder.write( addres, w_4,1 );
-    encoder.read( addres, r_4, 1 ); 
-        
-    count  = r_1[0];            //  Asignar el byte 0
-    temp = r_2[0];      
-    count |= temp << 8;       //   Asignar el byte 1
-    temp = r_3[0];
-    count |= temp << 16;    //   Asignarl el byte 2
-    temp = r_4[0];        
-    count |= temp << 24;  //   Asignar el byte 3
-  
-    return count;
+    return encoder.GetPosition();
 }
 
 void clear_encoder()
 {
-    char buffer[2];
-    buffer[0] = 0x01;  //Comando para borrar el contador
-    encoder.write( addres, buffer, 1 );
-    encoder.stop();
+    encoder.Reset( QEI_RESET_POS );  // reset position
 }
 
 void setTimer2()
@@ -434,18 +400,10 @@
     int ang = 0;
     float rpm;
     
-    clear_encoder();                  // Encerar encoder
-    crono.reset();                   // Encerar el cronometro;
-    
-    while( ang == 0 )              // Esperar hasta q exista lectura del encoder
-        ang = read_encoder();     // Leer nueva posicion
-        
-    crono.stop();               // detener cronometro
-    rpm = ( ang * 500 ) / (crono.read_ms() * 3 );
-    
-    //  grados      1000 ms    60 s     1 Rev       500  Rev
-    //  ------   = -------- * ------ * ---------- = -------- 
-    //    ms          1s       1min     360 grad     3   Min
+    rpm = encoder.CalculateRPM( encoder.GetVelocityCap() ,   // ultima velocidad leida desde el encoder
+                          360                          // numero de revoluciones por vuelta del encoder
+                         );  
+                         
     
     if( pin_alm == 0 )
         sprintf( output,"Ok" );