Autor Tema: Problemas sacar al 16f84 del sleep con wdt  (Leído 5041 veces)

0 Usuarios y 2 Visitantes están viendo este tema.

Desconectado tavisho

  • PIC12
  • **
  • Mensajes: 94
Problemas sacar al 16f84 del sleep con wdt
« en: 28 de Enero de 2008, 04:50:11 »
Hola a los foreros de todopic, aquí les pongo un problemita que me pasa con un programa que viene en un librito de unos autores españoles los cuales voy haciendo ami modo identificando si funcionan o no, el caso es que este no funciona ni con el mismo del cd ni como yo intento hacerlo. Es un simple programa que cuando el wdt se desborda des`pierta al 16f84 del sleep y le asgina un valor de preescaler con l alectura de puertoa A, y aparte de todo eso aumenta un contador binario en puerto b
Citar
     List   p=16F84      ;Tipo de procesador
      include   "P16F84.INC"   ;Definiciones de registros internos
                          
      org   0x00      ;Vector de Reset
      goto   Inicio
      org   0x05      ;Salva vector de interrupción

Inicio           clrf    PORTB      ;Borra los latch de salida
      bsf   STATUS,RP0   ;Selecciona banco 1
      clrf   TRISB      ;Puerta B se configura como salida
      movlw   b'00011111'      
      movwf   TRISA      ;RA0-RA4 entradas            
      movlw   b'00001000'
      movwf   OPTION_REG   ;Preescaler de 1 para el WDT
      bcf   STATUS,RP0   ;Selecciona banco 0   
      

Loop   sleep         ;Modo Standby
      nop
      nop         
      incf   PORTB,F      ;Incrementa el contador binario sobre la puerta B
      movf   PORTA,W
      andlw   b'00000111'   ;Lee el estado de los interruptores RA0-RA2
      iorlw   b'00001000'
      bsf   STATUS,RP0   ;Selecciona el banco 1
      movwf   OPTION_REG   ;Ajusta valor del preescaler
      bcf   STATUS,RP0   ;Selecciona el banco 1
      goto   Loop      ;Volver al modo Standby
   
      end         ;Fin del programa fuente
Cuando lo simulo con mpsim despues de sleep no pasa del primer nop, se queda enganchado ahi, y al simularlo con Proteus se queda en el primer led iluminado, nunca hay incremento del contador. ojalá alguien pueda detectar el error y corregirme. Cabe mencionar que he modificado la palabra de configuracion del pic en proteus a 0x3FFF donde se carga el archivo .hex.

Desconectado poseidon20

  • Colaborador
  • PIC24F
  • *****
  • Mensajes: 762
Re: Problemas sacar al 16f84 del sleep con wdt
« Respuesta #1 en: 28 de Enero de 2008, 19:19:46 »
Hola, que tal, el problema que tienes es que no definistes la confuracion de los fuses del pic, para que corra tu programa deberias agregar esta linea, con esto tu programa correra con un cristal de 4 MHz
Código: ASM
  1. List   p=16F84      ;Tipo de procesador
  2.       include   "P16F84.INC"   ;Definiciones de registros internos
  3.  
  4.         __CONFIG  _CP_OFF  & _WDT_ON & _PWRTE_ON & _XT_OSC

acabo de simular tu programa en el mplab y si funciona como deberia, claro con la modificacion que debes hacer. Espero que te sea de utilidad

Desconectado tavisho

  • PIC12
  • **
  • Mensajes: 94
Re: Problemas sacar al 16f84 del sleep con wdt
« Respuesta #2 en: 28 de Enero de 2008, 21:01:57 »
Agradezco tu respuesta pero se me sigue colgando el programa después del sleep, no pasa nada ni se aumenta el contador en Puertob, me pregunto si tendrá que ver con el configuration bits que tengo como 0x3FFF tanto en mplab como en proteus.
fijate que ahora analizo mpsim, hago click en animate yu se queda en incf (quite los 2 nops) y ya he agregado el encabezado que me pasaste. Al quedarse en incf presiono halt, luego presiono run y no pasa nada pero si presiono animate de nuvo justo despues del run ahora si veo valores en puerto b, pero no se si sean los que esperar ya q son bastante extraños.
TE agradecería que esclarecieras mis dudas, de antemano gracias por ut atención al primer post

Desconectado poseidon20

  • Colaborador
  • PIC24F
  • *****
  • Mensajes: 762
Re: Problemas sacar al 16f84 del sleep con wdt
« Respuesta #3 en: 28 de Enero de 2008, 21:13:22 »
antes que nada, cuando colocas _CONFIG  xxxx x x, ya no necesitas setear nada en el mplb ni en el porteus, ahora a mi si me corre tu programa, yo lo tengo la version 6.3 del mplab, ahora con respecto a que se queda en incf, eso esta raro, como te repito a mi si me rual de lo bien, no te olvides que tienes que selecionar el dispositovo a simular que esta en la opcion "select divice" de la opcion "Configure", ahora si das run solo sale que estas corriendo el programa pero no vas a ver los cambios en los registros y/o puertos, cuando le das animate recien podras ver el funcionamiento del programa paso a paso. Lo que yo hice fue antes de darle run al programa fue poner un break point a la altura de incf, luego run, entonces el programa corre y espera a que se desborde el wdt, luego le daba step into para ver paso a paso lo que realizaba el programa hasta que saltara hasta el loop de ahi le daba de nuevo run.

Desconectado tavisho

  • PIC12
  • **
  • Mensajes: 94
Re: Problemas sacar al 16f84 del sleep con wdt
« Respuesta #4 en: 28 de Enero de 2008, 21:25:33 »
Muchas gracias amigo, intentaré todo lo que dices, una útlima pregunta, uedo ver el incremento de wdt?
porque yo tengo para ver como se va incrementando el sfr pero no veo a wdt por ningun lado, sabes como puedo ver el incremento de wdt? pd se me sigue quedando anclado en incf

Desconectado poseidon20

  • Colaborador
  • PIC24F
  • *****
  • Mensajes: 762
Re: Problemas sacar al 16f84 del sleep con wdt
« Respuesta #5 en: 28 de Enero de 2008, 21:34:47 »
creo que no, pero si quieres saber a cuanto tiempo se desbroda el wdt, puedes hacer lo siguiente:

pones un brekpoint despues del sleep, cuando este simulando paso a paso(no animate), veras un flecha verde al lado izquierdo, bueno cuando esta este sobre el sleep abres el stopwatch y le das click al boton de Zero para borra la cuenta del tiempo, y le das a run, luego la flecha se detendra en el breakpoint y en la ventana del stopwatch veras el valor del Time, entonces con eso puedes saber cuanto se demora en desbordar el WDT  :mrgreen:, espero que te salga el programa, por que a mi si me sale  :D. Kambare

Desconectado tavisho

  • PIC12
  • **
  • Mensajes: 94
Re: Problemas sacar al 16f84 del sleep con wdt
« Respuesta #6 en: 28 de Enero de 2008, 21:48:10 »
Muchas gracias por tu atencion amigo, como esta el frio en la antartica ;
Una pregunta, que es el stopwatch? donde lo ve? y lo necesito para ver lo de zero no?
Otra pregunta, lo cargo en proteus y espero que los leds se cambien de valor porque es lo que hace un contador, pero tal vez mi programa no haga eso:s ok ojala puedas responderme

Desconectado poseidon20

  • Colaborador
  • PIC24F
  • *****
  • Mensajes: 762
Re: Problemas sacar al 16f84 del sleep con wdt
« Respuesta #7 en: 28 de Enero de 2008, 21:51:30 »
primero que version del mplab estas usando?
claro una vez que veas que en el mplab sale lo que tu quieres , entonces en le proteus sale fino, jejeje
segundo, que version de proteus estas usando?

Desconectado tavisho

  • PIC12
  • **
  • Mensajes: 94
Re: Problemas sacar al 16f84 del sleep con wdt
« Respuesta #8 en: 28 de Enero de 2008, 21:56:44 »
Mplab v8.00 y proteuss  6 professional...gracias por la atención¡

Desconectado poseidon20

  • Colaborador
  • PIC24F
  • *****
  • Mensajes: 762
Re: Problemas sacar al 16f84 del sleep con wdt
« Respuesta #9 en: 28 de Enero de 2008, 22:11:20 »
a yap, la ventana de stopwatch deberia estar en Debugger,

Desconectado tavisho

  • PIC12
  • **
  • Mensajes: 94
Re: Problemas sacar al 16f84 del sleep con wdt
« Respuesta #10 en: 28 de Enero de 2008, 22:16:51 »
Pues me sale que 18.2ms, entonces tal vez todo pasa muy rapido por la velocidad del cristal y por eso no veo los cambios en el proteus?

Desconectado tavisho

  • PIC12
  • **
  • Mensajes: 94
Re: Problemas sacar al 16f84 del sleep con wdt
« Respuesta #11 en: 28 de Enero de 2008, 22:26:01 »
Tienes proteus? lo podrias simular? Espero no causarte molestia, para ver si a ti si te aparecen cambios en los leds de puerto b¡¡

Desconectado poseidon20

  • Colaborador
  • PIC24F
  • *****
  • Mensajes: 762
Re: Problemas sacar al 16f84 del sleep con wdt
« Respuesta #12 en: 28 de Enero de 2008, 22:58:55 »
estas con suerte, justo ahora tengo el proteus a la mano (7.2 SP2), acabo de simular tu programa y si corre, pero para que puedas ver tranquilamente el incremento, deberias tener las entradas del porta(RA0-RA2) en alto, si esas entradas estan en bajo, el cambio sera rapido y puede que no notes el incremento, te adjunto una imagen de como deberias armar el circuito en el proteus

P.D: agrege el DNS
« Última modificación: 28 de Enero de 2008, 23:11:49 por poseidon20 »

Desconectado tavisho

  • PIC12
  • **
  • Mensajes: 94
Re: Problemas sacar al 16f84 del sleep con wdt
« Respuesta #13 en: 28 de Enero de 2008, 23:09:11 »
Mmmm te agradezco bastante lo que haz hecho, podrías adjuntarme el .dsn? Te agradezco bastante tu ayuda amigo eres muy buena persona y buen sensei para este principiante de los pic

Desconectado tavisho

  • PIC12
  • **
  • Mensajes: 94
Re: Problemas sacar al 16f84 del sleep con wdt
« Respuesta #14 en: 28 de Enero de 2008, 23:12:23 »
Por cierto me gusto mas tu version de proteus que la mia...donde la conseguiste? funciona bien el crack?


 

anything