Publicidade:

terça-feira, 30 de dezembro de 2014

Arduino - Dicas de Programação 06 - tempo de processamento

Exemplo de como contar o tempo de processamento de um determinado procedimento.



código:



void setup() {
  Serial.begin(9600);
  pinMode(3, OUTPUT);
}

void conta_tempo(void(*p)(), String descricao){
  long m1, m2;

  m1 = millis();
  
  (*p)(); //executa a função
  
  m2 = millis();
 
  Serial.print(descricao + ": m1= ");
  Serial.print(m1);
  Serial.print(" - m2 = ");
  Serial.print(m2);
  Serial.print(" - dif = ");
  Serial.print(m2 - m1);
  Serial.println(" milissegundos");
}

void proc_01(){ for (long i=0; i< 10000; i++) { digitalWrite(3, !digitalRead(3)); } } 
void proc_02(){ for (long i=0; i< 30000; i++) { digitalWrite(3, !digitalRead(3)); } } 
void proc_03(){ for (long i=0; i< 100000; i++){ digitalWrite(3, !digitalRead(3)); } } 

void loop() {
  
  conta_tempo(proc_01, "proc 01");
  conta_tempo(proc_02, "proc 02");
  conta_tempo(proc_03, "proc 03");
  
  //proc_01();
  //proc_02();
  //proc_03();
}



2 comentários:

  1. oi boa noite fabiano kra vc ta me ajudando de mais tenho muita vontade de aprender e essa é uma chance que tenho
    que Deus te abençoe

    tenho só um pouquinho de duvida Sob o ponteiro que vc colocou vai ficar armazenado dentro de (*p) (proc_01()); mais ou menos assim tenho zap se vc quiser me add (98) 988751206 tenho muito interesse em aprender

    ResponderExcluir
    Respostas
    1. e ai Marcio. blz?
      o parâmetro da função conta_tempo é um ponteiro pra uma função,
      mas essa função tem que ser do tipo void e não ter nenhum parametro,
      como pode ser visto na declaração do parâmetro:

      void(*p)()

      p é o nome do ponteiro

      aí dentro da função vc chama essa função pra onde o ponteiro aponta.

      veja, que com isso, vc consegue executar diferentes funções a partir
      do mesmo lugar.

      qualquer dúvida é só falar.

      Excluir