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:
Sat Jul 05 04:11:35 2014 +0000
Revision:
34:bdf918bc9b59
Parent:
33:e6ff02c3e0f5
Child:
35:92b0f1b75a51
Child:
36:a99dcd4d8f65
Child:
37:20f4a737cc13
Aumentada una funcion para consultar alarma en ethernet, aun falta la solucion para la posici?n

Who changed what in which revision?

UserRevisionLine numberNew contents of line
Yo_Robot 4:552beeda4722 1 /**
Yo_Robot 4:552beeda4722 2 * @file setup.cpp
Yo_Robot 4:552beeda4722 3 * @author Ernesto Palacios
Yo_Robot 20:4b154134ab20 4 * @brief Codigo Fuente de las funciones para el deslizador.
Yo_Robot 4:552beeda4722 5 *
Yo_Robot 4:552beeda4722 6 * Created on 25 de Marzo de 2012
Yo_Robot 4:552beeda4722 7 *
Yo_Robot 4:552beeda4722 8 * Licencia GPL v3.0
Yo_Robot 4:552beeda4722 9 * http://www.gnu.org/licenses/gpl-3.0.html
Yo_Robot 4:552beeda4722 10 */
Yo_Robot 4:552beeda4722 11
Yo_Robot 25:1910a55ff0a3 12 #include "mbed.h"
Yo_Robot 25:1910a55ff0a3 13 #include "qeihw.h"
Yo_Robot 3:8d5a9e3cd680 14 #include "setup.h"
Yo_Robot 18:cf1e07d82630 15 #include "EthernetNetIf.h"
Yo_Robot 25:1910a55ff0a3 16
Yo_Robot 3:8d5a9e3cd680 17
Yo_Robot 24:a1d16835201c 18 extern Serial pc; // Salida Serial de mbed
Yo_Robot 24:a1d16835201c 19 extern Serial RS_232; // Salida Serial a MAX232
Yo_Robot 25:1910a55ff0a3 20 extern QEIHW encoder;
Yo_Robot 24:a1d16835201c 21 extern Timer crono; // Cronometro interno del microcontrolador
Yo_Robot 24:a1d16835201c 22 extern DigitalIn isPC; // Bit de configuracion serial en la placa
Yo_Robot 12:c02b08dacc45 23 extern DigitalOut pin_son; // SON
Yo_Robot 12:c02b08dacc45 24 extern DigitalOut pin_dir; // SIGN+
Yo_Robot 12:c02b08dacc45 25 extern InterruptIn pin_alm; // ALM
Yo_Robot 12:c02b08dacc45 26 extern AnalogOut aout; // +-10V
Yo_Robot 22:d5431fff164b 27 extern DigitalOut led_verde; // Led verde del conector Ethernet
Yo_Robot 24:a1d16835201c 28 extern DigitalOut led_rojo; // Led naranja del conector Ethernet
Yo_Robot 30:413d1a6648b5 29 extern InterruptIn limite_1;
Yo_Robot 30:413d1a6648b5 30 extern InterruptIn limite_2;
Yo_Robot 30:413d1a6648b5 31 extern InterruptIn limite_3;
Yo_Robot 30:413d1a6648b5 32 extern InterruptIn limite_4;
Yo_Robot 20:4b154134ab20 33
Yo_Robot 15:a1ffa32ce9d1 34 int fq_posicion = 10000; // Variable global donde se almacenara
Yo_Robot 15:a1ffa32ce9d1 35 // la velocidad de posicionamiento en Hz
Yo_Robot 24:a1d16835201c 36 float t_alto; // para el posicionamiento del motor
Yo_Robot 23:2126e38bb48c 37
Yo_Robot 26:dad0b2031173 38 int fq_actual = 0; // Ultimo valor seteado para el tren de pulsos
Yo_Robot 22:d5431fff164b 39
Yo_Robot 32:4483d6c225e5 40 int bandera_inicio = 0;
Yo_Robot 33:e6ff02c3e0f5 41
Yo_Robot 29:52932326c45a 42 int velocidad_rpm()
Yo_Robot 22:d5431fff164b 43 {
Yo_Robot 33:e6ff02c3e0f5 44 return encoder.GetVelocityCap();
Yo_Robot 22:d5431fff164b 45 }
Yo_Robot 22:d5431fff164b 46
Yo_Robot 22:d5431fff164b 47 void clear_encoder()
Yo_Robot 22:d5431fff164b 48 {
Yo_Robot 25:1910a55ff0a3 49 encoder.Reset( QEI_RESET_POS ); // reset position
Yo_Robot 22:d5431fff164b 50 }
Yo_Robot 22:d5431fff164b 51
Yo_Robot 4:552beeda4722 52 void setTimer2()
Yo_Robot 3:8d5a9e3cd680 53 {
Yo_Robot 3:8d5a9e3cd680 54 // Encender Timer2 (PCONP[22])
Yo_Robot 3:8d5a9e3cd680 55 LPC_SC->PCONP |= 1 << 22;
Yo_Robot 3:8d5a9e3cd680 56
Yo_Robot 3:8d5a9e3cd680 57 // Resetear y parar el Timer
Yo_Robot 3:8d5a9e3cd680 58 LPC_TIM2->TCR = 0x2;
Yo_Robot 3:8d5a9e3cd680 59 LPC_TIM2->CTCR = 0x0;
Yo_Robot 3:8d5a9e3cd680 60
Yo_Robot 4:552beeda4722 61 // Establecer el Preescaler en cero
Yo_Robot 4:552beeda4722 62 // SIn Preesclaer
Yo_Robot 4:552beeda4722 63 LPC_TIM2->PR = 0;
Yo_Robot 3:8d5a9e3cd680 64
Yo_Robot 4:552beeda4722 65 // Calcular el periodo Inicial
Yo_Robot 4:552beeda4722 66 uint32_t periodo = ( SystemCoreClock / 400 );
Yo_Robot 3:8d5a9e3cd680 67
Yo_Robot 3:8d5a9e3cd680 68 // Establecer los Registros de Coincidencia
Yo_Robot 3:8d5a9e3cd680 69 // ( Match Register )
Yo_Robot 3:8d5a9e3cd680 70 LPC_TIM2->MR2 = periodo;
Yo_Robot 4:552beeda4722 71 LPC_TIM2->MR3 = periodo; // Legacy, salidas identicas
Yo_Robot 3:8d5a9e3cd680 72
Yo_Robot 4:552beeda4722 73 LPC_TIM2->MCR |= 1 << 7; // Resetear Timer en MR2
Yo_Robot 3:8d5a9e3cd680 74
Yo_Robot 3:8d5a9e3cd680 75 LPC_TIM2->EMR |= 15UL << 8; // Alternar Pin MAT2.2
Yo_Robot 3:8d5a9e3cd680 76 // y MAT2.3
Yo_Robot 3:8d5a9e3cd680 77
Yo_Robot 3:8d5a9e3cd680 78 LPC_PINCON->PINSEL0 |= 15UL << 16; //Activar MAT2.2
Yo_Robot 8:958dfe5052b9 79 // y MAT2.3 como salidas
Yo_Robot 8:958dfe5052b9 80
Yo_Robot 6:b4dae934e1ea 81 }
Yo_Robot 6:b4dae934e1ea 82
Yo_Robot 12:c02b08dacc45 83 void ISR_Serial()
Yo_Robot 12:c02b08dacc45 84 {
Yo_Robot 12:c02b08dacc45 85 int value; // Nuevo Valor
Yo_Robot 12:c02b08dacc45 86 char command; // Comando al que aplicar el nuevo valor
Yo_Robot 23:2126e38bb48c 87
Yo_Robot 12:c02b08dacc45 88
Yo_Robot 19:c26cf8a48986 89 if( isPC )
Yo_Robot 23:2126e38bb48c 90 pc.scanf( "%d-%c", &value, &command );
Yo_Robot 19:c26cf8a48986 91 else
Yo_Robot 23:2126e38bb48c 92 RS_232.scanf( "%d-%c", &value, &command );
Yo_Robot 23:2126e38bb48c 93
Yo_Robot 23:2126e38bb48c 94 switch( command )
Yo_Robot 23:2126e38bb48c 95 {
Yo_Robot 19:c26cf8a48986 96
Yo_Robot 29:52932326c45a 97 case 'E': // Leer el contador del encoder.
Yo_Robot 24:a1d16835201c 98 {
Yo_Robot 23:2126e38bb48c 99
Yo_Robot 27:b8254b76ec57 100 //Leer la posición del encoder
Yo_Robot 23:2126e38bb48c 101
Yo_Robot 26:dad0b2031173 102 if( isPC )
Yo_Robot 29:52932326c45a 103 pc.printf("%d\n\r",encoder.GetPosition());
Yo_Robot 26:dad0b2031173 104 else
Yo_Robot 29:52932326c45a 105 RS_232.printf("%d\n\r",encoder.GetPosition());
Yo_Robot 23:2126e38bb48c 106 break;
Yo_Robot 24:a1d16835201c 107 }
Yo_Robot 27:b8254b76ec57 108
Yo_Robot 23:2126e38bb48c 109 case 'H': // Establecer nueva frecuencia
Yo_Robot 24:a1d16835201c 110 {
Yo_Robot 23:2126e38bb48c 111 setPTO( value );
Yo_Robot 26:dad0b2031173 112 fq_actual = value;
Yo_Robot 32:4483d6c225e5 113 bandera_inicio = 0; //En caso que haya estado yendo a HOME, cancelar
Yo_Robot 26:dad0b2031173 114
Yo_Robot 26:dad0b2031173 115 // Envia un OK de comando recibido
Yo_Robot 26:dad0b2031173 116 if( isPC )
Yo_Robot 26:dad0b2031173 117 pc.printf("OK\r\n");
Yo_Robot 26:dad0b2031173 118 else
Yo_Robot 26:dad0b2031173 119 RS_232.printf("OK\r\n");
Yo_Robot 23:2126e38bb48c 120 break;
Yo_Robot 24:a1d16835201c 121 }
Yo_Robot 27:b8254b76ec57 122
Yo_Robot 23:2126e38bb48c 123 case 'K':
Yo_Robot 24:a1d16835201c 124 {
Yo_Robot 23:2126e38bb48c 125 setPTO( value * 1000 );
Yo_Robot 26:dad0b2031173 126 fq_actual = value;
Yo_Robot 32:4483d6c225e5 127 bandera_inicio = 0; //En caso que haya estado yendo a HOME, cancelar
Yo_Robot 32:4483d6c225e5 128
Yo_Robot 26:dad0b2031173 129 // Envia un OK de comando recibido
Yo_Robot 26:dad0b2031173 130 if( isPC )
Yo_Robot 26:dad0b2031173 131 pc.printf("OK\r\n");
Yo_Robot 26:dad0b2031173 132 else
Yo_Robot 26:dad0b2031173 133 RS_232.printf("OK\r\n");
Yo_Robot 26:dad0b2031173 134
Yo_Robot 23:2126e38bb48c 135 break;
Yo_Robot 24:a1d16835201c 136 }
Yo_Robot 23:2126e38bb48c 137 case 'A': // Cambiar voltaje de salida
Yo_Robot 24:a1d16835201c 138 {
Yo_Robot 23:2126e38bb48c 139 aout = (float)( value + 10000.0 ) / 20000.0;
Yo_Robot 26:dad0b2031173 140
Yo_Robot 26:dad0b2031173 141 // Envia un OK de comando recibido
Yo_Robot 26:dad0b2031173 142 if( isPC )
Yo_Robot 26:dad0b2031173 143 pc.printf("OK\r\n");
Yo_Robot 26:dad0b2031173 144 else
Yo_Robot 26:dad0b2031173 145 RS_232.printf("OK\r\n");
Yo_Robot 26:dad0b2031173 146
Yo_Robot 23:2126e38bb48c 147 break;
Yo_Robot 24:a1d16835201c 148 }
Yo_Robot 23:2126e38bb48c 149 case 'D': // Cambiar la direccion
Yo_Robot 24:a1d16835201c 150 {
Yo_Robot 26:dad0b2031173 151
Yo_Robot 23:2126e38bb48c 152 stopTimer2();
Yo_Robot 23:2126e38bb48c 153 pin_dir = value;
Yo_Robot 23:2126e38bb48c 154 wait_us( 2 );
Yo_Robot 32:4483d6c225e5 155 bandera_inicio = 0; //En caso que haya estado yendo a HOME, cancelar
Yo_Robot 26:dad0b2031173 156
Yo_Robot 26:dad0b2031173 157 if ( fq_actual != 0 )
Yo_Robot 26:dad0b2031173 158 {
Yo_Robot 26:dad0b2031173 159 startTimer2();
Yo_Robot 26:dad0b2031173 160 }
Yo_Robot 26:dad0b2031173 161
Yo_Robot 26:dad0b2031173 162 // Envia un OK de comando recibido
Yo_Robot 26:dad0b2031173 163 if( isPC )
Yo_Robot 26:dad0b2031173 164 pc.printf("OK\r\n");
Yo_Robot 26:dad0b2031173 165 else
Yo_Robot 26:dad0b2031173 166 RS_232.printf("OK\r\n");
Yo_Robot 26:dad0b2031173 167
Yo_Robot 23:2126e38bb48c 168 break;
Yo_Robot 24:a1d16835201c 169 }
Yo_Robot 23:2126e38bb48c 170 case 'V': //Setear la velocidad de Posicionamiento
Yo_Robot 24:a1d16835201c 171 {
Yo_Robot 23:2126e38bb48c 172 fq_posicion = value;
Yo_Robot 26:dad0b2031173 173
Yo_Robot 26:dad0b2031173 174 // Envia un OK de comando recibido
Yo_Robot 26:dad0b2031173 175 if( isPC )
Yo_Robot 26:dad0b2031173 176 pc.printf("OK\r\n");
Yo_Robot 26:dad0b2031173 177 else
Yo_Robot 26:dad0b2031173 178 RS_232.printf("OK\r\n");
Yo_Robot 26:dad0b2031173 179
Yo_Robot 23:2126e38bb48c 180 break;
Yo_Robot 24:a1d16835201c 181 }
Yo_Robot 27:b8254b76ec57 182
Yo_Robot 27:b8254b76ec57 183 // Generar un numero definido de pulsos a la velocidad de posicionamiento
Yo_Robot 29:52932326c45a 184 case 'P':
Yo_Robot 24:a1d16835201c 185 {
Yo_Robot 28:b7ded82ee7da 186 float pulsos = value; //Numero de pulsos a generar
Yo_Robot 28:b7ded82ee7da 187 t_alto = (float)(pulsos / fq_posicion); //Tiempo que debe ser generado el tren de pulsos.
Yo_Robot 27:b8254b76ec57 188
Yo_Robot 32:4483d6c225e5 189 bandera_inicio = 0; //En caso que haya estado yendo a HOME, cancelar
Yo_Robot 32:4483d6c225e5 190
Yo_Robot 27:b8254b76ec57 191 //DEBUG
Yo_Robot 32:4483d6c225e5 192 //pc.printf("Tiempo en timer en seg = %f", t_alto);
Yo_Robot 27:b8254b76ec57 193
Yo_Robot 23:2126e38bb48c 194 stopTimer2(); //Deten el tren de pulsos
Yo_Robot 23:2126e38bb48c 195 setPTO( fq_posicion ); //Nueva frecuencia de salida
Yo_Robot 23:2126e38bb48c 196 startTimer2(); //Inicia el tren de pulsos
Yo_Robot 23:2126e38bb48c 197 wait( t_alto ); //Espera hasta llegar a la posicion
Yo_Robot 23:2126e38bb48c 198 stopTimer2(); //Posicion alcanzada ALTO.
Yo_Robot 26:dad0b2031173 199
Yo_Robot 26:dad0b2031173 200
Yo_Robot 26:dad0b2031173 201 // Envia un OK de comando recibido
Yo_Robot 26:dad0b2031173 202 if( isPC )
Yo_Robot 26:dad0b2031173 203 pc.printf("OK\r\n");
Yo_Robot 26:dad0b2031173 204 else
Yo_Robot 26:dad0b2031173 205 RS_232.printf("OK\r\n");
Yo_Robot 26:dad0b2031173 206
Yo_Robot 26:dad0b2031173 207
Yo_Robot 23:2126e38bb48c 208 break;
Yo_Robot 24:a1d16835201c 209 }
Yo_Robot 27:b8254b76ec57 210
Yo_Robot 27:b8254b76ec57 211 // Generar un numero definido de MILES de pulsos a la velocidad de posicionamiento
Yo_Robot 29:52932326c45a 212 case 'M':
Yo_Robot 27:b8254b76ec57 213 {
Yo_Robot 28:b7ded82ee7da 214 float pulsos = value * 1000; //Numero de pulsos a generar
Yo_Robot 28:b7ded82ee7da 215 t_alto = (float)(pulsos / fq_posicion); //Tiempo que debe ser generado el tren de pulsos.
Yo_Robot 32:4483d6c225e5 216 bandera_inicio = 0; //En caso que haya estado yendo a HOME, cancelar
Yo_Robot 32:4483d6c225e5 217
Yo_Robot 27:b8254b76ec57 218 //DEBUG
Yo_Robot 32:4483d6c225e5 219 //pc.printf("Tiempo en timer en seg = %f", t_alto);
Yo_Robot 27:b8254b76ec57 220
Yo_Robot 27:b8254b76ec57 221 stopTimer2(); //Deten el tren de pulsos
Yo_Robot 27:b8254b76ec57 222 setPTO( fq_posicion ); //Nueva frecuencia de salida
Yo_Robot 27:b8254b76ec57 223 startTimer2(); //Inicia el tren de pulsos
Yo_Robot 27:b8254b76ec57 224 wait( t_alto ); //Espera hasta llegar a la posicion
Yo_Robot 27:b8254b76ec57 225 stopTimer2(); //Posicion alcanzada ALTO.
Yo_Robot 27:b8254b76ec57 226
Yo_Robot 27:b8254b76ec57 227
Yo_Robot 27:b8254b76ec57 228 // Envia un OK de comando recibido
Yo_Robot 27:b8254b76ec57 229 if( isPC )
Yo_Robot 27:b8254b76ec57 230 pc.printf("OK\r\n");
Yo_Robot 27:b8254b76ec57 231 else
Yo_Robot 27:b8254b76ec57 232 RS_232.printf("OK\r\n");
Yo_Robot 27:b8254b76ec57 233
Yo_Robot 27:b8254b76ec57 234
Yo_Robot 27:b8254b76ec57 235 break;
Yo_Robot 27:b8254b76ec57 236 }
Yo_Robot 27:b8254b76ec57 237
Yo_Robot 27:b8254b76ec57 238 // Generar un numero definido de MILLONES pulsos a la velocidad de posicionamiento
Yo_Robot 29:52932326c45a 239 case 'N':
Yo_Robot 27:b8254b76ec57 240 {
Yo_Robot 28:b7ded82ee7da 241 float pulsos = value * 1000000; //Numero de pulsos a generar
Yo_Robot 28:b7ded82ee7da 242 t_alto = (float)(pulsos / fq_posicion); //Tiempo que debe ser generado el tren de pulsos.
Yo_Robot 32:4483d6c225e5 243 bandera_inicio = 0; //En caso que haya estado yendo a HOME, cancelar
Yo_Robot 32:4483d6c225e5 244
Yo_Robot 27:b8254b76ec57 245 //DEBUG
Yo_Robot 32:4483d6c225e5 246 //pc.printf("Tiempo en timer en seg = %f", t_alto);
Yo_Robot 27:b8254b76ec57 247
Yo_Robot 27:b8254b76ec57 248 stopTimer2(); //Deten el tren de pulsos
Yo_Robot 27:b8254b76ec57 249 setPTO( fq_posicion ); //Nueva frecuencia de salida
Yo_Robot 27:b8254b76ec57 250 startTimer2(); //Inicia el tren de pulsos
Yo_Robot 27:b8254b76ec57 251 wait( t_alto ); //Espera hasta llegar a la posicion
Yo_Robot 27:b8254b76ec57 252 stopTimer2(); //Posicion alcanzada ALTO.
Yo_Robot 27:b8254b76ec57 253
Yo_Robot 27:b8254b76ec57 254
Yo_Robot 27:b8254b76ec57 255 // Envia un OK de comando recibido
Yo_Robot 27:b8254b76ec57 256 if( isPC )
Yo_Robot 27:b8254b76ec57 257 pc.printf("OK\r\n");
Yo_Robot 27:b8254b76ec57 258 else
Yo_Robot 27:b8254b76ec57 259 RS_232.printf("OK\r\n");
Yo_Robot 27:b8254b76ec57 260
Yo_Robot 27:b8254b76ec57 261
Yo_Robot 27:b8254b76ec57 262 break;
Yo_Robot 27:b8254b76ec57 263 }
Yo_Robot 27:b8254b76ec57 264
Yo_Robot 27:b8254b76ec57 265
Yo_Robot 29:52932326c45a 266 case 'R': // Leer la velocidd del encoder en RPM's
Yo_Robot 24:a1d16835201c 267 {
Yo_Robot 23:2126e38bb48c 268 if( isPC )
Yo_Robot 33:e6ff02c3e0f5 269 {
Yo_Robot 33:e6ff02c3e0f5 270 pc.printf( "%u", encoder.CalculateRPM( encoder.GetVelocityCap(), 360) ); // ultima velocidad leida desde el encoder
Yo_Robot 33:e6ff02c3e0f5 271 }else
Yo_Robot 33:e6ff02c3e0f5 272 RS_232.printf( "%u",encoder.CalculateRPM( encoder.GetVelocityCap(), 360) );
Yo_Robot 23:2126e38bb48c 273 break;
Yo_Robot 24:a1d16835201c 274 }
Yo_Robot 26:dad0b2031173 275
Yo_Robot 23:2126e38bb48c 276 case 'Z': //Limpiar contador encoder
Yo_Robot 29:52932326c45a 277 encoder.Reset(QEI_RESET_POS);
Yo_Robot 29:52932326c45a 278 encoder.Reset(QEI_RESET_VEL);
Yo_Robot 26:dad0b2031173 279
Yo_Robot 26:dad0b2031173 280 // Envia un OK de comando recibido
Yo_Robot 26:dad0b2031173 281 if( isPC )
Yo_Robot 26:dad0b2031173 282 pc.printf("OK\r\n");
Yo_Robot 26:dad0b2031173 283 else
Yo_Robot 26:dad0b2031173 284 RS_232.printf("OK\r\n");
Yo_Robot 26:dad0b2031173 285
Yo_Robot 23:2126e38bb48c 286 break;
Yo_Robot 23:2126e38bb48c 287
Yo_Robot 23:2126e38bb48c 288 case 'S': //Encender el Servo
Yo_Robot 26:dad0b2031173 289
Yo_Robot 23:2126e38bb48c 290 pin_son = value;
Yo_Robot 32:4483d6c225e5 291 bandera_inicio = 0; //En caso que haya estado yendo a HOME, cancelar
Yo_Robot 32:4483d6c225e5 292
Yo_Robot 32:4483d6c225e5 293 // Envia un OK de comando recibido
Yo_Robot 32:4483d6c225e5 294 if( isPC )
Yo_Robot 32:4483d6c225e5 295 pc.printf("OK\r\n");
Yo_Robot 32:4483d6c225e5 296 else
Yo_Robot 32:4483d6c225e5 297 RS_232.printf("OK\r\n");
Yo_Robot 32:4483d6c225e5 298
Yo_Robot 32:4483d6c225e5 299 break;
Yo_Robot 32:4483d6c225e5 300
Yo_Robot 32:4483d6c225e5 301 case 'I': //Ir al inicio del recorrido
Yo_Robot 32:4483d6c225e5 302
Yo_Robot 32:4483d6c225e5 303 pin_dir = 1; //Mover hacia el motor
Yo_Robot 32:4483d6c225e5 304 bandera_inicio = 1; // Informar a ISR_Adv_motor() acerca del Homing
Yo_Robot 32:4483d6c225e5 305 setPTO( value ); // a la velocidad seteada
Yo_Robot 26:dad0b2031173 306
Yo_Robot 26:dad0b2031173 307 // Envia un OK de comando recibido
Yo_Robot 26:dad0b2031173 308 if( isPC )
Yo_Robot 26:dad0b2031173 309 pc.printf("OK\r\n");
Yo_Robot 26:dad0b2031173 310 else
Yo_Robot 26:dad0b2031173 311 RS_232.printf("OK\r\n");
Yo_Robot 26:dad0b2031173 312
Yo_Robot 23:2126e38bb48c 313 break;
Yo_Robot 28:b7ded82ee7da 314
Yo_Robot 28:b7ded82ee7da 315 default:
Yo_Robot 28:b7ded82ee7da 316
Yo_Robot 28:b7ded82ee7da 317 // EL COMANDO NO SE RECONOCE: No Aplica
Yo_Robot 28:b7ded82ee7da 318 if( isPC )
Yo_Robot 28:b7ded82ee7da 319 pc.printf("NA\r\n");
Yo_Robot 28:b7ded82ee7da 320 else
Yo_Robot 28:b7ded82ee7da 321 RS_232.printf("NA\r\n");
Yo_Robot 28:b7ded82ee7da 322
Yo_Robot 28:b7ded82ee7da 323 break;
Yo_Robot 32:4483d6c225e5 324
Yo_Robot 18:cf1e07d82630 325 }
Yo_Robot 23:2126e38bb48c 326
Yo_Robot 12:c02b08dacc45 327 }
Yo_Robot 12:c02b08dacc45 328
Yo_Robot 12:c02b08dacc45 329
Yo_Robot 12:c02b08dacc45 330 void setPTO( int freq )
Yo_Robot 12:c02b08dacc45 331 {
Yo_Robot 12:c02b08dacc45 332 if( freq != 0 )
Yo_Robot 12:c02b08dacc45 333 {
Yo_Robot 12:c02b08dacc45 334 LPC_TIM2->TC = 0x00; //Resetear Timer
Yo_Robot 12:c02b08dacc45 335 setMR2( getMRvalue( freq ) );
Yo_Robot 12:c02b08dacc45 336 startTimer2();
Yo_Robot 12:c02b08dacc45 337
Yo_Robot 12:c02b08dacc45 338 }else{
Yo_Robot 12:c02b08dacc45 339
Yo_Robot 12:c02b08dacc45 340 stopTimer2();
Yo_Robot 12:c02b08dacc45 341 LPC_TIM2->TC = 0x00; //Resetear Timer
Yo_Robot 12:c02b08dacc45 342 }
Yo_Robot 12:c02b08dacc45 343 }
Yo_Robot 12:c02b08dacc45 344
Yo_Robot 22:d5431fff164b 345
Yo_Robot 22:d5431fff164b 346
Yo_Robot 22:d5431fff164b 347 void ISR_Alarm()
Yo_Robot 22:d5431fff164b 348 {
Yo_Robot 22:d5431fff164b 349 pin_son = 0 ;
Yo_Robot 22:d5431fff164b 350 stopTimer2();
Yo_Robot 22:d5431fff164b 351 aout = 0.5 ;
Yo_Robot 22:d5431fff164b 352
Yo_Robot 22:d5431fff164b 353 if(isPC)
Yo_Robot 31:7e2cdd547cb2 354 pc.printf( "AL\r\n" ); //ALARMA! solo es AL para que
Yo_Robot 31:7e2cdd547cb2 355 //sea conciso con el modo ETH y funcione
Yo_Robot 31:7e2cdd547cb2 356 //bien en LabVIEW.
Yo_Robot 22:d5431fff164b 357 else
Yo_Robot 26:dad0b2031173 358 RS_232.printf( "AL\r\n" );
Yo_Robot 22:d5431fff164b 359 }
Yo_Robot 22:d5431fff164b 360
Yo_Robot 30:413d1a6648b5 361
Yo_Robot 30:413d1a6648b5 362
Yo_Robot 30:413d1a6648b5 363
Yo_Robot 30:413d1a6648b5 364 /** @brief: Esta es la rutina que maneja las interrupciones
Yo_Robot 30:413d1a6648b5 365 * del sensor óptico, al recibir una ALARMA de proximidad al encoder
Yo_Robot 30:413d1a6648b5 366 */
Yo_Robot 31:7e2cdd547cb2 367 void ISR_Alm_encoder()
Yo_Robot 31:7e2cdd547cb2 368 {
Yo_Robot 31:7e2cdd547cb2 369 if( isPC )
Yo_Robot 32:4483d6c225e5 370 pc.printf("A3\r\n");
Yo_Robot 31:7e2cdd547cb2 371 else
Yo_Robot 32:4483d6c225e5 372 RS_232.printf("A3\r\n");
Yo_Robot 31:7e2cdd547cb2 373 }
Yo_Robot 30:413d1a6648b5 374
Yo_Robot 30:413d1a6648b5 375
Yo_Robot 30:413d1a6648b5 376 /** @brief: Esta es la rutina que maneja las interrupciones
Yo_Robot 30:413d1a6648b5 377 * del sensor óptico, al recibir una ALARMA de proximidad al motor
Yo_Robot 30:413d1a6648b5 378 */
Yo_Robot 31:7e2cdd547cb2 379 void ISR_Alm_motor()
Yo_Robot 31:7e2cdd547cb2 380 {
Yo_Robot 32:4483d6c225e5 381 wait_us( 50 );
Yo_Robot 32:4483d6c225e5 382 if ( limite_4 == 1)
Yo_Robot 32:4483d6c225e5 383 {
Yo_Robot 32:4483d6c225e5 384 if( isPC )
Yo_Robot 32:4483d6c225e5 385 pc.printf("A0\r\n");
Yo_Robot 32:4483d6c225e5 386 else
Yo_Robot 32:4483d6c225e5 387 RS_232.printf("A0\r\n");
Yo_Robot 32:4483d6c225e5 388 }
Yo_Robot 31:7e2cdd547cb2 389 }
Yo_Robot 30:413d1a6648b5 390
Yo_Robot 30:413d1a6648b5 391
Yo_Robot 30:413d1a6648b5 392 /** @brief: Esta es la rutina que maneja las interrupciones
Yo_Robot 30:413d1a6648b5 393 * del sensor óptico, al recibir una advertencia de proximidad al encoder
Yo_Robot 30:413d1a6648b5 394 */
Yo_Robot 31:7e2cdd547cb2 395 void ISR_Adv_encoder()
Yo_Robot 31:7e2cdd547cb2 396 {
Yo_Robot 32:4483d6c225e5 397 wait_ms( 50 );
Yo_Robot 32:4483d6c225e5 398 if ( limite_2 == 1)
Yo_Robot 32:4483d6c225e5 399 {
Yo_Robot 31:7e2cdd547cb2 400
Yo_Robot 32:4483d6c225e5 401 if( isPC )
Yo_Robot 32:4483d6c225e5 402 pc.printf("A2\r\n");
Yo_Robot 32:4483d6c225e5 403 else
Yo_Robot 32:4483d6c225e5 404 RS_232.printf("A2\r\n");
Yo_Robot 32:4483d6c225e5 405 }
Yo_Robot 31:7e2cdd547cb2 406
Yo_Robot 31:7e2cdd547cb2 407 }
Yo_Robot 30:413d1a6648b5 408
Yo_Robot 30:413d1a6648b5 409
Yo_Robot 30:413d1a6648b5 410 /** @brief: Esta es la rutina que maneja las interrupciones
Yo_Robot 30:413d1a6648b5 411 * del sensor óptico, al recibir una advertencia de proximidad al motor
Yo_Robot 30:413d1a6648b5 412 */
Yo_Robot 31:7e2cdd547cb2 413 void ISR_Adv_motor()
Yo_Robot 31:7e2cdd547cb2 414 {
Yo_Robot 32:4483d6c225e5 415 if ( bandera_inicio == 1 )
Yo_Robot 32:4483d6c225e5 416 {
Yo_Robot 32:4483d6c225e5 417 setPTO( 0 ); //detener el carro
Yo_Robot 32:4483d6c225e5 418 pin_dir = 0; //hacer que se aleje del motor
Yo_Robot 32:4483d6c225e5 419
Yo_Robot 32:4483d6c225e5 420
Yo_Robot 32:4483d6c225e5 421 stopTimer2(); //Deten el tren de pulsos
Yo_Robot 32:4483d6c225e5 422 setPTO( 20000 ); //Nueva frecuencia de salida
Yo_Robot 32:4483d6c225e5 423 startTimer2(); //Inicia el tren de pulsos
Yo_Robot 32:4483d6c225e5 424 wait_ms( 100 ); //Espera hasta llegar a la posicion
Yo_Robot 32:4483d6c225e5 425 stopTimer2(); //Posicion alcanzada ALTO.
Yo_Robot 32:4483d6c225e5 426
Yo_Robot 32:4483d6c225e5 427 setPTO (0); // Detener el carro cuando este en posición valida
Yo_Robot 32:4483d6c225e5 428 wait_ms(100);
Yo_Robot 32:4483d6c225e5 429 //Encerar el contador de encoder y de velocidad
Yo_Robot 32:4483d6c225e5 430 encoder.Reset(QEI_RESET_POS);
Yo_Robot 32:4483d6c225e5 431 encoder.Reset(QEI_RESET_VEL);
Yo_Robot 32:4483d6c225e5 432
Yo_Robot 32:4483d6c225e5 433 bandera_inicio = 0; //Limpiar la bandera
Yo_Robot 32:4483d6c225e5 434
Yo_Robot 32:4483d6c225e5 435 // Envia un IN de proceso terminado
Yo_Robot 32:4483d6c225e5 436 if( isPC )
Yo_Robot 32:4483d6c225e5 437 pc.printf("IN\r\n");
Yo_Robot 32:4483d6c225e5 438 else
Yo_Robot 32:4483d6c225e5 439 RS_232.printf("IN\r\n");
Yo_Robot 32:4483d6c225e5 440 }
Yo_Robot 32:4483d6c225e5 441
Yo_Robot 32:4483d6c225e5 442 else{
Yo_Robot 32:4483d6c225e5 443
Yo_Robot 32:4483d6c225e5 444 if( isPC )
Yo_Robot 32:4483d6c225e5 445 pc.printf("A1\r\n");
Yo_Robot 32:4483d6c225e5 446 else
Yo_Robot 32:4483d6c225e5 447 RS_232.printf("A1\r\n");
Yo_Robot 32:4483d6c225e5 448 }
Yo_Robot 32:4483d6c225e5 449
Yo_Robot 31:7e2cdd547cb2 450 }
Yo_Robot 30:413d1a6648b5 451
Yo_Robot 30:413d1a6648b5 452
Yo_Robot 30:413d1a6648b5 453
Yo_Robot 22:d5431fff164b 454 int getMRvalue( int fout )
Yo_Robot 22:d5431fff164b 455 {
Yo_Robot 22:d5431fff164b 456 int toRegister;
Yo_Robot 22:d5431fff164b 457
Yo_Robot 22:d5431fff164b 458 toRegister = (24000000 /(fout*2.0) ) -1;
Yo_Robot 22:d5431fff164b 459 return toRegister;
Yo_Robot 22:d5431fff164b 460 }
Yo_Robot 22:d5431fff164b 461
Yo_Robot 22:d5431fff164b 462
Yo_Robot 22:d5431fff164b 463 void setMR2( int newValue )
Yo_Robot 22:d5431fff164b 464 {
Yo_Robot 22:d5431fff164b 465 LPC_TIM2->MR2 = newValue; // Las dos salidas son identicas
Yo_Robot 22:d5431fff164b 466 LPC_TIM2->MR3 = newValue; // Para testear el programa.
Yo_Robot 22:d5431fff164b 467 }
Yo_Robot 22:d5431fff164b 468
Yo_Robot 22:d5431fff164b 469
Yo_Robot 22:d5431fff164b 470
Yo_Robot 22:d5431fff164b 471 void startTimer2()
Yo_Robot 22:d5431fff164b 472 {
Yo_Robot 22:d5431fff164b 473 // Arrancer el Timer 2
Yo_Robot 22:d5431fff164b 474 LPC_TIM2->TCR = 1;
Yo_Robot 22:d5431fff164b 475 }
Yo_Robot 22:d5431fff164b 476
Yo_Robot 22:d5431fff164b 477 void stopTimer2()
Yo_Robot 22:d5431fff164b 478 {
Yo_Robot 22:d5431fff164b 479 // Detener el Timer 2
Yo_Robot 22:d5431fff164b 480 LPC_TIM2->TCR = 0x2;
Yo_Robot 22:d5431fff164b 481 }
Yo_Robot 22:d5431fff164b 482
Yo_Robot 22:d5431fff164b 483 int getBaud()
Yo_Robot 22:d5431fff164b 484 {
Yo_Robot 22:d5431fff164b 485 int baudios = 115200; //Valor por defecto
Yo_Robot 22:d5431fff164b 486
Yo_Robot 22:d5431fff164b 487 FILE *fp = fopen("/local/config.mbd", "r"); // Abre el archivo y lo guarda en fp
Yo_Robot 22:d5431fff164b 488
Yo_Robot 22:d5431fff164b 489 if(!fp) // En caso de no encontrarse el archivo
Yo_Robot 22:d5431fff164b 490 {
Yo_Robot 22:d5431fff164b 491 printf("\nEl archivo /mbed/config.txt no puede ser abierto!\n");
Yo_Robot 22:d5431fff164b 492 printf("Cree un archivo de texto: config.mbd dentro de la unidad Mbed\n");
Yo_Robot 22:d5431fff164b 493 printf("que contenga las lineas:\n\n");
Yo_Robot 22:d5431fff164b 494
Yo_Robot 22:d5431fff164b 495 printf(" 1\n");
Yo_Robot 22:d5431fff164b 496 printf(" 2\n");
Yo_Robot 22:d5431fff164b 497 printf(" 3\n");
Yo_Robot 22:d5431fff164b 498 printf(" 4\n");
Yo_Robot 22:d5431fff164b 499 printf(" baudios: 115200\n");
Yo_Robot 22:d5431fff164b 500
Yo_Robot 22:d5431fff164b 501 printf("Cambie el valor de 115200 por la velocidad a la que desea transmitir:\n");
Yo_Robot 22:d5431fff164b 502 printf("luego reinicie el microcontrolador\n");
Yo_Robot 22:d5431fff164b 503 exit(1);
Yo_Robot 22:d5431fff164b 504
Yo_Robot 22:d5431fff164b 505 }
Yo_Robot 22:d5431fff164b 506 else
Yo_Robot 22:d5431fff164b 507 {
Yo_Robot 22:d5431fff164b 508 // Cadenas de caracteres desde el Archivo config.mbd
Yo_Robot 22:d5431fff164b 509 char notstr [04]; // linea vacia
Yo_Robot 22:d5431fff164b 510 char baud [40]; // valor en baudios
Yo_Robot 22:d5431fff164b 511
Yo_Robot 22:d5431fff164b 512 // Leer linea a linea el archivo
Yo_Robot 22:d5431fff164b 513 // cuatro primeras lineas no sirven
Yo_Robot 22:d5431fff164b 514 fgets( notstr, 4, fp );
Yo_Robot 22:d5431fff164b 515 fgets( notstr, 4, fp );
Yo_Robot 22:d5431fff164b 516 fgets( notstr, 4, fp );
Yo_Robot 22:d5431fff164b 517 fgets( notstr, 4, fp );
Yo_Robot 22:d5431fff164b 518 fgets( baud, 40, fp );
Yo_Robot 22:d5431fff164b 519 fclose(fp);
Yo_Robot 23:2126e38bb48c 520
Yo_Robot 22:d5431fff164b 521 // Extraer los valores numericos
Yo_Robot 22:d5431fff164b 522 sscanf( baud,"%*s %d",&baudios );
Yo_Robot 22:d5431fff164b 523
Yo_Robot 22:d5431fff164b 524
Yo_Robot 22:d5431fff164b 525 }
Yo_Robot 22:d5431fff164b 526
Yo_Robot 22:d5431fff164b 527 return baudios;
Yo_Robot 22:d5431fff164b 528 }
Yo_Robot 22:d5431fff164b 529
Yo_Robot 22:d5431fff164b 530 // **** Funciones Liberia Ethernet ***** //
Yo_Robot 12:c02b08dacc45 531 void setPTO_eth( char * input, char * output )
Yo_Robot 12:c02b08dacc45 532 {
Yo_Robot 12:c02b08dacc45 533 int freq = atoi( input );
Yo_Robot 12:c02b08dacc45 534
Yo_Robot 12:c02b08dacc45 535 if( freq != 0 ){
Yo_Robot 12:c02b08dacc45 536 LPC_TIM2->TC = 0x00; // Resetear Timer
Yo_Robot 12:c02b08dacc45 537 setMR2( getMRvalue( freq ) ); // Cambiar frefuencia
Yo_Robot 12:c02b08dacc45 538 startTimer2(); // Iniciar Timer
Yo_Robot 14:039d070732d5 539 if( pin_alm == 0 )
Yo_Robot 31:7e2cdd547cb2 540 {
Yo_Robot 31:7e2cdd547cb2 541 if ( limite_2 == 1 ) // Alarma muy cerca al encoder
Yo_Robot 31:7e2cdd547cb2 542 {
Yo_Robot 31:7e2cdd547cb2 543 sprintf( output,"A2\r\n" );
Yo_Robot 31:7e2cdd547cb2 544 }
Yo_Robot 31:7e2cdd547cb2 545 if ( limite_3 == 1 ) // Alarma muy cerca al encoder
Yo_Robot 31:7e2cdd547cb2 546 {
Yo_Robot 31:7e2cdd547cb2 547 sprintf( output,"A1\r\n" );
Yo_Robot 31:7e2cdd547cb2 548 }
Yo_Robot 31:7e2cdd547cb2 549 if ( limite_1 == 1 || limite_4 == 1 ) // ERROR DE POSICION
Yo_Robot 31:7e2cdd547cb2 550 {
Yo_Robot 31:7e2cdd547cb2 551 sprintf( output,"A0\r\n" );
Yo_Robot 31:7e2cdd547cb2 552 }
Yo_Robot 31:7e2cdd547cb2 553
Yo_Robot 31:7e2cdd547cb2 554 else
Yo_Robot 31:7e2cdd547cb2 555 sprintf( output,"OK\r\n" );
Yo_Robot 31:7e2cdd547cb2 556 }
Yo_Robot 14:039d070732d5 557 else
Yo_Robot 14:039d070732d5 558 sprintf( output,"AL" );
Yo_Robot 12:c02b08dacc45 559 }else{
Yo_Robot 12:c02b08dacc45 560 stopTimer2();
Yo_Robot 12:c02b08dacc45 561 LPC_TIM2->TC = 0x00; // Resetear Timer
Yo_Robot 14:039d070732d5 562 if( pin_alm == 0 )
Yo_Robot 31:7e2cdd547cb2 563 {
Yo_Robot 31:7e2cdd547cb2 564 if ( limite_2 == 1 ) // Alarma muy cerca al encoder
Yo_Robot 31:7e2cdd547cb2 565 {
Yo_Robot 31:7e2cdd547cb2 566 sprintf( output,"A2\r\n" );
Yo_Robot 31:7e2cdd547cb2 567 }
Yo_Robot 31:7e2cdd547cb2 568 if ( limite_3 == 1 ) // Alarma muy cerca al encoder
Yo_Robot 31:7e2cdd547cb2 569 {
Yo_Robot 31:7e2cdd547cb2 570 sprintf( output,"A1\r\n" );
Yo_Robot 31:7e2cdd547cb2 571 }
Yo_Robot 31:7e2cdd547cb2 572 if ( limite_1 == 1 || limite_4 == 1 ) // ERROR DE POSICION
Yo_Robot 31:7e2cdd547cb2 573 {
Yo_Robot 31:7e2cdd547cb2 574 sprintf( output,"A0\r\n" );
Yo_Robot 31:7e2cdd547cb2 575 }
Yo_Robot 31:7e2cdd547cb2 576
Yo_Robot 31:7e2cdd547cb2 577 else
Yo_Robot 31:7e2cdd547cb2 578 sprintf( output,"OK\r\n" );
Yo_Robot 31:7e2cdd547cb2 579 }
Yo_Robot 14:039d070732d5 580 else
Yo_Robot 14:039d070732d5 581 sprintf( output,"AL" );
Yo_Robot 12:c02b08dacc45 582 }
Yo_Robot 12:c02b08dacc45 583 }
Yo_Robot 12:c02b08dacc45 584
Yo_Robot 15:a1ffa32ce9d1 585 void setANG_eth( char * input, char * output )
Yo_Robot 15:a1ffa32ce9d1 586 {
Yo_Robot 15:a1ffa32ce9d1 587 long int pulsos = atol( input ); //Numero de pulsos a generar
Yo_Robot 29:52932326c45a 588 float pulsos_f = (float) pulsos;
Yo_Robot 29:52932326c45a 589 t_alto = pulsos_f / fq_posicion; //Tiempo que debe ser generado el tren de pulsos.
Yo_Robot 15:a1ffa32ce9d1 590
Yo_Robot 15:a1ffa32ce9d1 591 stopTimer2(); //Deten el tren de pulsos
Yo_Robot 15:a1ffa32ce9d1 592 setPTO( fq_posicion ); //Nueva frecuencia de salida
Yo_Robot 15:a1ffa32ce9d1 593 startTimer2(); //Inicia el tren de pulsos
Yo_Robot 15:a1ffa32ce9d1 594 wait( t_alto ); //Espera hasta llegar a la posicion
Yo_Robot 18:cf1e07d82630 595 stopTimer2(); //Posicion alcanzada ALTO.
Yo_Robot 15:a1ffa32ce9d1 596
Yo_Robot 15:a1ffa32ce9d1 597 if( pin_alm == 0 )
Yo_Robot 31:7e2cdd547cb2 598 {
Yo_Robot 31:7e2cdd547cb2 599 if ( limite_2 == 1 ) // Alarma muy cerca al encoder
Yo_Robot 31:7e2cdd547cb2 600 {
Yo_Robot 31:7e2cdd547cb2 601 sprintf( output,"A2\r\n" );
Yo_Robot 31:7e2cdd547cb2 602 }
Yo_Robot 31:7e2cdd547cb2 603 if ( limite_3 == 1 ) // Alarma muy cerca al encoder
Yo_Robot 31:7e2cdd547cb2 604 {
Yo_Robot 31:7e2cdd547cb2 605 sprintf( output,"A1\r\n" );
Yo_Robot 31:7e2cdd547cb2 606 }
Yo_Robot 31:7e2cdd547cb2 607 if ( limite_1 == 1 || limite_4 == 1 ) // ERROR DE POSICION
Yo_Robot 31:7e2cdd547cb2 608 {
Yo_Robot 31:7e2cdd547cb2 609 sprintf( output,"A0\r\n" );
Yo_Robot 31:7e2cdd547cb2 610 }
Yo_Robot 31:7e2cdd547cb2 611
Yo_Robot 31:7e2cdd547cb2 612 else
Yo_Robot 31:7e2cdd547cb2 613 sprintf( output,"OK\r\n" );
Yo_Robot 31:7e2cdd547cb2 614 }
Yo_Robot 15:a1ffa32ce9d1 615 else
Yo_Robot 15:a1ffa32ce9d1 616 sprintf( output,"AL" );
Yo_Robot 15:a1ffa32ce9d1 617
Yo_Robot 15:a1ffa32ce9d1 618 }
Yo_Robot 21:353b0fe8fc54 619
Yo_Robot 21:353b0fe8fc54 620
Yo_Robot 15:a1ffa32ce9d1 621 void setSPD_eth( char * input, char * output )
Yo_Robot 15:a1ffa32ce9d1 622 {
Yo_Robot 15:a1ffa32ce9d1 623 fq_posicion = atoi( input );
Yo_Robot 15:a1ffa32ce9d1 624 // Esta funcion cambia la velocidad con la que se
Yo_Robot 15:a1ffa32ce9d1 625 // posicionara el eje del motor en un angulo determinado
Yo_Robot 15:a1ffa32ce9d1 626 if( pin_alm == 0 )
Yo_Robot 31:7e2cdd547cb2 627 {
Yo_Robot 31:7e2cdd547cb2 628 if ( limite_2 == 1 ) // Alarma muy cerca al encoder
Yo_Robot 31:7e2cdd547cb2 629 {
Yo_Robot 31:7e2cdd547cb2 630 sprintf( output,"A2\r\n" );
Yo_Robot 31:7e2cdd547cb2 631 }
Yo_Robot 31:7e2cdd547cb2 632 if ( limite_3 == 1 ) // Alarma muy cerca al encoder
Yo_Robot 31:7e2cdd547cb2 633 {
Yo_Robot 31:7e2cdd547cb2 634 sprintf( output,"A1\r\n" );
Yo_Robot 31:7e2cdd547cb2 635 }
Yo_Robot 31:7e2cdd547cb2 636 if ( limite_1 == 1 || limite_4 == 1 ) // ERROR DE POSICION
Yo_Robot 31:7e2cdd547cb2 637 {
Yo_Robot 31:7e2cdd547cb2 638 sprintf( output,"A0\r\n" );
Yo_Robot 31:7e2cdd547cb2 639 }
Yo_Robot 31:7e2cdd547cb2 640
Yo_Robot 31:7e2cdd547cb2 641 else
Yo_Robot 31:7e2cdd547cb2 642 sprintf( output,"OK\r\n" );
Yo_Robot 31:7e2cdd547cb2 643 }
Yo_Robot 15:a1ffa32ce9d1 644 else
Yo_Robot 15:a1ffa32ce9d1 645 sprintf( output,"AL" );
Yo_Robot 15:a1ffa32ce9d1 646
Yo_Robot 15:a1ffa32ce9d1 647 }
Yo_Robot 21:353b0fe8fc54 648
Yo_Robot 12:c02b08dacc45 649 void setAout_eth( char * input, char * output )
Yo_Robot 12:c02b08dacc45 650 {
Yo_Robot 12:c02b08dacc45 651 int vout = atoi( input );
Yo_Robot 14:039d070732d5 652 aout = (float)( vout + 10000 ) / 20000;
Yo_Robot 14:039d070732d5 653 if( pin_alm == 0 )
Yo_Robot 31:7e2cdd547cb2 654 {
Yo_Robot 31:7e2cdd547cb2 655 if ( limite_2 == 1 ) // Alarma muy cerca al encoder
Yo_Robot 31:7e2cdd547cb2 656 {
Yo_Robot 31:7e2cdd547cb2 657 sprintf( output,"A2\r\n" );
Yo_Robot 31:7e2cdd547cb2 658 }
Yo_Robot 31:7e2cdd547cb2 659 if ( limite_3 == 1 ) // Alarma muy cerca al encoder
Yo_Robot 31:7e2cdd547cb2 660 {
Yo_Robot 31:7e2cdd547cb2 661 sprintf( output,"A1\r\n" );
Yo_Robot 31:7e2cdd547cb2 662 }
Yo_Robot 31:7e2cdd547cb2 663 if ( limite_1 == 1 || limite_4 == 1 ) // ERROR DE POSICION
Yo_Robot 31:7e2cdd547cb2 664 {
Yo_Robot 31:7e2cdd547cb2 665 sprintf( output,"A0\r\n" );
Yo_Robot 31:7e2cdd547cb2 666 }
Yo_Robot 31:7e2cdd547cb2 667
Yo_Robot 31:7e2cdd547cb2 668 else
Yo_Robot 31:7e2cdd547cb2 669 sprintf( output,"OK\r\n" );
Yo_Robot 31:7e2cdd547cb2 670 }
Yo_Robot 14:039d070732d5 671 else
Yo_Robot 14:039d070732d5 672 sprintf( output,"AL" );
Yo_Robot 12:c02b08dacc45 673 }
Yo_Robot 12:c02b08dacc45 674
Yo_Robot 12:c02b08dacc45 675
Yo_Robot 12:c02b08dacc45 676
Yo_Robot 12:c02b08dacc45 677 void setDir_eth ( char * input, char * output )
Yo_Robot 12:c02b08dacc45 678 {
Yo_Robot 12:c02b08dacc45 679 int value = atoi( input );
Yo_Robot 12:c02b08dacc45 680
Yo_Robot 12:c02b08dacc45 681 pin_dir = value;
Yo_Robot 12:c02b08dacc45 682
Yo_Robot 14:039d070732d5 683 if( pin_alm == 0 )
Yo_Robot 31:7e2cdd547cb2 684 {
Yo_Robot 31:7e2cdd547cb2 685 if ( limite_2 == 1 ) // Alarma muy cerca al encoder
Yo_Robot 31:7e2cdd547cb2 686 {
Yo_Robot 31:7e2cdd547cb2 687 sprintf( output,"A2\r\n" );
Yo_Robot 31:7e2cdd547cb2 688 }
Yo_Robot 31:7e2cdd547cb2 689 if ( limite_3 == 1 ) // Alarma muy cerca al encoder
Yo_Robot 31:7e2cdd547cb2 690 {
Yo_Robot 31:7e2cdd547cb2 691 sprintf( output,"A1\r\n" );
Yo_Robot 31:7e2cdd547cb2 692 }
Yo_Robot 31:7e2cdd547cb2 693 if ( limite_1 == 1 || limite_4 == 1 ) // ERROR DE POSICION
Yo_Robot 31:7e2cdd547cb2 694 {
Yo_Robot 31:7e2cdd547cb2 695 sprintf( output,"A0\r\n" );
Yo_Robot 31:7e2cdd547cb2 696 }
Yo_Robot 31:7e2cdd547cb2 697
Yo_Robot 31:7e2cdd547cb2 698 else
Yo_Robot 31:7e2cdd547cb2 699 sprintf( output,"OK\r\n" );
Yo_Robot 31:7e2cdd547cb2 700 }
Yo_Robot 12:c02b08dacc45 701 else
Yo_Robot 14:039d070732d5 702 sprintf( output,"AL" );
Yo_Robot 12:c02b08dacc45 703 }
Yo_Robot 12:c02b08dacc45 704
Yo_Robot 12:c02b08dacc45 705
Yo_Robot 12:c02b08dacc45 706
Yo_Robot 12:c02b08dacc45 707 void setSON_eth ( char * input, char * output )
Yo_Robot 12:c02b08dacc45 708 {
Yo_Robot 12:c02b08dacc45 709 int value = atoi( input );
Yo_Robot 12:c02b08dacc45 710
Yo_Robot 12:c02b08dacc45 711 pin_son = value;
Yo_Robot 12:c02b08dacc45 712
Yo_Robot 14:039d070732d5 713 if( pin_alm == 0 )
Yo_Robot 31:7e2cdd547cb2 714 {
Yo_Robot 31:7e2cdd547cb2 715 if ( limite_2 == 1 ) // Alarma muy cerca al encoder
Yo_Robot 31:7e2cdd547cb2 716 {
Yo_Robot 31:7e2cdd547cb2 717 sprintf( output,"A2\r\n" );
Yo_Robot 31:7e2cdd547cb2 718 }
Yo_Robot 31:7e2cdd547cb2 719 if ( limite_3 == 1 ) // Alarma muy cerca al encoder
Yo_Robot 31:7e2cdd547cb2 720 {
Yo_Robot 31:7e2cdd547cb2 721 sprintf( output,"A1\r\n" );
Yo_Robot 31:7e2cdd547cb2 722 }
Yo_Robot 31:7e2cdd547cb2 723 if ( limite_1 == 1 || limite_4 == 1 ) // ERROR DE POSICION
Yo_Robot 31:7e2cdd547cb2 724 {
Yo_Robot 31:7e2cdd547cb2 725 sprintf( output,"A0\r\n" );
Yo_Robot 31:7e2cdd547cb2 726 }
Yo_Robot 31:7e2cdd547cb2 727
Yo_Robot 31:7e2cdd547cb2 728 else
Yo_Robot 31:7e2cdd547cb2 729 sprintf( output,"OK\r\n" );
Yo_Robot 31:7e2cdd547cb2 730 }
Yo_Robot 12:c02b08dacc45 731 else
Yo_Robot 14:039d070732d5 732 sprintf( output,"AL" );
Yo_Robot 12:c02b08dacc45 733
Yo_Robot 12:c02b08dacc45 734 }
Yo_Robot 12:c02b08dacc45 735
Yo_Robot 12:c02b08dacc45 736
Yo_Robot 22:d5431fff164b 737 void getENC_eth( char * input, char * output )
Yo_Robot 20:4b154134ab20 738 {
Yo_Robot 22:d5431fff164b 739 if( pin_alm == 0 )
Yo_Robot 31:7e2cdd547cb2 740 {
Yo_Robot 31:7e2cdd547cb2 741 if ( limite_2 == 1 ) // Alarma muy cerca al encoder
Yo_Robot 31:7e2cdd547cb2 742 {
Yo_Robot 31:7e2cdd547cb2 743 sprintf( output,"A2\r\n" );
Yo_Robot 31:7e2cdd547cb2 744 }
Yo_Robot 31:7e2cdd547cb2 745 if ( limite_3 == 1 ) // Alarma muy cerca al encoder
Yo_Robot 31:7e2cdd547cb2 746 {
Yo_Robot 31:7e2cdd547cb2 747 sprintf( output,"A1\r\n" );
Yo_Robot 31:7e2cdd547cb2 748 }
Yo_Robot 31:7e2cdd547cb2 749 if ( limite_1 == 1 || limite_4 == 1 ) // ERROR DE POSICION
Yo_Robot 31:7e2cdd547cb2 750 {
Yo_Robot 31:7e2cdd547cb2 751 sprintf( output,"A0\r\n" );
Yo_Robot 31:7e2cdd547cb2 752 }
Yo_Robot 31:7e2cdd547cb2 753
Yo_Robot 31:7e2cdd547cb2 754 else
Yo_Robot 31:7e2cdd547cb2 755 sprintf( output,"OK\r\n" );
Yo_Robot 31:7e2cdd547cb2 756 }
Yo_Robot 22:d5431fff164b 757 else
Yo_Robot 22:d5431fff164b 758 sprintf( output,"AL" );
Yo_Robot 22:d5431fff164b 759 }
Yo_Robot 21:353b0fe8fc54 760
Yo_Robot 21:353b0fe8fc54 761
Yo_Robot 22:d5431fff164b 762 void setENC_eth( char * input, char * output )
Yo_Robot 22:d5431fff164b 763 {
Yo_Robot 29:52932326c45a 764 encoder.Reset(QEI_RESET_POS);
Yo_Robot 29:52932326c45a 765 encoder.Reset(QEI_RESET_VEL);
Yo_Robot 22:d5431fff164b 766
Yo_Robot 22:d5431fff164b 767 if( pin_alm == 0 )
Yo_Robot 31:7e2cdd547cb2 768 {
Yo_Robot 31:7e2cdd547cb2 769 if ( limite_2 == 1 ) // Alarma muy cerca al encoder
Yo_Robot 31:7e2cdd547cb2 770 {
Yo_Robot 31:7e2cdd547cb2 771 sprintf( output,"A2\r\n" );
Yo_Robot 31:7e2cdd547cb2 772 }
Yo_Robot 31:7e2cdd547cb2 773 if ( limite_3 == 1 ) // Alarma muy cerca al encoder
Yo_Robot 31:7e2cdd547cb2 774 {
Yo_Robot 31:7e2cdd547cb2 775 sprintf( output,"A1\r\n" );
Yo_Robot 31:7e2cdd547cb2 776 }
Yo_Robot 31:7e2cdd547cb2 777 if ( limite_1 == 1 || limite_4 == 1 ) // ERROR DE POSICION
Yo_Robot 31:7e2cdd547cb2 778 {
Yo_Robot 31:7e2cdd547cb2 779 sprintf( output,"A0\r\n" );
Yo_Robot 31:7e2cdd547cb2 780 }
Yo_Robot 31:7e2cdd547cb2 781
Yo_Robot 31:7e2cdd547cb2 782 else
Yo_Robot 31:7e2cdd547cb2 783 sprintf( output,"OK\r\n" );
Yo_Robot 31:7e2cdd547cb2 784 }
Yo_Robot 22:d5431fff164b 785 else
Yo_Robot 22:d5431fff164b 786 sprintf( output,"AL" );
Yo_Robot 22:d5431fff164b 787
Yo_Robot 20:4b154134ab20 788 }
Yo_Robot 12:c02b08dacc45 789
Yo_Robot 23:2126e38bb48c 790 void getRPM_eth( char * input, char * output )
Yo_Robot 23:2126e38bb48c 791 {
Yo_Robot 29:52932326c45a 792 int rpm;
Yo_Robot 23:2126e38bb48c 793
Yo_Robot 29:52932326c45a 794 rpm = encoder.CalculateRPM( encoder.GetVelocityCap(), 360); // ultima velocidad leida desde el encoder
Yo_Robot 29:52932326c45a 795 // numero de revoluciones por vuelta del encoder
Yo_Robot 29:52932326c45a 796
Yo_Robot 23:2126e38bb48c 797
Yo_Robot 23:2126e38bb48c 798 if( pin_alm == 0 )
Yo_Robot 31:7e2cdd547cb2 799 {
Yo_Robot 31:7e2cdd547cb2 800 if ( limite_2 == 1 ) // Alarma muy cerca al encoder
Yo_Robot 31:7e2cdd547cb2 801 {
Yo_Robot 31:7e2cdd547cb2 802 sprintf( output,"A2\r\n" );
Yo_Robot 31:7e2cdd547cb2 803 }
Yo_Robot 31:7e2cdd547cb2 804 if ( limite_3 == 1 ) // Alarma muy cerca al encoder
Yo_Robot 31:7e2cdd547cb2 805 {
Yo_Robot 31:7e2cdd547cb2 806 sprintf( output,"A1\r\n" );
Yo_Robot 31:7e2cdd547cb2 807 }
Yo_Robot 31:7e2cdd547cb2 808 if ( limite_1 == 1 || limite_4 == 1 ) // ERROR DE POSICION
Yo_Robot 31:7e2cdd547cb2 809 {
Yo_Robot 31:7e2cdd547cb2 810 sprintf( output,"A0\r\n" );
Yo_Robot 31:7e2cdd547cb2 811 }
Yo_Robot 31:7e2cdd547cb2 812
Yo_Robot 31:7e2cdd547cb2 813 else
Yo_Robot 31:7e2cdd547cb2 814 sprintf( output,"OK\r\n" );
Yo_Robot 31:7e2cdd547cb2 815 }
Yo_Robot 23:2126e38bb48c 816 else
Yo_Robot 29:52932326c45a 817 sprintf( output,"AL" );
Yo_Robot 23:2126e38bb48c 818
Yo_Robot 23:2126e38bb48c 819
Yo_Robot 23:2126e38bb48c 820 }
Yo_Robot 23:2126e38bb48c 821
Yo_Robot 21:353b0fe8fc54 822
Yo_Robot 32:4483d6c225e5 823 void setHOME_eth( char * input, char * output )
Yo_Robot 32:4483d6c225e5 824 {
Yo_Robot 32:4483d6c225e5 825 int value = atoi( input );
Yo_Robot 32:4483d6c225e5 826 pin_dir = 1; //Mover hacia el motor
Yo_Robot 32:4483d6c225e5 827 bandera_inicio = 1; // Informar a ISR_Adv_motor() acerca del Homing
Yo_Robot 32:4483d6c225e5 828 setPTO( value * 1000 ); // a la velocidad seteada en KiloHertzios
Yo_Robot 32:4483d6c225e5 829
Yo_Robot 32:4483d6c225e5 830 if( pin_alm == 0 )
Yo_Robot 32:4483d6c225e5 831 {
Yo_Robot 32:4483d6c225e5 832 if ( limite_2 == 1 ) // Alarma muy cerca al encoder
Yo_Robot 32:4483d6c225e5 833 {
Yo_Robot 32:4483d6c225e5 834 sprintf( output,"A2\r\n" );
Yo_Robot 32:4483d6c225e5 835 }
Yo_Robot 32:4483d6c225e5 836
Yo_Robot 32:4483d6c225e5 837 if ( limite_3 == 1 ) // Alarma muy cerca al encoder
Yo_Robot 32:4483d6c225e5 838 {
Yo_Robot 32:4483d6c225e5 839 if (bandera_inicio == 1)
Yo_Robot 32:4483d6c225e5 840 {
Yo_Robot 32:4483d6c225e5 841 sprintf( output,"IN\r\n" );
Yo_Robot 32:4483d6c225e5 842 }
Yo_Robot 32:4483d6c225e5 843 sprintf( output,"A1\r\n" );
Yo_Robot 32:4483d6c225e5 844 }
Yo_Robot 32:4483d6c225e5 845 if ( limite_1 == 1 || limite_4 == 1 ) // ERROR DE POSICION
Yo_Robot 32:4483d6c225e5 846 {
Yo_Robot 32:4483d6c225e5 847 sprintf( output,"A0\r\n" );
Yo_Robot 32:4483d6c225e5 848 }
Yo_Robot 32:4483d6c225e5 849
Yo_Robot 32:4483d6c225e5 850 else
Yo_Robot 32:4483d6c225e5 851 sprintf( output,"OK\r\n" );
Yo_Robot 32:4483d6c225e5 852 }
Yo_Robot 32:4483d6c225e5 853 else
Yo_Robot 32:4483d6c225e5 854 sprintf( output,"AL" );
Yo_Robot 32:4483d6c225e5 855
Yo_Robot 32:4483d6c225e5 856
Yo_Robot 32:4483d6c225e5 857 }
Yo_Robot 32:4483d6c225e5 858
Yo_Robot 34:bdf918bc9b59 859 void getALM_eth ( char * input, char * output )
Yo_Robot 34:bdf918bc9b59 860 {
Yo_Robot 34:bdf918bc9b59 861
Yo_Robot 34:bdf918bc9b59 862 if( pin_alm == 0 )
Yo_Robot 34:bdf918bc9b59 863 {
Yo_Robot 34:bdf918bc9b59 864 if ( limite_2 == 1 ) // Alarma muy cerca al encoder
Yo_Robot 34:bdf918bc9b59 865 {
Yo_Robot 34:bdf918bc9b59 866 sprintf( output,"A2\r\n" );
Yo_Robot 34:bdf918bc9b59 867 }
Yo_Robot 34:bdf918bc9b59 868 if ( limite_3 == 1 ) // Alarma muy cerca al encoder
Yo_Robot 34:bdf918bc9b59 869 {
Yo_Robot 34:bdf918bc9b59 870 sprintf( output,"A1\r\n" );
Yo_Robot 34:bdf918bc9b59 871 }
Yo_Robot 34:bdf918bc9b59 872 if ( limite_1 == 1 || limite_4 == 1 ) // ERROR DE POSICION
Yo_Robot 34:bdf918bc9b59 873 {
Yo_Robot 34:bdf918bc9b59 874 sprintf( output,"A0\r\n" );
Yo_Robot 34:bdf918bc9b59 875 }
Yo_Robot 34:bdf918bc9b59 876
Yo_Robot 34:bdf918bc9b59 877 else
Yo_Robot 34:bdf918bc9b59 878 sprintf( output,"OK\r\n" );
Yo_Robot 34:bdf918bc9b59 879 }
Yo_Robot 34:bdf918bc9b59 880 else
Yo_Robot 34:bdf918bc9b59 881 sprintf( output,"AL" );
Yo_Robot 34:bdf918bc9b59 882
Yo_Robot 34:bdf918bc9b59 883 }
Yo_Robot 22:d5431fff164b 884
Yo_Robot 22:d5431fff164b 885
Yo_Robot 4:552beeda4722 886 /* LEGACY FUNCTIONS
Yo_Robot 4:552beeda4722 887 *
Yo_Robot 20:4b154134ab20 888 * El siguiente codigo no es utilizado por el
Yo_Robot 20:4b154134ab20 889 * programa. Sin embargo pueden servir como
Yo_Robot 20:4b154134ab20 890 * futuras referencias.
Yo_Robot 4:552beeda4722 891 */
Yo_Robot 4:552beeda4722 892 void setMR3( int newValue )
Yo_Robot 4:552beeda4722 893 {
Yo_Robot 4:552beeda4722 894 LPC_TIM2->MR3 = newValue;
Yo_Robot 4:552beeda4722 895 }
Yo_Robot 4:552beeda4722 896
Yo_Robot 4:552beeda4722 897
Yo_Robot 4:552beeda4722 898 void setPrescaler( int newValue)
Yo_Robot 4:552beeda4722 899 {
Yo_Robot 4:552beeda4722 900 LPC_TIM2->PR = newValue;
Yo_Robot 4:552beeda4722 901 }
Yo_Robot 20:4b154134ab20 902
Yo_Robot 20:4b154134ab20 903
Yo_Robot 20:4b154134ab20 904 EthernetNetIf configurarEthernet()
Yo_Robot 20:4b154134ab20 905 {
Yo_Robot 20:4b154134ab20 906 //____________ *** ARCHIVO DE CONFIGURACION ***_______________________ //
Yo_Robot 20:4b154134ab20 907
Yo_Robot 20:4b154134ab20 908 printf("\n *** CONFIGURACION ETHERNET DE MBED ***\n");
Yo_Robot 20:4b154134ab20 909 printf("Leyendo archivo de configuracion...\n\n");
Yo_Robot 20:4b154134ab20 910
Yo_Robot 20:4b154134ab20 911 FILE *fp = fopen("/local/config.txt", "r"); // Abre el archivo y lo guarda en fp
Yo_Robot 20:4b154134ab20 912
Yo_Robot 20:4b154134ab20 913 if(!fp) // En caso de no encontrarse el archivo
Yo_Robot 20:4b154134ab20 914 {
Yo_Robot 20:4b154134ab20 915 printf("\nEl archivo /mbed/config.txt no puede ser abierto!\n");
Yo_Robot 20:4b154134ab20 916 exit(1);
Yo_Robot 20:4b154134ab20 917
Yo_Robot 20:4b154134ab20 918 }
Yo_Robot 20:4b154134ab20 919 else
Yo_Robot 20:4b154134ab20 920 {
Yo_Robot 20:4b154134ab20 921 // Cadenas de caracteres desde el Archivo config.txt
Yo_Robot 20:4b154134ab20 922 char isDHCP [15]; //Modo Automatico o Manual
Yo_Robot 20:4b154134ab20 923 char empty [2]; // Linea vacia
Yo_Robot 20:4b154134ab20 924 char ip [40]; // Direccion IP
Yo_Robot 20:4b154134ab20 925 char mask [40]; // Mascara de Subred
Yo_Robot 20:4b154134ab20 926 char gate [40]; // Puerta de enlace
Yo_Robot 20:4b154134ab20 927 char dns [40]; // Direccion DNS
Yo_Robot 20:4b154134ab20 928
Yo_Robot 20:4b154134ab20 929 // Valores 'int' para agregar a la configuracion manual
Yo_Robot 20:4b154134ab20 930 int DHCP;
Yo_Robot 20:4b154134ab20 931 int n_ip[4];
Yo_Robot 20:4b154134ab20 932 int n_mask[4];
Yo_Robot 20:4b154134ab20 933 int n_gate[4];
Yo_Robot 20:4b154134ab20 934 int n_dns[4];
Yo_Robot 20:4b154134ab20 935
Yo_Robot 20:4b154134ab20 936
Yo_Robot 20:4b154134ab20 937 // Leer linea a linea el archivo
Yo_Robot 20:4b154134ab20 938 fgets( isDHCP, 15, fp );
Yo_Robot 20:4b154134ab20 939 fgets( empty, 2, fp );
Yo_Robot 20:4b154134ab20 940 fgets( ip, 40, fp );
Yo_Robot 20:4b154134ab20 941 fgets( mask, 40, fp );
Yo_Robot 20:4b154134ab20 942 fgets( gate, 40, fp );
Yo_Robot 20:4b154134ab20 943 fgets( dns, 40, fp );
Yo_Robot 20:4b154134ab20 944
Yo_Robot 20:4b154134ab20 945 printf("Cerrando archivo...\n");
Yo_Robot 20:4b154134ab20 946 fclose(fp);
Yo_Robot 20:4b154134ab20 947
Yo_Robot 20:4b154134ab20 948 // Extraer los valores numericos
Yo_Robot 20:4b154134ab20 949 sscanf( isDHCP,"%*s %d",&DHCP );
Yo_Robot 20:4b154134ab20 950
Yo_Robot 20:4b154134ab20 951 sscanf( ip,"%*s %d.%d.%d.%d",&n_ip[0],&n_ip[1],&n_ip[2],&n_ip[3] );
Yo_Robot 20:4b154134ab20 952 sscanf( mask,"%*s %d.%d.%d.%d",&n_mask[0],&n_mask[1],&n_mask[2],&n_mask[3] );
Yo_Robot 20:4b154134ab20 953 sscanf( gate,"%*s %d.%d.%d.%d",&n_gate[0],&n_gate[1],&n_gate[2],&n_gate[3] );
Yo_Robot 20:4b154134ab20 954 sscanf( dns,"%*s %d.%d.%d.%d",&n_dns[0],&n_dns[1],&n_dns[2],&n_dns[3] );
Yo_Robot 20:4b154134ab20 955
Yo_Robot 20:4b154134ab20 956
Yo_Robot 20:4b154134ab20 957 if(DHCP) //En caso de modo DHCP
Yo_Robot 20:4b154134ab20 958 {
Yo_Robot 20:4b154134ab20 959 printf("\n Configurar red de manera automatica\n");
Yo_Robot 20:4b154134ab20 960 EthernetNetIf eth; //Crea la interfaz
Yo_Robot 20:4b154134ab20 961 EthernetErr ethErr = eth.setup();
Yo_Robot 20:4b154134ab20 962 if( ethErr )
Yo_Robot 20:4b154134ab20 963 {
Yo_Robot 20:4b154134ab20 964 printf( "Error %d en la configuracion\n", ethErr );
Yo_Robot 20:4b154134ab20 965 exit(1);
Yo_Robot 20:4b154134ab20 966 }
Yo_Robot 20:4b154134ab20 967
Yo_Robot 20:4b154134ab20 968 printf("Configuracion Correcta\n\n");
Yo_Robot 20:4b154134ab20 969 return eth;
Yo_Robot 20:4b154134ab20 970 }
Yo_Robot 20:4b154134ab20 971 else
Yo_Robot 20:4b154134ab20 972 {
Yo_Robot 20:4b154134ab20 973 sscanf( ip,"%*s %d.%d.%d.%d",&n_ip[0], &n_ip[1], &n_ip[2], &n_ip[3] );
Yo_Robot 20:4b154134ab20 974 sscanf( mask,"%*s %d.%d.%d.%d",&n_mask[0],&n_mask[1],&n_mask[2],&n_mask[3] );
Yo_Robot 20:4b154134ab20 975 sscanf( gate,"%*s %d.%d.%d.%d",&n_gate[0],&n_gate[1],&n_gate[2],&n_gate[3] );
Yo_Robot 20:4b154134ab20 976 sscanf( dns,"%*s %d.%d.%d.%d",&n_dns[0], &n_dns[1], &n_dns[2], &n_dns[3] );
Yo_Robot 20:4b154134ab20 977 printf(" %s %s %s %s %s\n " , isDHCP, ip, mask, gate, dns );
Yo_Robot 20:4b154134ab20 978
Yo_Robot 20:4b154134ab20 979 printf("\n Configurar red de manera manual\n");
Yo_Robot 20:4b154134ab20 980 EthernetNetIf eth(
Yo_Robot 20:4b154134ab20 981 IpAddr( n_ip[0], n_ip[1], n_ip[2], n_ip[3]), //IP Address
Yo_Robot 20:4b154134ab20 982 IpAddr( n_mask[0],n_mask[1],n_mask[2],n_mask[3]), //Network Mask
Yo_Robot 20:4b154134ab20 983 IpAddr( n_gate[0],n_gate[1],n_gate[2],n_gate[3]), //Gateway
Yo_Robot 20:4b154134ab20 984 IpAddr( n_dns[0], n_dns[1], n_dns[2], n_dns[3] ) //DNS
Yo_Robot 20:4b154134ab20 985 );
Yo_Robot 20:4b154134ab20 986
Yo_Robot 20:4b154134ab20 987 EthernetErr ethErr = eth.setup();
Yo_Robot 20:4b154134ab20 988 if( ethErr )
Yo_Robot 20:4b154134ab20 989 {
Yo_Robot 20:4b154134ab20 990 printf( "Error %d en la configuracion\n", ethErr );
Yo_Robot 20:4b154134ab20 991 exit(1);
Yo_Robot 20:4b154134ab20 992 }
Yo_Robot 20:4b154134ab20 993
Yo_Robot 20:4b154134ab20 994 printf("Configuracion Correcta\n\n");
Yo_Robot 20:4b154134ab20 995 return eth;
Yo_Robot 20:4b154134ab20 996 }
Yo_Robot 20:4b154134ab20 997
Yo_Robot 20:4b154134ab20 998 }
Yo_Robot 20:4b154134ab20 999
Yo_Robot 20:4b154134ab20 1000 EthernetNetIf eth;
Yo_Robot 20:4b154134ab20 1001 return eth;
Yo_Robot 20:4b154134ab20 1002 }