Autor Tema: Este archivo no funciona  (Leído 2715 veces)

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

Desconectado loren

  • PIC10
  • *
  • Mensajes: 24
Este archivo no funciona
« en: 27 de Mayo de 2006, 11:59:13 »
He intentado hacer una temporización, con estas ordenes, ya sé que para temporizar no se usa ésto, después de dar la orden con un 1 en la entrada 2 de puertaa, debe transcurrir un tiempo antes de encender el led 3 de puertab, pero no lo hace, y no sé si está bien. No quiero saber como se hace de otra maner, sólo quiero saber si éste funcionaría así. Lo que observo, es que cuando pongo un dedo en el cristal, empieza los leds de la puertab a parapadear, a qué se debe, a un fallo de hardware. Ya sé que este archivo se podría depurar y quedar más pequeño, pero lo quiero hacer funcionar así.

   LIST   P=16F84A

PUERTAA      EQU   05
PUERTAB      EQU   06
ESTADO      EQU   03
CONTADOR   EQU   0C
CONTADOR1   EQU   0D
CONTADOR2   EQU   0E
CONTADOR3   EQU   0F
CONTADOR4   EQU   011
CONTADOR5   EQU   012
CONTADOR6   EQU   013
CONTADOR7   EQU   014

      ORG   0

      bsf   ESTADO,5
      movlw   b'11111'
      movwf   PUERTAA
      movlw   b'00000000'
      movwf   PUERTAB
      bcf   ESTADO,5

      movlw   01
      movwf   CONTADOR
      movwf   CONTADOR1
      movwf   CONTADOR2
      movwf   CONTADOR3
      movwf   CONTADOR4   
      movwf   CONTADOR5
      movwf   CONTADOR6
      movwf   CONTADOR7
      bcf   PUERTAB,3
      
COMIENZO   btfss   PUERTAA,2
      goto   COMIENZO

CUENTA      incfsz   CONTADOR
      goto   CUENTA

CUENTA1      incfsz   CONTADOR1
      goto   CUENTA1

CUENTA2      incfsz   CONTADOR2
      goto   CUENTA2

CUENTA3      incfsz   CONTADOR3
      goto   CUENTA3

CUENTA4      incfsz   CONTADOR4
      goto   CUENTA4

CUENTA5      incfsz   CONTADOR5
      goto   CUENTA5

CUENTA6      incfsz   CONTADOR6
      goto   CUENTA6

CUENTA7      incfsz   CONTADOR7
      goto   CUENTA7

      bsf   PUERTAB,3
   
      END

Gracias y saludos.

Desconectado maunix

  • Moderadores
  • DsPIC33
  • *****
  • Mensajes: 4751
    • Mi Sitio Web Personal
Re: Este archivo no funciona
« Respuesta #1 en: 27 de Mayo de 2006, 12:33:23 »
Lo que observo, es que cuando pongo un dedo en el cristal, empieza los leds de la puertab a parapadear, a qué se debe, a un fallo de hardware. Ya sé que este archivo se podría depurar y quedar más pequeño, pero lo quiero hacer funcionar así.

Si al poner un dedo en el cristal tu software comienza a funcionar revisa bien las conexiones a GND,  revisa además que el cristal no esté dañado, que tenga sus capacitores de estabilización.

No olvides usar un capacitor de .1uF entre Vdd y Vss.

saludos
- La soberbia de un Einstein es entendible.. la de un salame es intolerable (A.Dolina)
- En teoría no hay diferencia entre la teoría y la práctica. En la práctica... si la hay.
- Lee, Lee, Lee y luego pregunta.(maunix)
- Las que conducen y arrastran al mundo no son las máquinas, sino las ideas (V. Hugo)
- Todos los hombres se parecen por sus palabras; solamente las obras evidencian que no son iguales.(Moliere)
- Todo debería ser hecho tan simple como sea posible pero no mas simple que eso.(A.Einstein)

Desconectado Chaly29

  • Moderador Global
  • DsPIC33
  • *****
  • Mensajes: 4315
Re: Este archivo no funciona
« Respuesta #2 en: 27 de Mayo de 2006, 16:20:45 »
Hola loren, aparte del problema que tienes en el cristal esa rutina es demaciado rapida para que puedas ver o medir el tiempo que demora el PIC entre que tu presionas el pulsador y se enciende el led del puerto B, por lo que seria conveniente que reemplases esa rutina por una de las normalmente usada para tamporizaciones.

Para darte una idea entre que presionas el pulsador y se enciende el led deben estar pasando alrededor de 20us con un cristal de 4MHz, por lo que no veras ese tiempo, otro tema es el final de la rutina, puedes observar que llegado a este punto el programa se pierde ya que no le das mas ordenes para realizar, por este motivo el pic se perdera o empezara a hacer cosas no deseadas.

Espero te sea de ayuda, un saludo.

Atte. CARLOS.

La teoría es cuando se sabe todo y nada funciona. La práctica es cuando todo funciona y nadie sabe por qué.

Desconectado loren

  • PIC10
  • *
  • Mensajes: 24
Re: Este archivo no funciona
« Respuesta #3 en: 27 de Mayo de 2006, 18:01:56 »
Lo del cristal ya está solucionado, era simplemente que al programarlo con el icprog no me daba cuenta y lo programaba con el oscilador tipo RC en vez del XT. He modificado un poco el programa, después de darle al interruptor y manda un 1 a la entradda 2 de la puerta a, se me enciende el led 3 de la puerta b, y claro está al ser tan rápido no me da tiempo a ver ese retraso, pero cuando vuelvo el interruptor a cero, al segundo se apaga el led, cuando el micro al entrar en el último bucle no debería salir de ahí y led debería permanecer encendido aunque deje de mandarle el uno, ¿A qué se debe ésto?
Gracias y saludos.

       LIST   P=16F84A

PUERTAA      EQU   05
PUERTAB      EQU   06
ESTADO      EQU   03
CONTADOR   EQU   0C
CONTADOR1   EQU   0D
CONTADOR2   EQU   0E
CONTADOR3   EQU   0F
CONTADOR4   EQU   011
CONTADOR5   EQU   012
CONTADOR6   EQU   013
CONTADOR7   EQU   014

      ORG   0

      bsf   ESTADO,5
      movlw   b'11111'
      movwf   PUERTAA
      movlw   b'00000000'
      movwf   PUERTAB
      bcf   ESTADO,5
      clrf   PUERTAB

      movlw   01
      movwf   CONTADOR
      movwf   CONTADOR1
      movwf   CONTADOR2
      movwf   CONTADOR3
      movwf   CONTADOR4   
      movwf   CONTADOR5
      movwf   CONTADOR6
      movwf   CONTADOR7
            
COMIENZO   btfss   PUERTAA,2
      goto   COMIENZO

CUENTA      incfsz   CONTADOR
      goto   CUENTA

CUENTA1      incfsz   CONTADOR1
      goto   CUENTA1

CUENTA2      incfsz   CONTADOR2
      goto   CUENTA2

CUENTA3      incfsz   CONTADOR3
      goto   CUENTA3

CUENTA4      incfsz   CONTADOR4
      goto   CUENTA4

CUENTA5      incfsz   CONTADOR5
      goto   CUENTA5

CUENTA6      incfsz   CONTADOR6
      goto   CUENTA6

CUENTA7      incfsz   CONTADOR7
      goto   CUENTA7

      bsf   PUERTAB,3

BUCLE      goto    BUCLE

      END

Desconectado MSK

  • PIC12
  • **
  • Mensajes: 53
Re: Este archivo no funciona
« Respuesta #4 en: 27 de Mayo de 2006, 18:05:26 »
Hola te modifique algo ( GOTO inicio) simulalo para saber cada cuanto se repite el loop antes de grabar el micro

 
       movlw   01
      movwf   CONTADOR
      movwf   CONTADOR1
      movwf   CONTADOR2
      movwf   CONTADOR3
      movwf   CONTADOR4  
      movwf   CONTADOR5
      movwf   CONTADOR6
      movwf   CONTADOR7
      bcf   PUERTAB,3
     
COMIENZO   btfss   PUERTAA,2
      goto   COMIENZO

CUENTA      incfsz   CONTADOR
      goto   CUENTA

CUENTA1      incfsz   CONTADOR1
      goto   CUENTA1

CUENTA2      incfsz   CONTADOR2
      goto   CUENTA2

CUENTA3      incfsz   CONTADOR3
      goto   CUENTA3

CUENTA4      incfsz   CONTADOR4
      goto   CUENTA4

CUENTA5      incfsz   CONTADOR5
      goto   CUENTA5

CUENTA6      incfsz   CONTADOR6    ;  te modifique aca para multiplicar los pulsos
      goto   CUENTA5

CUENTA7      incfsz   CONTADOR7
      goto   CUENTA6

 inicio bsf   PUERTAB,3
      goto    inicio


      END

P.D. esto funciona al pulsar la entrada, hacelo como decis pero desactiva el WDT del micro en el icprog
« Última modificación: 28 de Mayo de 2006, 00:04:24 por MSK »

Desconectado Chaly29

  • Moderador Global
  • DsPIC33
  • *****
  • Mensajes: 4315
Re: Este archivo no funciona
« Respuesta #5 en: 27 de Mayo de 2006, 20:16:58 »
Hola loren, probablemente tenias el wachdog activado por eso cada +/-1 seg el ciclo volvia a empesar, de todas maneras sigues teniendo mal la rutina de retardo, aca te dejo un programa que lo que hace es esperar la confirmación tuya (presionando el pulsador) y de luego de +/- 1 seg de presionado enciende el led que se encuentra en el portb, presta atencion todas las reforma que le e realizado a tu programa original y veras que este es más sencillo de comprender que el realizado por vos.

Código: ASM
  1. LIST            P=16F84A
  2.         INCLUDE         <P16F84A.inc>
  3.         __CONFIG        _CP_OFF&_PWRTE_OFF&_WDT_OFF&_XT_OSC
  4. ;------------------------------------------------------------
  5. CONTADOR1       EQU     .14
  6. CONTADOR2       EQU     .15
  7. CONTADOR3       EQU     .16
  8. ;------------------------------------------------------------
  9.         org     .0
  10.         goto    INICIO
  11.         org     .4
  12.         retfie
  13. ;------------------------------------------------------------
  14. INICIO
  15.         bcf     STATUS,RP0
  16.         bcf     STATUS,RP1
  17.         clrf    PORTA
  18.         clrf    PORTB
  19.         bsf     STATUS,RP0
  20.         movlw   B'00011111'
  21.         movwf   TRISA
  22.         movlw   B'00000000'
  23.         movwf   TRISB
  24.         bcf     STATUS,RP0
  25. COMIENZO
  26.         clrwdt
  27.         btfss   PORTA,2
  28.         goto    COMIENZO
  29.  
  30.         movlw   .14             ;rutina de +/- 1 seg.
  31.         movwf   CONTADOR1
  32. LOOP0
  33.         movlw   .72
  34.         movwf   CONTADOR2
  35. LOOP1
  36.         movlw   .247
  37.         movwf   CONTADOR3
  38. LOOP2
  39.         clrwdt
  40.         decfsz  CONTADOR3,F
  41.         goto    LOOP2
  42.         decfsz  CONTADOR2,F
  43.         goto    LOOP1
  44.         decfsz  CONTADOR1,F
  45.         goto    LOOP0
  46.  
  47.         bsf     PORTB,3
  48. BUCLE
  49.         clrwdt
  50.         goto    BUCLE
  51. ;------------------------------------------------------------
  52.         end

Espero te sea de utilidad, un saludo.

Atte. CARLOS.

La teoría es cuando se sabe todo y nada funciona. La práctica es cuando todo funciona y nadie sabe por qué.

Desconectado loren

  • PIC10
  • *
  • Mensajes: 24
Re: Este archivo no funciona
« Respuesta #6 en: 28 de Mayo de 2006, 17:26:55 »
Hola, gracias a los que habeis contestado, efectivamente lo que se apagaba después de un segundo era al causa que porgramaba con el perro guardián activado. Como lo que intento es hacer proyecto conforme voy aprendiendo a usar ordenes, ahora utilizo el temporizador, ya que lo estoy aprendiendo a utilizar. Ahora lo que he hecho es un archivo el cual después de actuar sobre un pulsador, se me enciende el led, y después de un tiempo, que en este caso es de 6,5 segundos se apaga, es decir, quiero hacer un temporizador para, por ejemplo, las luces de las escaleras de un bloque de viviendas. La temporización del tiempo que permanecería la luz encendería se seleccionaría con los interruptores de la puerta B y la luz se encendería con una salida de la puerta A. Para encender la luz, sobre que tipo de componente debería actuar la puerta de salida, ya que sólo proporciona entre 20 ó 25 mA. Os dejo el archivo para que le podais hacer una crítica constructiva.
Gracias y saludos

      LIST   P=16F84A   ;Se especifica el microcontrolador

ESTADO      EQU   03      ;Se definen las diferentes etiquetas
PUERTAA      EQU   05
PUERTAB      EQU   06
TMR0      EQU   01
OPT      EQU   01
INTCON      EQU   0B
RP0      EQU   05
T0IF      EQU   02
CONTADOR   EQU   12

      ORG   0


CONFIGURACION   bsf   ESTADO,RP0   ;Se configura los diferentes registros
      movlw   b'11111'
      movwf   PUERTAA      ;Se configura la puertaa como entrada
      clrf   PUERTAB      ;y la b como salida
      movlw   b'00000111'   ;se le asigna el divisor al TMR0
      movwf   OPT
      bcf   ESTADO,RP0


INICIO      clrf   PUERTAB      ;Se apaga el led
      btfss   PUERTAA,3   ;Se comprueba si alguien ha pulsado algún pulsador
      goto   INICIO      ;S no se ha pulsado vuelve a comprobar
      bsf   PUERTAB,3   ;Cuando se ha pulsado enciende el led 
      call    RETRASO      ;Se llama a la subrutina de retraso de unos 6,5 segundos
      goto   INICIO      ;Volvemos a la espera de que alguien le de a algún pulsador


RETRASO      movlw   d'100'      ;Se produce un retraso de unos 6,5 segundos
      movwf   CONTADOR
RETRASO1   clrf   TMR0
RETRASO2   btfss   INTCON,T0IF
      goto   RETRASO2
      bcf   INTCON,T0IF
      decfsz   CONTADOR,1
      goto   RETRASO1
      return   


      END
« Última modificación: 28 de Mayo de 2006, 18:40:29 por loren »

Desconectado patolinec

  • Colaborador
  • PIC16
  • *****
  • Mensajes: 206
Re: Este archivo no funciona
« Respuesta #7 en: 09 de Junio de 2006, 02:51:40 »
Pues la salida del micro puedes conectarla de dos formas;

la primera:

Mediante una resistencia de 1k se conecte a la base de un transistor 2n3904, y que este controle un rele que comande el foco o lo que quieras

la segunda: (mi favorita :lol:)

Conectar a la salida del micro un optotriac que comande un Triac y que este a su vez comande el foco o dispositivo que tu desees

Diferencias:

El primero es mas sencillo, pero tiene la desventaja que existe un interruptor mecanico que al momento de abrir y cerra sus contactos provoca desgaste y disminuye la vida util del foco por el mismo hecho de ser contactos mecanicos, con el Triac la situacion es un poquitin mas compleja pero no tanto y se tiene una conmutacion electronica que alarga la vida util del foco y ademas no suena como si lo hace el rele,

de todas formas las dos son validas espero saber como te fue saludos :-/
Casi me maté pero ahora estoy de nuevo vivo

Desconectado pibe

  • Colaborador
  • PIC24F
  • *****
  • Mensajes: 635
Re: Este archivo no funciona
« Respuesta #8 en: 09 de Junio de 2006, 05:12:03 »
Y si pones un optotriac con detección por cruce cero mucho mejor

PD: "Espero Que le vaya bien a Ecuador alla en Alemania" = Polonia 3, Ecuador 1  :mrgreen:
Mi jefe mirando el prototipo que estoy creando: "Y eso va a funcionar?"

Desconectado patolinec

  • Colaborador
  • PIC16
  • *****
  • Mensajes: 206
Re: Este archivo no funciona
« Respuesta #9 en: 09 de Junio de 2006, 14:14:07 »
Heeee mi pana cuidado con eso de Ecuador, y por eso te respondere despues del partido de hoy, si gana te rerspndo sino nada que var  :5],


Je je no mentira, pudieras hacerlo mediante software la deteccion del cruce por cero utilizando simplemente una rectificacion de onda completa que vaya polarizando en conmutacion un 2n3904 y este vaya dando el cruce por cero al micro en il pin de interrupcion exteran RB0, y desde luego vas a poder controlar el angulo de disparo del triac

Saludos
Casi me maté pero ahora estoy de nuevo vivo