Debug IAR - tempo de instrução

Software e Hardware para uC Texas

Moderadores: andre_luis, 51

Debug IAR - tempo de instrução

Mensagempor kunde » 29 Mai 2008 17:51

Olá pessoal.

Estou fuçando no IAR mas não consegui encontrar uma forma de debugar quanto tempo um bloco de instruções esta demorando para executar.

Alguém poderia dar uma dica? Quero debugar utilizando o IAR em modo FET com o gravador JTAG, não no modo simulação.

Obrigado.

Cláudio
kunde
Bit
 
Mensagens: 17
Registrado em: 14 Fev 2007 22:52

Mensagempor Fábio Pereira » 29 Mai 2008 19:48

Neste caso, uma forma é utilizar um timer: você zera a contagem do timer no início da função e pára o mesmo ao término da função. Como o clock do timer é conhecido, o total de contagens do mesmo multiplicado pelo período do clock do timer vai resultar no tempo de execução da função (cuidado apenas com o estouro da contagem do timer).

Outra forma consiste em utilizar um pino de I/O e um osciloscópio ...

T+
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 kunde » 29 Mai 2008 20:10

São boas opções Fábio, porém meu problema é exatamente com os timers A e B do MSP430F149.
Estou usando o Timer A e B e estou percebendo que quando uma das interrupções de timer é atendida, ocorre uma distorção na outra.
Isso independe da quantidade de código que tenho na interrupção do timer.
Por exemplo: Um teste básico que fiz foi configurar os timers A e B (com tempos diferentes) e escopar o estouro de tempo de cada um. Percebi que quando um dos timers é atendido, ele afeta o tempo do outro e como estou trabalhando com tempos na ordem de 1 microsegundo isto esta fazendo a diferença.
Mesmo assim vou aproveitar e fazer outra pergunta. Meus registradores TAR e TBR são afetados pelo atendimento de alguma interrupção (port, serial outro timer), ou eu tenho a garantia de que eles sempres estarão sendo incrementados a cada 125 ns para um clock de 8Mhz?

Obrigado.

Cláudio
kunde
Bit
 
Mensagens: 17
Registrado em: 14 Fev 2007 22:52

Mensagempor Fábio Pereira » 30 Mai 2008 08:32

Não, a contagem dos timers e os eventos relacionados a eles não são afetados por outras interrupções.

Porém, é importante saber que há uma latência entre o periférico gerar o pedido de interrupção e a CPU efetivamente executar o código da ISR.

Esta latência mínima é especificada pelo fabricante (no caso dos MSP430 a latência mínima é 6 ciclos de clock), mas a latência máxima depende totalmente de como você desenhou a sua aplicação.

ISRs muito longas acabam aumentando substancialmente a latência das outras interrupções. Isto é agravado ainda mais quando se utiliza interrupções com freqüência muito alta (como no seu caso).

T+
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


Voltar para Texas

Quem está online

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

x