Programa Morrendo !!! esta é boa !!!

Software e Hardware para uC PIC

Moderadores: andre_luis, 51, guest2003, Renie

Programa Morrendo !!! esta é boa !!!

Mensagempor marcospaf » 09 Out 2007 23:28

fala ai pessoal , tenho um super problema , talvez até ajude a outras pessoas.

bom vamos lá.

Eu ja programo pic a bastante tempo , porem notei que em determinadas aplicações o PIC TRAVA MESMO , mesmo tendo o wdt ele não volta, fica travado.

Eu só verifiquei este fenômeno quando uso comunicação , ou seja numa rs485 por exemplo.

Hoje mesmo eu fiz um ensaio , vamos la :

eu possuo um pic 16f628a , com 4 entradas , uma saida .

esta saída é o controle envia da 485 , ou seja quando o pino está em nivel 0 esta recebendo e quando esta em nivel 1 esta enviando.

todas as entradas estão com optoacopladores .

o que eu fiz , eu gerei uma condição de entrada que não acontece normalmente , praticamente impossivel . fiquei gerando pulsos numa destas entradas . Toda vez que gero um pulso eu gero uma transmissão!!!

comecei a gerar pulsos muitos rapidos e teve uma hora que o pic travou mesmo , não reiniciava por watchdog.

existe algo para isso?? bom ja escutei em falar em preencher toda a memoria de programa com goto$ porem não sei se funciona , estou aberto a sugestões !!!

abração
marcospaf
Bit
 
Mensagens: 26
Registrado em: 13 Nov 2006 12:48

Mensagempor guest2003 » 10 Out 2007 07:58

Ola,

Existem varios porens nas suas colocacoes...

Quando voce diz que o PIC "travou" voce esta querendo dizer que ele parou de comunicar certo ? (pois pela descricao do seu circuito esta eh a unica forma de verificar isso) de uma lida na parte da UART do datasheet... pois se houver erro de frame / overrun / etc a serial "congela" e so volta a vida apos ser reiniciada... neste caso seu WDT nao vai atuar, pois tudo esta normal, apenas a serial "congelou"

Sugestao, implemente um LED piscando numa saida qquer, e faca o mesmo teste, e veja se quando o PIC trava o LED tambem para de funcionar...

outra coisa que as vezes passa desapercebido pelo pessoal... o simple fato de "usar" o WDT nao quer dizer que ele vai funcionar... onde o CLRWDT vai ser colocado deve ser bem pensado, caso contrario o programa pode travar e o WDT nao resetar...

eh isso...
http://www.sethi.com.br (Institucional)
http://www.sethi3d.com.br (Impressoras 3d)
http://www.sethi.com.br/blog (Blog Impressoras 3d)
Avatar do usuário
guest2003
Word
 
Mensagens: 746
Registrado em: 13 Out 2006 11:48
Localização: Campinas - SP

Mensagempor ze » 10 Out 2007 08:04

passei por algo assim tbém. travava mesmo. nem por wdog recuperava (=seu). Mas era só qdo ligava. Acho que tinha esquecido de habilitar BOR e PWRTEN.

fiz assim:
__CONFIG(PROTECT & INTIO & PWRTEN & WDTEN & BOREN & MCLRDIS);

verifique principalmente seu MCRDIS. Se MCRENable, confira circuito de reset.
(Isso foi para o PIC12F629, 16f628 tem algo semelhante)
Avatar do usuário
ze
Dword
 
Mensagens: 1655
Registrado em: 05 Jun 2007 14:32

Mensagempor marcospaf » 10 Out 2007 12:57

guest2003 escreveu:Ola,

Existem varios porens nas suas colocacoes...

Quando voce diz que o PIC "travou" voce esta querendo dizer que ele parou de comunicar certo ? (pois pela descricao do seu circuito esta eh a unica forma de verificar isso) de uma lida na parte da UART do datasheet... pois se houver erro de frame / overrun / etc a serial "congela" e so volta a vida apos ser reiniciada... neste caso seu WDT nao vai atuar, pois tudo esta normal, apenas a serial "congelou"

Sugestao, implemente um LED piscando numa saida qquer, e faca o mesmo teste, e veja se quando o PIC trava o LED tambem para de funcionar...

outra coisa que as vezes passa desapercebido pelo pessoal... o simple fato de "usar" o WDT nao quer dizer que ele vai funcionar... onde o CLRWDT vai ser colocado deve ser bem pensado, caso contrario o programa pode travar e o WDT nao resetar...

eh isso...


fala ai cara bom veja só este pic apenas transmite , nunca recebe então creio eu que não existe a possibilidade de acontecer erro por comunicação.

o wdt é colocado em lugar correto sem problema nenhum , ele realmente morre na comunicação e volta apos ser resetado.

agora eu não sabia que se houver um erro de frame ele trava , isso nunca aconteceu comigo , com erro de frame meus programas ignoram mas nunca travaram.

O que eu sei é que é relacionado a comunicação , e que trava. ele para de enviar dados pela usart. impressionante agora posso ver se ele continua operando , isso é facil vou verificar !!!
marcospaf
Bit
 
Mensagens: 26
Registrado em: 13 Nov 2006 12:48

Mensagempor marcospaf » 10 Out 2007 12:59

lellis escreveu:passei por algo assim tbém. travava mesmo. nem por wdog recuperava (=seu). Mas era só qdo ligava. Acho que tinha esquecido de habilitar BOR e PWRTEN.

fiz assim:
__CONFIG(PROTECT & INTIO & PWRTEN & WDTEN & BOREN & MCLRDIS);

verifique principalmente seu MCRDIS. Se MCRENable, confira circuito de reset.
(Isso foi para o PIC12F629, 16f628 tem algo semelhante)


fala ai cara , é eu nem to progrando em C to em baixo nivel mesmo assembly mesmo assim acontece , não sei porque.

eu só habilito o pwrten mas nunca habilitei o bor, vou experimentar, mas valeu pela dica eu te aviso se funcionar !!! valeu cara !!!
marcospaf
Bit
 
Mensagens: 26
Registrado em: 13 Nov 2006 12:48

Mensagempor marcospaf » 10 Out 2007 15:10

gostaria de acrescentar o seguinte.

no config eu estou com o power up habilitado e o bor desabilitado , e master clear tb desabilidado.

agora uma pergunta será que mesmo o master clear estando desabilitado eu devo fazer algum tipo de proteçÃo neste pino??? eu acredito que não mas aceito sugestões.

abraços a todos
marcospaf
Bit
 
Mensagens: 26
Registrado em: 13 Nov 2006 12:48

Mensagempor ze » 10 Out 2007 16:59

nunca deixe pino voando. principalmente se for entrada. se não usar, terra nele.
Avatar do usuário
ze
Dword
 
Mensagens: 1655
Registrado em: 05 Jun 2007 14:32

Mensagempor Nik » 20 Out 2007 11:06

Eu tive muitos problemas com pinos ligados diretamente ao vcc ou gnd.
Acontece que o uC entrava em latch-up, ou seja, os dois transistores internos ligados do pino para o vcc e gnd entravam em condução, e praticamente ocorria um curto na fonte.
Só consegui descobrir que era isso porque o 78L05 que alimentava o pic começava a esquentar muito. Ele aparentemente travava e nem o WDT conseguia destravar. Só desligando e religando a fonte.

O problema foi resolvido colocando resistores de 4K7 a 10k em TODOS os pinos do PIC.
Nik
Bit
 
Mensagens: 42
Registrado em: 07 Nov 2006 06:04


Voltar para PIC

Quem está online

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

cron

x