extern void InterrupRitISR(void){ InvertirLed(LED_B); InvertirLed(LED1); Chip_RIT_ClearInt(LPC_RITIMER); }
void ISR_RIT(void) { contador++; //generación de la onda cuadrada if (contador<= mitad_periodo) { valor=(uint32_t)amplitud_max; } if ((contador> mitad_periodo) &&(contador<periodo_calibracion)) { valor=(uint32_t)amplitud_min; //contador=0; //InvertirLed(LED_ROJO);/*al volverse el contador cero, se tiene un periodo a 100ms*/ } else { contador=0; //led rojo InvertirLed(LED_2);//al volverse el contador cero, se tiene un periodo contador_periodo++; } //valor=(uint32_t)contador; ConversionDA (valor);/* */ dato= ConversionAD (); if (contador_periodo==10)//cada 10T de la onda cuadrada se tiene 1seg....1T=100ms { //Transmite el valor maximo dato1=(uint16_t)amplitud_max; tension=(float)(dato1*VREF)/ESCALONES_REF;//obtengo el valor equivalente de tension de "dato" //se realiza una conversion de float a uint.. para quedarme primero con la parte entera entero=(uint16_t)tension; //convierto una variable float a uint16 TransmisionUSART(entero+'0');//se convierte en char y se envia //Se escribe el punto que separa el entero de las decimas TransmisionUSART('.'); //convierto las decimas en char y envio tension=(tension-(uint16_t)tension)*DECIMALES_PRECISION; decimas=(uint16_t)tension; TransmisionUSART(decimas+'0');//se convierte en char y se envia TransmisionUSART('\n\r'); //Transmite el valor minimo dato2=(uint16_t)amplitud_min; tension=(float)(dato2*VREF)/ESCALONES_REF;//obtengo el valor equivalente de tension de "dato" //se realiza una conversion de float a uint.. para quedarme primero con la parte entera entero=(uint16_t)tension; //convierto una variable float a uint16 TransmisionUSART(entero+'0');//se convierte en char y se envia //Se escribe el punto que separa el entero de las decimas TransmisionUSART('.'); //convierto las decimas en char y envio tension=(tension-(uint16_t)tension)*DECIMALES_PRECISION; decimas=(uint16_t)tension; TransmisionUSART(decimas+'0');//se convierte en char y se envia TransmisionUSART('\n\r'); } else { contador_periodo=0; /*Toglea el led verde*/ InvertirLed(LED_3); } LimpiarBandera(); }