Segredos do CCS

Software e Hardware para uC PIC

Moderadores: andre_luis, 51, guest2003, Renie

Segredos do CCS

Mensagempor Fabio_Jerena » 08 Jun 2007 14:21

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!!!
Fábio Jerena
Fabio_Jerena
Nibble
 
Mensagens: 52
Registrado em: 08 Mar 2007 08:59

Mensagempor Fábio Pereira » 08 Jun 2007 14:37

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
Fábio Pereira
embeddedsystems.io
Avatar do usuário
Fábio Pereira
Word
 
Mensagens: 674
Registrado em: 16 Out 2006 09:07
Localização: Kitchener, ON

Mensagempor Fabio_Jerena » 08 Jun 2007 16:25

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
Fábio Jerena
Fabio_Jerena
Nibble
 
Mensagens: 52
Registrado em: 08 Mar 2007 08:59

Mensagempor Fábio Pereira » 08 Jun 2007 18:51

Creio que não, você terá de executar o código no MPLAB e medir os tempos.

Até +
Fábio Pereira
embeddedsystems.io
Avatar do usuário
Fábio Pereira
Word
 
Mensagens: 674
Registrado em: 16 Out 2006 09:07
Localização: Kitchener, ON

Mensagempor Andre Rasminio » 08 Jun 2007 22:31

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.
Andre Rasminio
Bit
 
Mensagens: 26
Registrado em: 14 Abr 2007 17:30
Localização: Vale da Eletrônica

Mensagempor lpagano » 12 Jun 2007 15:27

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.
lpagano
Byte
 
Mensagens: 393
Registrado em: 06 Nov 2006 14:23

Mensagempor Doglao » 12 Jun 2007 19:38

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
null
Doglao
Byte
 
Mensagens: 101
Registrado em: 12 Mai 2007 12:13
Localização: null

Mensagempor fabim » 13 Jun 2007 09:16

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
fabim
Dword
 
Mensagens: 5001
Registrado em: 16 Out 2006 10:18
Localização: aqui uái!!!?

Mensagempor ÁgioFelipe » 18 Jun 2010 14:01

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?
ÁgioFelipe
Word
 
Mensagens: 626
Registrado em: 27 Out 2006 20:04

Mensagempor Rodrigo_P_A » 18 Jun 2010 14:17

Á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
---
Avatar do usuário
Rodrigo_P_A
Dword
 
Mensagens: 2237
Registrado em: 12 Out 2006 18:27
Localização: Osasco - S.P - Brasil

Mensagempor ÁgioFelipe » 18 Jun 2010 16:41

ICD?? Não quero fazer debug no circuito, somente executar meu programa passo a passo observando o valor das variáveis.
ÁgioFelipe
Word
 
Mensagens: 626
Registrado em: 27 Out 2006 20:04

Mensagempor Rodrigo_P_A » 18 Jun 2010 17:41

Á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
---
Avatar do usuário
Rodrigo_P_A
Dword
 
Mensagens: 2237
Registrado em: 12 Out 2006 18:27
Localização: Osasco - S.P - Brasil

Mensagempor ÁgioFelipe » 20 Jun 2010 11:36

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.
ÁgioFelipe
Word
 
Mensagens: 626
Registrado em: 27 Out 2006 20:04

Mensagempor KrafT » 21 Jun 2010 08:13

Isso ocorre quando vc usa a rotina de delay do CCS...
Avatar do usuário
KrafT
Dword
 
Mensagens: 2228
Registrado em: 11 Out 2006 14:15
Localização: Blumenau -SC

Mensagempor ÁgioFelipe » 21 Jun 2010 12:58

É eu notei, também tinha as rotinas do LCD, agora estou conseguindo.

Valeu.
ÁgioFelipe
Word
 
Mensagens: 626
Registrado em: 27 Out 2006 20:04

Próximo

Voltar para PIC

Quem está online

Usuários navegando neste fórum: Nenhum usuário registrado e 1 visitante

x