Beispiel #1
0
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();

		  }