Ir ao conteúdo
  • Cadastre-se

Tempo que demora uma função/leitura em um Microcontrolador PIC


Posts recomendados

Boa noite, estou encucado com isso, mas gostaria de saber como calcular/saber o tempo que demora uma função em um microcontrolador PIC para ser executada. Tipo, estou querendo saber quanto tempo o PIC leva para fazer duas leituras de um protocolo de comunicação, usando umas funções que criei. Pensei em usar o timer0 para tentar calcular pela função "get_timer0()" mas não obtive sucesso. :P

 

Bom, utilizo o compilador CCS e o microntrolador PIC18F4520.

Se puderem mandar algum algoritmo, formula ou código mesmo, agradeço desde já!! Obg.

Link para o comentário
Compartilhar em outros sites

  • Membro VIP

Vai depender do cristal usado e das instruções utilizadas, em assembly, depois de compilado o programa. Consultando o datasheet, soma-se os tempos de todas as instruções que serão executadas nela.

Outra opção é:

Assim que entrar na função, disparar um timer e ao sair, parar o mesmo, mas aí teria de apresentar o tempo contado em algum display ou mandar o valor do tempo pela serial para ser lido por um PC.

No caso tem que descontar o tempo da instrução de disparo do timer e a de parada do mesmo.

Tem também a seguinte questão:

Tem certas instruções que o numero de ciclos variam caso uma condição seja verdadeira ou falsa.

Não sei se fui claro.

Veja no exemplo abaixo (a partir da página 270 do datasheet)

post-387879-0-04386500-1417840742_thumb.

Link para o comentário
Compartilhar em outros sites

  • Membro VIP

uma opção não muito ortodoxa é usar osliloscópio. Tipo faça:

funcao(){RB0=1;RB0=0; //ou só RB0=1;//faz o que tem que fazerRB0=1;RB0=0;//ou só RB0=0;}

e meça o tempo entre pulsos

 

Outra: caso não tenha osciloscópio mas tenha um debugger qualquer, pode analisar com o próprio mplab usando a opção view- simulator logic analyser e escolhendo o canal RB0. clique em cursor pra facilitar. O intervalo é medido em ciclos (apesar que o help dele diz que pode medir em segundos) mas como cada ciclo ocupa 4 pulsos do cristal é fácil fazer as contas

E mais outra: Também pode colocar um breakpoint no início e no fim da função

Link para o comentário
Compartilhar em outros sites

Pois é xykoTE, utilizo um cristal de 20MHz e tenho acesso a comunicação Serial via radio-PC, contudo programo em C pelo software CCS, e Isadora Ferraz, gostaria de uma coisa mais prática, mais por via linha de código, tipo usando o timer0 do própio PIC. Pois esse tempo que desejo calcular é porque faço a comunicação com um sensor pelo barramento I2C e gostaria de saber o tempo que levou para obter a cada duas leituras;

Tentei usando set_timer0 e coletando dps de um tempo pelo get_timer0, mas não obtive sucesso. Acredito está fazendo errado.

Link para o comentário
Compartilhar em outros sites

Visitante
Este tópico está impedido de receber novas respostas.

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×
×
  • Criar novo...