Autor Tema: Cómo calcular tiempo de ejecución de líneas  (Leído 3145 veces)

0 Usuarios y 1 Visitante están viendo este tema.

Desconectado badtzdizzy

  • Colaborador
  • PIC16
  • *****
  • Mensajes: 234
Cómo calcular tiempo de ejecución de líneas
« en: 07 de Abril de 2005, 12:00:00 »
Hola

Me gustaría saber cómo puedo hacerle para saber cuánto tiempo estoy utilizando en cierta función implementada, por ejemplo ésta:
Codigo:

void adquirir()
   {
      set_adc_channel( 0 );
      dato = read_adc();
      datolow=dato;
      temp=(dato>>8);
      datohigh=temp&3;
      putc(datohigh);
      putc(datolow);
      
      delay_us(30);
          
                     set_adc_channel( 3 );
                     dato = read_adc();
      datolow=dato;
      temp=(dato>>8);
      datohigh=temp&3;
      putc(datohigh);
      putc(datolow);      
    }


Esto lo hago porque me gustaría intercalar esta función con un delay para en total tener un retardo de mas o menos 1 ms. Gracias por cualquier sugerencia o comentario.  

Desconectado Nocturno

  • Administrador
  • DsPIC33
  • *******
  • Mensajes: 18310
    • MicroPIC
RE: Cómo calcular tiempo de ejecución de líneas
« Respuesta #1 en: 07 de Abril de 2005, 12:10:00 »
Para calcular el tiempo que tarda tu programa necesitarás tres datos:
1- saber cuántas y cuáles instrucciones ASM ocupa tu programa. La mayoría de los compiladores tienen una opción para visualizar el fichero LST que intercala entre cada línea de tu programa C su equivalencia en ASM.
2- saber cuántos ciclos de instrucción consume cada instrucción. La mayoría será de 1 sólo ciclo, pero algunas consumen más. Lo puedes ver en el datasheet de tu micro.
3- saber cuántos ciclos de reloj necesita un ciclo de instrucción. Lo normal en PICs es que cada instrucción necesite 4 ciclos de reloj. La duración de un ciclo de reloj será, obviamente, el resultado de 1/frecuencia_reloj

Con estos tres datos podrás calcular fácilmente cuánto durará tu rutina.

Desconectado badtzdizzy

  • Colaborador
  • PIC16
  • *****
  • Mensajes: 234
RE: Cómo calcular tiempo de ejecución de líneas
« Respuesta #2 en: 07 de Abril de 2005, 12:31:00 »
Gracias por el tip

Lo que sucede es que esa función me va a estar muestreando dos canales de ADC y enviando los datos por puerto serie. Pero todo esto dentro de la generación de una señal cuadrada para controlar un motor.

Desconectado badtzdizzy

  • Colaborador
  • PIC16
  • *****
  • Mensajes: 234
RE: Cómo calcular tiempo de ejecución de líneas
« Respuesta #3 en: 07 de Abril de 2005, 13:49:00 »
Pues haciendo uso del osciloscopio e implementando la función en una sola rutina para el pic, pude observar que el tiempo de ejecución anda alrededor de los 4ms, razón por la cual, no puedo colocar mi función en la generación de la señal cuadrada ya que me colgaría un rato el pic. Trataré por otras formas y de todos modos gracias.


 

anything