Página 1 de 1

duvida sobre funcao memset "CCS"

MensagemEnviado: 25 Ago 2009 10:58
por marciosysc
Ola, estou com um pequeno problema no meu sftw e estou imaginando que seja por causa da funcao memset do compilador C da CCS.

Estou usando um PIC, C18 (4620).

O proplema:

Na interrupcao copio uma array1[13] para outro array de mesmo tamanho para atualizacao de saidas. Porem fora da interrupcao utilizo outro array2[13] que eh copiado para o arry1 na interrupcao com o comando memcpy. Neste array2 que trabalho fora da interrupcao zero com o comando memset. (o erro eh aleatorio)

O caso eh que meu sftw estava travando, "se perdendo" e nao conseguia achar o problema. Fui fazendo alguns testes e resolvi de ao inves de limpar com memset usar um loop for().

Resultado nao travou mais!

Gostaria de saber se alguem ja viu algo igual ou tem mais alguma ideia do que poderia estar acontecendo. Caso contrario fica como alerta!
:shock:

MensagemEnviado: 25 Ago 2009 12:55
por xultz
Um troço que mata nos PICs é o maldito limite de stack, e é possível que chamando o memset o stack esteja sendo estourado por chamar rotina dentro de rotina, e este é um dos bugs mais difíceis de encontrar.

MensagemEnviado: 25 Ago 2009 16:19
por marciosysc
xultz escreveu:Um troço que mata nos PICs é o maldito limite de stack, e é possível que chamando o memset o stack esteja sendo estourado por chamar rotina dentro de rotina, e este é um dos bugs mais difíceis de encontrar.


Nao acredito que seja isto pois observando meu arquivo ".sta" percebi que estou usando apenas 12 posicoes de stack no pior caso. Sendo que tenho um total de 26.

MensagemEnviado: 25 Ago 2009 16:28
por fabim
Porque você esta utilizando estes comandos, se sabe que são eles que estão com problema ?
E porque não cria um ponteiro indica a direção de preenchimento e vai mandando os dados ?

Muitissimo raro eu utilizar comandos nativos que manipulam transição de dados.

Pense em fazer o seu, basta criar ponteiro e incrementar e comparar e etc.

Abraços

Fabim

MensagemEnviado: 26 Ago 2009 08:15
por ivan
Pq vc não posta o trecho de código q está dando o erro? Pode ser um detalhe q passa desapercebido aos olhos acostumados com o código.

MensagemEnviado: 27 Ago 2009 15:03
por marciosysc
Ola pessoal, deculpe pela demora de responder.

Talvez eu nao tenha sido tao claro.

Mas vamos la. Como disse na primeira postagem eu ja tinha resolvido o problema deixando de usar a funcao memset(meuArray,0,sizeof(meuArray)) por:
for(i=0;i<sizeof(meuArray);i++){ meuArray[i] = 0;}.

Portanto minha unica duvida como ja havia mensionado eh se alguem ja tinha passado por alguma coisa parecida. E alertar para outras pessoas que poderiam vir a ter algum problema como este que no meu caso fazia com que o sftw se perdesse.

Agradeco a atencao de todos.