Ativação do watchdog enquanto roda um programa

Software e Hardware para uC PIC

Moderadores: andre_luis, 51, guest2003, Renie

Ativação do watchdog enquanto roda um programa

Mensagempor lpagano » 14 Abr 2008 13:35

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!
lpagano
Byte
 
Mensagens: 393
Registrado em: 06 Nov 2006 14:23

Mensagempor ze » 14 Abr 2008 14:02

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ç
Avatar do usuário
ze
Dword
 
Mensagens: 1655
Registrado em: 05 Jun 2007 14:32

Mensagempor Cláudio » 14 Abr 2008 14:04

Ma ma ma ma mas, por que não deixar o WDT rodando o tempo todo?
[]´s
Cláudio
_______________________________________
"Quem quer, de verdade, faz. Quem não quer, inventa desculpas.
Avatar do usuário
Cláudio
Byte
 
Mensagens: 110
Registrado em: 17 Out 2006 09:19

Mensagempor fabim » 14 Abr 2008 14:17

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
Mano, ve só.
Sou responsável pelo que escrevo!!! E não pelo que você entende !!!
fabim
Dword
 
Mensagens: 5001
Registrado em: 16 Out 2006 10:18
Localização: aqui uái!!!?

Mensagempor Fernando Guimarães Aguiar » 14 Abr 2008 14:27

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
}
Avatar do usuário
Fernando Guimarães Aguiar
Nibble
 
Mensagens: 53
Registrado em: 21 Out 2006 10:54
Localização: São Carlos

Mensagempor ze » 14 Abr 2008 14:35

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??
Editado pela última vez por ze em 14 Abr 2008 14:39, em um total de 1 vez.
Avatar do usuário
ze
Dword
 
Mensagens: 1655
Registrado em: 05 Jun 2007 14:32

Mensagempor lpagano » 14 Abr 2008 14:36

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!
lpagano
Byte
 
Mensagens: 393
Registrado em: 06 Nov 2006 14:23

Mensagempor fabim » 14 Abr 2008 14:51

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
Mano, ve só.
Sou responsável pelo que escrevo!!! E não pelo que você entende !!!
fabim
Dword
 
Mensagens: 5001
Registrado em: 16 Out 2006 10:18
Localização: aqui uái!!!?

Mensagempor ze » 14 Abr 2008 14:54

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.
Avatar do usuário
ze
Dword
 
Mensagens: 1655
Registrado em: 05 Jun 2007 14:32

Mensagempor Fábio Pereira » 14 Abr 2008 15:36

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+
Fábio Pereira
embeddedsystems.io
Avatar do usuário
Fábio Pereira
Word
 
Mensagens: 674
Registrado em: 16 Out 2006 09:07
Localização: Kitchener, ON

Mensagempor lpagano » 15 Abr 2008 08:00

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!
lpagano
Byte
 
Mensagens: 393
Registrado em: 06 Nov 2006 14:23

Mensagempor Cláudio » 16 Abr 2008 14:14

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?
[]´s
Cláudio
_______________________________________
"Quem quer, de verdade, faz. Quem não quer, inventa desculpas.
Avatar do usuário
Cláudio
Byte
 
Mensagens: 110
Registrado em: 17 Out 2006 09:19

Mensagempor phophollety » 16 Abr 2008 23:26

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
"3 minutes of boring code review means 3 hours less fixing LSD (Little Stupid Detail)" Dr. Mike Smith
"Dê-me um ponto de apoio e uma alavanca e moverei o mundo" Arquimedes
"Quando vejo um Alfa Romeo passar eu tiro o meu chapéu" Henry FORD.
Avatar do usuário
phophollety
Dword
 
Mensagens: 1511
Registrado em: 15 Out 2006 13:00
Localização: Santo André São Paulo, Brasil


Voltar para PIC

Quem está online

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

x