Página 1 de 1
problema de interrupcao + livraria no IAR

Enviado:
23 Jul 2009 11:53
por marciosysc
Ola amigos, estou com uma certo problema onde meu software nao esta funcionando corretamente, e acredito que seja um problema de modo de trabalho com a operacao de multiplicacao (*).
O que acontece e que tenho na minha rotina principal faco calculos onde por exemplo multiplico duas variaveis. O que percebi e que quando faco calculo na rotina de interrupcao do timer do MCU meu sftw para.
Imagino que o que esteja acontecendo e que quando esta sendo feita a multiplicacao na rotina principal e entra na interrupcao acaba subescrevendo alguma varial da livraria c.
Gostaria de saber se existe alguma forma de evitar isto, como por exemplo, dizendo ao compilador que tal operacao ou funcao que estou usando na interrupcao seja tratada como outra rotina e nao a mesma.
Estou usando o compilador IAR vs7.2 em C (para MCU CC2430 da TI com arquitetura 8051).
Obrigado.

Enviado:
23 Jul 2009 13:37
por Francesco
Ola Marcio,
Estou trabalhando com esse mesmo chip, CC2430... gostaria de saber sobre suas experiências com ele.
Quanto ao seu problema, a não ser que seja uma variável compartilhada entre a sua rotina e a interrupção, não é para dar problema. O que você pode fazer é desabilitar as interrupções durante o processo de cálculo:
- Código: Selecionar todos
EA=0;
//calculo...
EA=1;
Mas isso pode fazer com que você perca alguns dados. Veja o que você acha.

Enviado:
23 Jul 2009 18:43
por marciosysc
Estou trabalhando com esse mesmo chip, CC2430... gostaria de saber sobre suas experi�ncias com ele.
Ola francesco. Trabalho em uma empresa de automacao industrial que tem como procedimento interno e contratual nao disponibilizar a terceiros o projeto do cliente e nem o nome do mesmo. O que posso adiantar eh que com este MCU nosso principal objetivo eh trabalhar com RF.
Porem fico a disposicao caso tenha alguma duvida mais especifica.
Agradeco sua postagem.

Enviado:
23 Jul 2009 19:10
por Francesco
Olá Márcio,
Compreendo completamente o sigilo de seu projeto, pois é o que temos aqui também. No entanto, acredito que não haja problemas em discutirmos situações tão restritas quanto problemas de interrupção ou coisas equivalentes.
Fiquei curioso se conseguiu resolver seu problema com a interrupção.
Um abraço.

Enviado:
24 Jul 2009 08:37
por marciosysc
Ola Francesco,
Na verdade resolvemos de outra forma.
O calculo que faziamos na interrupcao poderia ser feito fora dela.
Com isto o sftw funcionou.
Como ja trabalhei muito com assembly em MCUs, estava imaginando que na biblioteca C, no caso a parte de calculos, poderia estar dando algum problema. Como por exemplo:
- Quando estivesse sendo executada a rotina de calculo fora da interrupcao e fosse pedida uma interrupcao onde se usa a mesma rotina, quando retornase daria algum problema como nao resgatar os valores antes de atender a interrupcao. Problema facil de se perceber e identificar em assembly.
Grato.

Enviado:
24 Jul 2009 08:56
por marciosysc
Ola Franceso,
Fizemos o teste que voce havia proposto.
EA=0;
//calculo...
EA=1;
E funcionou.
Mas como havia dito no nosso caso eh melhor tirar a rotina de calculo da interrupcao.
Obrigado!

Enviado:
24 Jul 2009 17:44
por Francesco
Márcio,
Que bom que funcionou. Esse sistema da texas é bastante complexo, mas bem funcional. parabéns.

Enviado:
25 Jul 2009 12:52
por tcpipchip
Qual o protocolo voce está usando neste Transciever ?

Enviado:
02 Set 2009 10:31
por marciosysc
Nao estou usando nenhum protocolo padrao.
Apenas um protocolo interno.