Página 1 de 2

Segredos do CCS

MensagemEnviado: 08 Jun 2007 14:21
por Fabio_Jerena
Pessoal, eu faço alguns programinhas no CCS porem não domino a ferramenta, em Assembly se conta ciclos de máquina por instrução para se ter noção do tempo de execução de uma instrução, de um programa.
Como eu obtenho essas referencias no CCS (a única solução é converter o arquivo em assembly e ficar contando), fico totalmente perdido quanto ao tempo que levam meus programas para serem executados, principalmente na parte de interrupções e etc...
Alguém pode me dar uns toques como calcular o tempo das minhas rotinas, funções, tratamento de interrupções e etc utilizando recursos do próprio CCS, isso é, se eles existem?!
Muito obrigado!!!

MensagemEnviado: 08 Jun 2007 14:37
por Fábio Pereira
Olá Fabio,

Bom, em programação de alto-nível isso não é tão simples pois o tempo que um comando vai necessitar para ser executado irá depender de como o compilador vai produzir o código. Isso vai depender de fatores como nível de otimização do compilador, tipos de dados, etc.

Usualmente o que eu faço é verificar nos simuladores o tempo gasto para executar uma função ou trecho do código que eu queira verificar. Também é possível utilizar um pino de E/S, que é ativado no início da função e desativado no final dela. Assim, com um osciloscópio, você pode medir com precisão o tempo de execução.

Até +

Fábio

MensagemEnviado: 08 Jun 2007 16:25
por Fabio_Jerena
Fábio Pereira escreveu:Olá Fabio,

Bom, em programação de alto-nível isso não é tão simples pois o tempo que um comando vai necessitar para ser executado irá depender de como o compilador vai produzir o código. Isso vai depender de fatores como nível de otimização do compilador, tipos de dados, etc.

Usualmente o que eu faço é verificar nos simuladores o tempo gasto para executar uma função ou trecho do código que eu queira verificar. Também é possível utilizar um pino de E/S, que é ativado no início da função e desativado no final dela. Assim, com um osciloscópio, você pode medir com precisão o tempo de execução.

Até +

No CCS não têm nenhuma função pronta para isso, tipo um Depurador que vai passo a passo verificando o código???
estou fazendo uma rotininha para decodificar o HT6P20B e não sei se a rotina está levando muito tempo (uma das causas de não funcionar meu programa)...

Fábio

MensagemEnviado: 08 Jun 2007 18:51
por Fábio Pereira
Creio que não, você terá de executar o código no MPLAB e medir os tempos.

Até +

MensagemEnviado: 08 Jun 2007 22:31
por Andre Rasminio
Eu normalmente faço o que o Fábio Pereira falou, mas você pode ver o código gerado em Assembly pelo CCS e contar o nº de instruções gerado para aquela tua rotina, podendo estimar o tempo.

MensagemEnviado: 12 Jun 2007 15:27
por lpagano
Eu também desisto de contar os ciclos quando programo em C pois dependendo do programa o compilador otimiza de maneira diferente, ou seja, muda as instruções e consequentemente, pode mudar o número de ciclos.
Nesse caso, tente fazer a programação em Assembly nos trechos que você puder, assim fica mais fácil para você controlar o tempo de execução.

MensagemEnviado: 12 Jun 2007 19:38
por Doglao
Ola!
Se voce estiver usando o CCS no mplab ele tem uma ferramenta chamada StopWatch, para usa-la voce tem que compilar para simulacao MPLAB SIM, modificar o clock do processador na simulacao para o que voce vai usar no projeto em Debugger->Settings... na barra de ferramentas vai aparecer uma janela "Simulator Settings" e na aba "Osc/Trace" modifique para o clock que vai no seu projeto e clique em ok. Depois coloque BreakPoints no seu programa aonde voce quer saber o tempo, um BP no comeco e outro aonde ele termina. Abra o StopWatch em Debugger->StopWach na barra de ferramentas, faca funcionar o seu simulador ate chegar no primeiro breakpoint da funcao que voce quer medir o tempo e na janela do StopWatch clique no botao "Zero" observe que tem informacao para o ponto zero e o total da simulacao. A partir de ai, comece a simular com o debugger, se neste trecho do seu programa nao tem saltos para funcoes que fiquem em um loop infinito ou comunicacao serial e etc..., aproveite para fazer a simulacao direta apertando a tecla F9 do seu teclado que o programa vai parar no ultimo BP do trecho que voce selecionou. Nesta janela do StopWatch vai estar o tempo em us ou ms e os cliclos de maquina.
Bem..., se esse sistema eh confiavel alguem de uma opniao!
Abcs

MensagemEnviado: 13 Jun 2007 09:16
por fabim
bom eu não mexo com C.
Mais o stopwatch do MPLAB, é totalmente confiavel 100%.....

Tudo que eu preciso ter extrema certesa de tempo eu uso ele.

Na pratica as miseras diferenças é causado pelo cristal. um trimmer resolve o caso. "isso para frequencimetro etc".


Abraços

Fabim

MensagemEnviado: 18 Jun 2010 14:01
por ÁgioFelipe
Pessoal, no CCS também não tem nenhuma função na qual eu execute um programa passo a passo e possa visualizar o valor das variáveis?

MensagemEnviado: 18 Jun 2010 14:17
por Rodrigo_P_A
ÁgioFelipe escreveu:Pessoal, no CCS também não tem nenhuma função na qual eu execute um programa passo a passo e possa visualizar o valor das variáveis?


vc tem que usar o MPLAP com o PLUGIN do CCS e o ICD seja 1, 2 ou 3

MensagemEnviado: 18 Jun 2010 16:41
por ÁgioFelipe
ICD?? Não quero fazer debug no circuito, somente executar meu programa passo a passo observando o valor das variáveis.

MensagemEnviado: 18 Jun 2010 17:41
por Rodrigo_P_A
ÁgioFelipe escreveu:ICD?? Não quero fazer debug no circuito, somente executar meu programa passo a passo observando o valor das variáveis.


então dá pra fazer no MPLAB, usando o simulador, desde que vc instale o plugin da ccs para rodar no mplab

MensagemEnviado: 20 Jun 2010 11:36
por ÁgioFelipe
Instalei e realmente dar para ver, só que a simulação passo a passo fica muito maluca, de repente a execução vai lá para os #fuses do nada.

MensagemEnviado: 21 Jun 2010 08:13
por KrafT
Isso ocorre quando vc usa a rotina de delay do CCS...

MensagemEnviado: 21 Jun 2010 12:58
por ÁgioFelipe
É eu notei, também tinha as rotinas do LCD, agora estou conseguindo.

Valeu.