duvida sobre funcao memset "CCS"

Software e Hardware para uC PIC

Moderadores: andre_luis, 51, guest2003, Renie

duvida sobre funcao memset "CCS"

Mensagempor marciosysc » 25 Ago 2009 10:58

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:
Marcio Carvalho
marciosysc
Bit
 
Mensagens: 19
Registrado em: 19 Jan 2009 08:51

Mensagempor xultz » 25 Ago 2009 12:55

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.
98% das vezes estou certo, e não estou nem aí pros outros 3%.
Avatar do usuário
xultz
Dword
 
Mensagens: 3001
Registrado em: 13 Out 2006 18:41
Localização: Curitiba

Mensagempor marciosysc » 25 Ago 2009 16:19

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.
Marcio Carvalho
marciosysc
Bit
 
Mensagens: 19
Registrado em: 19 Jan 2009 08:51

Mensagempor fabim » 25 Ago 2009 16:28

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

Mensagempor ivan » 26 Ago 2009 08:15

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.
"A mente que se abre a uma nova idéia jamais volta ao seu tamanho original." (Albert Einstein).
Avatar do usuário
ivan
Word
 
Mensagens: 618
Registrado em: 12 Out 2006 21:27

Mensagempor marciosysc » 27 Ago 2009 15:03

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.
Marcio Carvalho
marciosysc
Bit
 
Mensagens: 19
Registrado em: 19 Jan 2009 08:51


Voltar para PIC

Quem está online

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

x