Proyecto de Tesis en Mecatrónica. Universidad Técnica del Norte. Ernesto Palacios <mecatronica.mid@gmail.com>
Dependencies: EthernetNetIf HTTPServer QEI_hw RPCInterface mbed
Diff: setup.cpp
- 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; }