Página 1 de 1

Ativação do watchdog enquanto roda um programa

MensagemEnviado: 14 Abr 2008 13:35
por lpagano
Pessoal,

Dá para ativar a função watchdog através de uma instrução no PIC, ou seja, sem usar a configuração dos fusíveis?
Por exemplo, estou rodando o meu programa normalmente e quando entra em uma determinada função o watchdog é habilitado e começa a rodar.
Eu tentei fazer isso, configurando o watchdog no meio do programa, mas o compilador nem compilou, falando que não poderia compilar tal instrução.

Valeu!

MensagemEnviado: 14 Abr 2008 14:02
por ze
o fusível wdog (e os d+) é algo físico (hw). ele é queimado (ou não) durante a programação. não possível regenerá-lo por sw durante o runtime.
este recurso pode estar disponível em uCs + novos. desconheço por enquanto.

abrç

MensagemEnviado: 14 Abr 2008 14:04
por Cláudio
Ma ma ma ma mas, por que não deixar o WDT rodando o tempo todo?

MensagemEnviado: 14 Abr 2008 14:17
por fabim
Pessoas.
Aproveitando o embalo do carro.
Se o PIC16F877, permite gravação dele mesmo na flash, será que ele não consegue alcançar o endereço de configuração ?

Fabim

MensagemEnviado: 14 Abr 2008 14:27
por Fernando Guimarães Aguiar
Pessoal, eu utilizo C18 com o 18F258 e utilizo a sentença WDTCONbits.SWDTEN = 0; para desabilitar o WTD no meio do programa (i.e. via software) e WDTCONbits.SWDTEN = 0; para habilitá-lo, sendo aí necessário utilizar a rotina para limpar o WTD ClearWTD();

void ClearWDT (void)
{
_asm
CLRWDT //Limpa watch dog timer
_endasm
}

MensagemEnviado: 14 Abr 2008 14:35
por ze
mesmo se conseguir, apenas o pagano viu uma utilidade prática pra isso até o momento...
de onde estou - sentado em frente a um 286 com monitor cga com minha net discada com um modem 14400 - é invisualisável (por enquanto).
100 zoeira: Plz, mostre-me uma vantagem prática disso??

MensagemEnviado: 14 Abr 2008 14:36
por lpagano
Eu sei que a família 18F consegue manipular o funcionamento do WDT, mas eu estou usando o 12F para fazer um controle remoto dedicado e com o WDT ligado o tempo todo (após alguns ensaios) a minha bateria vai para o saco depois de uns 3 meses.

Valeu!

MensagemEnviado: 14 Abr 2008 14:51
por fabim
12F. esquece

O 12F tem o onPIO em todos os pinos menos GP3.

Sleep. consumo baixissimo..
Aperta butão manda dados
Sleep.

qual o problema ?

Fabim

MensagemEnviado: 14 Abr 2008 14:54
por ze
putz... nem sabia que o 18f tinha isso. nunca usei (e talvez nunca usarei).

Pra que serviria wdog no cremoto msm?

mas pagano, com uma configuração com diodos em forma de AND você pode deixar seu controle com consumo "zero" sem tecla pressionada. é parte de meu p.i. mas passo-lhe caso não tenha compreendido o conceito.
é legal pra poucas teclas. veja:
diodo 4148 em série com a tecla e o GND pra bateria (1 por tecla) + diodos formando a palavra de controle nos bits de entrada do pic em série com gnd tbém. Tudo catodo comum. o outro lado no - da bateria. Se achar que vai perder 0,7V é muito, use 1n3819. perde 0,15 máx.
Parece confuso?? mas na verdade é + ainda.rs Se quiser, desenho.

MensagemEnviado: 14 Abr 2008 15:36
por Fábio Pereira
Fabim:

Não, a palavra de configuração fica em um espaço de endereçamento diferente da FLASH de programa.

Lpagano:

Defina qual o PIC que você está utilizando. Me parece que alguns PIC18 e possivelmente DsPICs permitam desativar o WDT on-the-fly (nos MSP430 isso pode ser feito por software a qualquer momento).

T+

MensagemEnviado: 15 Abr 2008 08:00
por lpagano
Fábio,

Eu já defini o meu PIC como sendo o 12F629 ou 675. No momento o meu protótipo é o 629.
O que tentei fazer foi dar um reset com watchdog no PIC quando termino de executar determinado processo, ou seja, ele volta na condição inicial automaticamente (sleep), só que com o watchdog ligado há consumo de energia de uns uA, mas na hora nem me dei conta de que o watchdog estaria ligado em modo sleep.
O que tentei fazer também foi dividir a função main em duas (main e mais uma outra). Só que não deu certo, MikroC nem compilou porque deu erro. Será que é por causa do limite de stack (31 níveis)?

Resumindo, preciso voltar na função main para ficar em sleep sempre que termino a execução de uma função. Aí nesse retorno ele fica em sleep até pressionar um botão novamente.

Valeu!

MensagemEnviado: 16 Abr 2008 14:14
por Cláudio
De fato é meio chato esse negócio de WDT e SLEEP trabalhando juntos.
O WDT funciona por si só, já que tem oscilador próprio.
Se o dispositivo está em SLEEP, um estouro do WDT (no seu caso, no máximo 2,3 Segundos) vai acordar o chip, recolocando-o em funcionamento.
Como o WDT consome apenas 300nA (@2V), será que não é esse fato do PIC ficar "acordando" a todo momento que lhe está consumindo mais corrente?

MensagemEnviado: 16 Abr 2008 23:26
por phophollety
Deixei um WDT desligado quando fiz um controle remoto com pic16f636 com keeloq, nunca travou nem nada e ao lado do pic tem um transmissor ook de 433MHz...

Pode deixar desligado, apenas se preocupe em fazer um fw bem estruturado que não vai precisar do wdt