fiz um contador de loop para saber a velocidade real com que o arduino executa

finalizei mais um projeto, e como todo final de projeto eu sempre reviso o código novamente para tentar otimizar ao máximo minha logica de execução. foi então onde tive a ideia de criar um contador de loop para saber a velocidade de execução em cada parte do meu programa.
é um programa simples e que pode ser acrescentado em qualquer program já pronto,

sei que os 16MHZ estão longe da realidade, mas não imaginava tanto.

testei no meu arduino uno e somente o programa contador de loop rodando deu em torno de 260 KHZ

testei tambem no programa mais complexo que desenvolvi:
a velocidade minima chegou em 37 voltas por segundos em algumas partes

a velocidade maxima chegou a 15.8 KHZ em outras partes desse mesmo programa


eu criei esse programa usando um modulo timmer clock externo , mas já estou trabalhando em uma versão utilizando a função millis

mais informações só comentar em baixo 

Exibições: 927

Responder esta

Respostas a este tópico

Olá, e cade o code?

Você usou qual linguagem, wiring (Arduino), c padrão ou assembly ?

Boa tarde VD.

o que vou escrever está baseado em um PIC .

Vou falar sobre o PIC, pois conheço muito bem o dataflow do PIC e ainda não estudei a fundo o dataflow do atmega.

Vou me basear num PIC muito popular. o PIC18F628A.

Ele tem um tempo de execução de cada instrução de maquina de 4 pulsos do clock.

Ou seja,  se o oscilador for de 4Mhz, cada pulso de clock terá 4.000.000 de pulsos em um segundo.

Significa que cada pulso de clock terá uma duração de 0,25 uS e cada instrução de maquina será executada em 1 uS.

Só que uma instrução de C pode precisar de varias instruções de maquina para ser completada.

Veja se uma instrução de C precisar de 5 instruções para ser executada, o que era 4Mhz, já cai para 

4 MHz /4 ciclos /5 instruções  = 0,2MHz ou 200KHz.

Ao fazer o programa para calcular o desempenho, as instruções deste programa contaminarão

os resultados.

Sugiro que ao fazer algo que possa medir o desempenho de um processador, utilize a programação ao mais

baixo nível de linguagem, utilizando por exemplo assembly, que afetará ao minimo os resultados.

Rui

RSS

© 2024   Criado por Marcelo Rodrigues.   Ativado por

Badges  |  Relatar um incidente  |  Termos de serviço