Autor Tema: Registro Sleep, ayuda por favor  (Leído 2110 veces)

0 Usuarios y 1 Visitante están viendo este tema.

Desconectado marvicdigital

  • Colaborador
  • PIC18
  • *****
  • Mensajes: 311
Registro Sleep, ayuda por favor
« en: 26 de Septiembre de 2008, 13:59:50 »
Hola, a todos.
Tengo un problema con el PIC 12F508 y con el registro Sleep, tengo esta lineas en asm:
Configuro los puertos asi: GP0, GP1,GP2,GP4 como salidas y GP3 Y GP5 entradas.

movlw   b'00101000'
tris        gpio
movlw   b'01000000'    ; configuro despertar con cambio de estado en gp0,gp1 y gp3
option 
clrf        gpio
bsf        gpio,3
sleep
nop
nop
goto      inicio
..
..
..
.

El problema es que se queda en sleep asi cambie de estado en el  gpio 3 (pin 4) con un pulsador, si borro la linea de sleep el programa funciona normalmente. Que hago mal? es que en el PDF y en microchip no encuentro como usar bien este registro, se supone que para salir de este modo debe ser por una interrupción y con cambio de estado en uno de los puertos GPIO (0,1,3)..

Agradezco sus explicaciones y ayuda.

Saludos

Desconectado sander

  • Colaborador
  • PIC24F
  • *****
  • Mensajes: 624
Re: Registro Sleep, ayuda por favor
« Respuesta #1 en: 26 de Septiembre de 2008, 14:53:54 »
Lo que pasa es que este dispositivo se resetea cuando se despierta , lo que tienes que hacer es revisar la causa del reset antes de poner la intruccion SLEEP y si el reset se debe a un cambio en algun pin saltarte la intruccion SLEEP, el bit que indica si el reset se produjo por un cambio de estado en un pin es el GPWUF que se encuentra en el registro STATUS

Entonces tendrias algo asi
Código: ASM
  1. btfss    STATUS,GPWUF         ;GPWUF == 1? , reset por cambio de estado?
  2. sleep                                   ;No => dormimos
  3.                                            ;Si => atendemos al boton presionado
  4. ;Codigo para atender el boton
  5. bcf       STATUS,GPWUF         ;GPWUF = 0, porque ya atendimos al reset
  6. goto     inicio


Saludos
« Última modificación: 26 de Septiembre de 2008, 14:56:29 por sander »
La electrónica es el arte de manipular señales eléctricas que transportan información
Jan Davidse

Visita mi blog
Visita mi canal de youtube

Desconectado marvicdigital

  • Colaborador
  • PIC18
  • *****
  • Mensajes: 311
Re: Registro Sleep, ayuda por favor
« Respuesta #2 en: 26 de Septiembre de 2008, 23:52:24 »
Lo que pasa es que este dispositivo se resetea cuando se despierta , lo que tienes que hacer es revisar la causa del reset antes de poner la intruccion SLEEP y si el reset se debe a un cambio en algun pin saltarte la intruccion SLEEP, el bit que indica si el reset se produjo por un cambio de estado en un pin es el GPWUF que se encuentra en el registro STATUS

Entonces tendrias algo asi
Código: ASM
  1. btfss    STATUS,GPWUF         ;GPWUF == 1? , reset por cambio de estado?
  2. sleep                                   ;No => dormimos
  3.                                            ;Si => atendemos al boton presionado
  4. ;Codigo para atender el boton
  5. bcf       STATUS,GPWUF         ;GPWUF = 0, porque ya atendimos al reset
  6. goto     inicio


Saludos

Muchas gracias, ese era el problema..de verdad mil gracias.

Saludos


 

anything