Como sair do SLEEP?

Software e Hardware para uC PIC

Moderadores: andre_luis, 51, guest2003, Renie

Como sair do SLEEP?

Mensagempor Haroldo Coelho » 12 Jul 2008 17:11

estive fuçando meus livros e não achei nada que me disesse como sair do SLEEP, os passos que tem que ser dados.

Entrar é só digitar SLEEP, correto.
mas acordar o PIC ou pelo RESET ou por interrupção externa ou mudança de estado das portas RBO,RB4 etc, não achei nada, nem nesse fórum.

Please, deem-me uma dica em Assembly, ok?
Haroldo Coelho
Byte
 
Mensagens: 343
Registrado em: 14 Out 2006 00:20
Localização: Rio de Janeiro

Mensagempor Pask » 13 Jul 2008 15:11

Bem, Haroldo, uma vez que vc entra no modo SLEEP você poderá sair dele por um dos seguintes meios abaixo:

1 - Por meio de um reset externo através do pino de MCRL.

2 - Por um estouro do WDT, caso ele esteja habilitado.

3 - Por uma interrupção externa em alguns pinos do PORTB.

No primeiro caso, o reset pode ser reconhecido checando-se o estado dos bits /TO=1 e /PD=0, no registrados STATUS com as instruções:
BTFSC STATUS,TO
BTFSC STATUS,PD

No segundo caso, basta esperar o WDT estourar não usando a instrução CLRWDT e esta situação pode ser checada por meio do bit /TO=0 do registrador Status como acima.

O terceiro caso é o mais complicado de todos. Se a chave individual da interrupção estiver ligada, o sistema sairá do sleep, executando a linha seguinte à instrução sleep. Se achave estiver desligada, o sistema continuará dormindo. Caso a chave GIE esteja ligada, no ciclo seguinte o programa será desviado para o endereço 0x04 a fim de tratar a interrupção ocorrida. Se você desejar tratar a interrupção que acordará o PIC, deve colocar um NOP após a instrução sleep, evitando que qualquer ação seja tomada antes do tratamento da interrupção.

Acho que isso aí...
Pask
Word
 
Mensagens: 600
Registrado em: 22 Dez 2006 19:19

Mensagempor Haroldo Coelho » 13 Jul 2008 15:38

Thank you Pask. Mas ainda estou em duvida. O programa parando na instrução SLEEP não mais realizará nada. Quer dizer, nào terá como executar a instrução
BTFSC STATUS,TO
BTFSC STATUS,PD

Não entendí.

Estou dizendo isso pois escreví SLEEP na meu código e quando rodei no MPLAB quando chegou em SLEEP parou de rodar.

Utilizei simulador de pinos, resetei o PIC e nada???
Haroldo Coelho
Byte
 
Mensagens: 343
Registrado em: 14 Out 2006 00:20
Localização: Rio de Janeiro

Mensagempor Pask » 13 Jul 2008 20:02

Grande Haroldo! É lógico que quando o PIC executar a função sleep, como o próprio nome diz, ele vai tirar uma bela soneca...rsrsrsrs !!! Daí, ele não executará mais nenhuma linha de instrução mesmo!
O teste dos bits que eu citei para vc, só poderão ser feitos após o dito cujo "acordar" do seu sono profundo. Como acordar o PIC? Por um estouro do WDT - cujo oscilador não pára de funcionar durante o sono do PIC; quando você causar uma mudança de estado lógico num dos pinos do PORTB configurados como interrupção externa. Essas ações farão o PIC despertar instantaneamente! Nesse momento, se vc quiser saber o que levou o PIC a acordar, realize os testes com as instruções descritas anteriormente, certo?
Acho que expliquei bem. Agora, vou sleep...zzzzzzzzz

Um abraço para você.
Pask
Word
 
Mensagens: 600
Registrado em: 22 Dez 2006 19:19


Voltar para PIC

Quem está online

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

cron

x