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

Dependencies:   EthernetNetIf HTTPServer QEI_hw RPCInterface mbed

Committer:
Yo_Robot
Date:
Mon Jul 02 04:35:28 2012 +0000
Revision:
22:d5431fff164b
Parent:
21:353b0fe8fc54
Child:
23:2126e38bb48c
v1.9.9 Encoder escrito en cdigo, falta probar en la proto

Who changed what in which revision?

UserRevisionLine numberNew contents of line
Yo_Robot 20:4b154134ab20 1 /*******************************************************************\
Yo_Robot 20:4b154134ab20 2 * *
Yo_Robot 20:4b154134ab20 3 * DESLIZADOR LINEAL UTN *
Yo_Robot 20:4b154134ab20 4 * *
Yo_Robot 20:4b154134ab20 5 * Archivo: main.cpp *
Yo_Robot 20:4b154134ab20 6 * Autor: Ernesto Palacios <meacatronica.mid@gmail.com> *
Yo_Robot 22:d5431fff164b 7 * Version: v2.2 *
Yo_Robot 20:4b154134ab20 8 * Dependencias: setup.h, setup.cpp *
Yo_Robot 22:d5431fff164b 9 * Descripcion: Este es el archivo principal para el microcon- *
Yo_Robot 21:353b0fe8fc54 10 * trolador mbed para la comunicaci�n y control *
Yo_Robot 20:4b154134ab20 11 * del deslizador *
Yo_Robot 20:4b154134ab20 12 * Fecha: Ibarra, 05 de junio de 2012 *
Yo_Robot 20:4b154134ab20 13 * *
Yo_Robot 20:4b154134ab20 14 *******************************************************************/
Yo_Robot 3:8d5a9e3cd680 15
Yo_Robot 3:8d5a9e3cd680 16 #include "mbed.h"
Yo_Robot 3:8d5a9e3cd680 17 #include "setup.h"
Yo_Robot 8:958dfe5052b9 18 #include "EthernetNetIf.h"
Yo_Robot 8:958dfe5052b9 19 #include "HTTPServer.h"
Yo_Robot 8:958dfe5052b9 20 #include "RPCFunction.h"
Yo_Robot 8:958dfe5052b9 21 #include "RPCVariable.h"
Yo_Robot 20:4b154134ab20 22
Yo_Robot 21:353b0fe8fc54 23 // Configuración de Entradas / Salidas
Yo_Robot 9:6976ac1a430e 24
Yo_Robot 18:cf1e07d82630 25 Serial pc( USBTX, USBRX ); //Comunicacion Serial directa al computador
Yo_Robot 18:cf1e07d82630 26 Serial RS_232(p9, p10); //Comunicacion Serial para MAX232
Yo_Robot 22:d5431fff164b 27 I2C encoder(p28, p27, "i2c_mbed"); //Comunicacion I2C para los encoders
Yo_Robot 18:cf1e07d82630 28
Yo_Robot 18:cf1e07d82630 29 DigitalOut pin_son( p7 ); // SON
Yo_Robot 18:cf1e07d82630 30 DigitalOut pin_dir( p26 ); // SIGN+
Yo_Robot 18:cf1e07d82630 31 InterruptIn pin_alm( p8 ); // ALM
Yo_Robot 20:4b154134ab20 32 AnalogOut aout( p18 ); // VOUT
Yo_Robot 9:6976ac1a430e 33
Yo_Robot 16:d50665706f21 34 DigitalIn isHTTP( p15 ); // Modo Ethernet/Serial
Yo_Robot 16:d50665706f21 35 DigitalIn isFast( p16 ); // Serial Alta velocidad/Baja Velocidad
Yo_Robot 18:cf1e07d82630 36 DigitalIn isPC ( p17 ); // Salida a compuador o MAX232
Yo_Robot 18:cf1e07d82630 37
Yo_Robot 19:c26cf8a48986 38 DigitalOut led_verde( p21 ); // Led verde del conector Ethernet
Yo_Robot 19:c26cf8a48986 39 DigitalOut led_rojo( p22 ); // Led naranja del conector Ethernet
Yo_Robot 19:c26cf8a48986 40
Yo_Robot 20:4b154134ab20 41 // Objetos Ethernet
Yo_Robot 18:cf1e07d82630 42
Yo_Robot 18:cf1e07d82630 43 EthernetNetIf eth;
Yo_Robot 18:cf1e07d82630 44 HTTPServer svr;
Yo_Robot 17:a4f380bc2516 45 LocalFileSystem fs("local");
Yo_Robot 5:c5aea1eb10bb 46
Yo_Robot 8:958dfe5052b9 47
Yo_Robot 20:4b154134ab20 48 // Anadir funciones al Protocolo RPC:
Yo_Robot 20:4b154134ab20 49 //
Yo_Robot 20:4b154134ab20 50 // estas son las funciones de acceso de la libreria HTTP_ASM sobre
Yo_Robot 20:4b154134ab20 51 // el Protocolo RPC
Yo_Robot 12:c02b08dacc45 52 RPCFunction SetFQ (&setPTO_eth, "PTO");
Yo_Robot 12:c02b08dacc45 53 RPCFunction SetAOUT(&setAout_eth, "AOUT");
Yo_Robot 12:c02b08dacc45 54 RPCFunction SetDIR (&setDir_eth, "DIR");
Yo_Robot 12:c02b08dacc45 55 RPCFunction SetSON (&setSON_eth, "SON");
Yo_Robot 16:d50665706f21 56 RPCFunction SetANG (&setANG_eth, "ANG");
Yo_Robot 16:d50665706f21 57 RPCFunction SetSpd (&setSPD_eth, "VAN");
Yo_Robot 22:d5431fff164b 58 RPCFunction ReadEnc(&getENC_eth, "ENC");
Yo_Robot 22:d5431fff164b 59 RPCFunction ClrEnc (&setENC_eth, "CLR");
Yo_Robot 8:958dfe5052b9 60
Yo_Robot 3:8d5a9e3cd680 61
Yo_Robot 3:8d5a9e3cd680 62 int main() {
Yo_Robot 20:4b154134ab20 63 //*************** Configura Red Ethernet **************************************************//
Yo_Robot 20:4b154134ab20 64 if( isHTTP )
Yo_Robot 13:649543aa8b1d 65 {
Yo_Robot 20:4b154134ab20 66
Yo_Robot 22:d5431fff164b 67 // Anade clases base al protocolo RPC
Yo_Robot 13:649543aa8b1d 68 Base::add_rpc_class<AnalogIn>();
Yo_Robot 13:649543aa8b1d 69 Base::add_rpc_class<AnalogOut>();
Yo_Robot 13:649543aa8b1d 70 Base::add_rpc_class<DigitalIn>();
Yo_Robot 13:649543aa8b1d 71 Base::add_rpc_class<DigitalOut>();
Yo_Robot 13:649543aa8b1d 72 Base::add_rpc_class<DigitalInOut>();
Yo_Robot 13:649543aa8b1d 73 Base::add_rpc_class<PwmOut>();
Yo_Robot 13:649543aa8b1d 74 Base::add_rpc_class<Timer>();
Yo_Robot 13:649543aa8b1d 75 Base::add_rpc_class<BusOut>();
Yo_Robot 13:649543aa8b1d 76 Base::add_rpc_class<BusIn>();
Yo_Robot 13:649543aa8b1d 77 Base::add_rpc_class<BusInOut>();
Yo_Robot 13:649543aa8b1d 78 Base::add_rpc_class<Serial>();
Yo_Robot 17:a4f380bc2516 79
Yo_Robot 22:d5431fff164b 80 // Configura conexion Ethernet
Yo_Robot 19:c26cf8a48986 81 printf("Configurando...\n");
Yo_Robot 18:cf1e07d82630 82 EthernetErr ethErr = eth.setup();
Yo_Robot 18:cf1e07d82630 83 if(ethErr)
Yo_Robot 13:649543aa8b1d 84 {
Yo_Robot 21:353b0fe8fc54 85 printf("Error %d en la configuracion.\n", ethErr);
Yo_Robot 18:cf1e07d82630 86 return -1;
Yo_Robot 18:cf1e07d82630 87 }
Yo_Robot 18:cf1e07d82630 88 printf("Setup OK\n");
Yo_Robot 18:cf1e07d82630 89
Yo_Robot 18:cf1e07d82630 90 FSHandler::mount("/local", "/files"); //Monta /local en /files que es el directorio web
Yo_Robot 18:cf1e07d82630 91 FSHandler::mount("/local", "/"); //Mount /local en / que es el directorio raiz
Yo_Robot 13:649543aa8b1d 92
Yo_Robot 18:cf1e07d82630 93 //Handles para la comunicacion
Yo_Robot 13:649543aa8b1d 94 svr.addHandler<SimpleHandler>("/hello");
Yo_Robot 13:649543aa8b1d 95 svr.addHandler<RPCHandler>("/rpc");
Yo_Robot 13:649543aa8b1d 96 svr.addHandler<FSHandler>("/files");
Yo_Robot 18:cf1e07d82630 97 svr.addHandler<FSHandler>("/");
Yo_Robot 18:cf1e07d82630 98
Yo_Robot 18:cf1e07d82630 99 svr.bind(80); // Puerto de comunicacion.
Yo_Robot 18:cf1e07d82630 100
Yo_Robot 18:cf1e07d82630 101 printf("Listo para comunicacion...\n");
Yo_Robot 13:649543aa8b1d 102
Yo_Robot 18:cf1e07d82630 103 // Para probar la correcta configuracion acceder a mbed.htm
Yo_Robot 18:cf1e07d82630 104 // http://a.b.c.d/mbed.htm or http://a.b.c.d/files/mbed.htm
Yo_Robot 18:cf1e07d82630 105
Yo_Robot 13:649543aa8b1d 106 }
Yo_Robot 20:4b154134ab20 107
Yo_Robot 20:4b154134ab20 108
Yo_Robot 20:4b154134ab20 109 //*************** Configura Comunicacion Serial **************************************************//
Yo_Robot 15:a1ffa32ce9d1 110 else // Caso Contrario Anadir modo Serial
Yo_Robot 8:958dfe5052b9 111 {
Yo_Robot 22:d5431fff164b 112 int fast_baud = getBaud();
Yo_Robot 20:4b154134ab20 113 if( isPC ) // Utiliza el Puerto Virtual Incluido.
Yo_Robot 19:c26cf8a48986 114 {
Yo_Robot 19:c26cf8a48986 115 pc.attach( &ISR_Serial );
Yo_Robot 20:4b154134ab20 116
Yo_Robot 20:4b154134ab20 117 if( isFast ) //Configurar Serial a alta velocidad
Yo_Robot 21:353b0fe8fc54 118 pc.baud( fast_baud );
Yo_Robot 19:c26cf8a48986 119 }
Yo_Robot 20:4b154134ab20 120 else // Utiiliza el puerto serial hacia MAX232
Yo_Robot 19:c26cf8a48986 121 {
Yo_Robot 19:c26cf8a48986 122 RS_232.attach( &ISR_Serial );
Yo_Robot 20:4b154134ab20 123 if( isFast ) //Configurar Serial a alta velocidad
Yo_Robot 21:353b0fe8fc54 124 RS_232.baud( fast_baud );
Yo_Robot 19:c26cf8a48986 125 }
Yo_Robot 8:958dfe5052b9 126 }
Yo_Robot 8:958dfe5052b9 127
Yo_Robot 20:4b154134ab20 128 //*******************************************************************************************************//
Yo_Robot 20:4b154134ab20 129
Yo_Robot 20:4b154134ab20 130
Yo_Robot 17:a4f380bc2516 131 // Ajustes iniciales del Driver
Yo_Robot 20:4b154134ab20 132 setTimer2(); // Configurar PTO
Yo_Robot 20:4b154134ab20 133 pin_son = 0; // Servo Apagado por defecto
Yo_Robot 13:649543aa8b1d 134 aout = 0.5; // Voltaje de salida 0V por defecto( +-10V! )
Yo_Robot 8:958dfe5052b9 135
Yo_Robot 21:353b0fe8fc54 136
Yo_Robot 21:353b0fe8fc54 137 pin_alm.fall( &ISR_Alarm ); // Entrada de la alarma driver
Yo_Robot 14:039d070732d5 138
Yo_Robot 13:649543aa8b1d 139 while(1)
Yo_Robot 13:649543aa8b1d 140 {
Yo_Robot 13:649543aa8b1d 141 if( isHTTP )
Yo_Robot 15:a1ffa32ce9d1 142 Net::poll(); // Revisa la red solo si la coneccion es HTTP
Yo_Robot 13:649543aa8b1d 143 }
Yo_Robot 8:958dfe5052b9 144 }
Yo_Robot 8:958dfe5052b9 145