Autor Tema: Ayuda con entradas digitales  (Leído 5042 veces)

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

Desconectado armans

  • PIC10
  • *
  • Mensajes: 9
Ayuda con entradas digitales
« en: 09 de Mayo de 2014, 16:10:40 »
Hola, soy bastante nuevo en esto de los PICs y estoy como loco intentando tomar como datos la tensión de entrada y no lo logro.

Estoy trabajando en 2 entradas digitales con un interruptor y la historia está en que si pulso uno la salida debe de hacerme una cosa y si pulso el otro, la salida actua de otro modo (misma salida)

estoy intentandolo con esto:

    MOVF PORTA, W ; supuestamente toma los valores de las entradas predefinidas arriba como digitales
    MOVFW ENTRADA ; las guarda en una variable

    BTFSC ENTRADA, 1 ; si la entrada 1 esta activa va a la opcion1, 0 salta instruccion
    GOTO OPCION1

    BTFSC ENTRADA, 2 ; si la entrada 2 esta activa, va a la opcion2, 0 salta instruccion
    GOTO OPCION2

pero parece que no me hace caso, alguna sugerencia?

Gracias y un saludo.

Desconectado HJG

  • PIC12
  • **
  • Mensajes: 77
Re: Ayuda con entradas digitales
« Respuesta #1 en: 09 de Mayo de 2014, 16:38:31 »
Reemplaza esto:
    MOVFW ENTRADA ; las guarda en una variable

Por esto otro

MOVWF ENTRADA ; Esto si funciona...

Desconectado armans

  • PIC10
  • *
  • Mensajes: 9
Re: Ayuda con entradas digitales
« Respuesta #2 en: 10 de Mayo de 2014, 08:18:26 »
vale, sí gracias, eso debe de ser parte de mi problema, pero sigue sin funcionarme :/

Código: [Seleccionar]
LIST P=16F886
    INCLUDE P16F886.INC


    __CONFIG _CONFIG1, _INTOSCIO & _WDT_OFF & _PWRTE_OFF & _MCLRE_OFF & _CP_OFF & _CPD_OFF & _BOR_ON & _IESO_OFF & _FCMEN_OFF & _LVP_OFF & _DEBUG_OFF
    __CONFIG _CONFIG2, _BOR40V & _WRT_OFF



    CBLOCK 0X20
        ENTRADA
    ENDC


    ORG 00
    GOTO INICIO


INICIO  NOP

    ; Inicialización de los puertos
    BANKSEL TRISA ; selecciona TRISA
    ;BSF TRISA, 0 ; RA0 como entrada para conversor A/D
    BSF TRISA, 1 ; RA1 como entrada


    BANKSEL ANSEL
    ;BSF ANSEL, 0 ; RA0 como analogico
    BCF ANSEL, 1 ; RA1 como digital


    BANKSEL TRISC
    MOVLW B'00000000'
    MOVWF TRISC ; Configuro RC2 como salida


NUEVO

    MOVF PORTA, W
    MOVWF ENTRADA

    BTFSC ENTRADA, 1
    GOTO ENCIENDE

    BCF PORTC, 2

    GOTO NUEVO


ENCIENDE
    BANKSEL PORTC
    BSF PORTC, 2
    GOTO NUEVO


    END

No sé que me dejo, he reducido el planteamiento total para ver si consigo coger las entradas antes de trasladarlo a mi proyecto, asi que de ahi los config. y lo de que vaya a haber una entrada para un conversor A/D.

Un saludo.

Desconectado HJG

  • PIC12
  • **
  • Mensajes: 77
Re: Ayuda con entradas digitales
« Respuesta #3 en: 10 de Mayo de 2014, 09:05:39 »
Hola, te está faltando apagar los comparadores al inicio.


Agrega el siguiente código, CMCON está en el banco "0"
Código: [Seleccionar]
movlw 0x07
movwf CMCON ;Apago el módulo comparador.

Saludos
HJ

Edito: También debes seleccionar el Banco de del PORT A  (banco 0) después de la etiqueta "Nuevo", ya que estas llegando allí desde las configuraciones de los TRIS en el banco 1

Agrega lo siguiente después de la etiqueta "Nuevo" .

Código: [Seleccionar]
   BANKSEL PORTA
« Última modificación: 10 de Mayo de 2014, 09:13:06 por HJG »

Desconectado armans

  • PIC10
  • *
  • Mensajes: 9
Re: Ayuda con entradas digitales
« Respuesta #4 en: 10 de Mayo de 2014, 10:20:47 »
no sale el CMCON en el datasheelt de 16F886 :/

gracias por lo del PORTA

Desconectado HJG

  • PIC12
  • **
  • Mensajes: 77
Re: Ayuda con entradas digitales
« Respuesta #5 en: 10 de Mayo de 2014, 10:31:08 »
no sale el CMCON en el datasheelt de 16F886 :/
Tienes razón, no se porqué se me pasó por la cabesa que estabas utilizando un 628.

Desconectado HJG

  • PIC12
  • **
  • Mensajes: 77
Re: Ayuda con entradas digitales
« Respuesta #6 en: 10 de Mayo de 2014, 10:40:52 »
Estamos en lo mismo, lo primero de debes hacer es apagar los módulos analógicos poniendo a cero los registros ANSEL y ANSELH. siempre arrancan como analógicos después de cualquier tipo de RESET.
Si necesitas un pin analógico, ese solo lo pones a "1", ten en cuenta que no todos los ANx coinciden con los números de puerto, verifica en la hoja de datos.

« Última modificación: 10 de Mayo de 2014, 11:46:00 por HJG »

Desconectado armans

  • PIC10
  • *
  • Mensajes: 9
Re: Ayuda con entradas digitales
« Respuesta #7 en: 10 de Mayo de 2014, 10:56:57 »
Hola,

ANSELH también aunque no utilice los puertos B?

Desconectado HJG

  • PIC12
  • **
  • Mensajes: 77
Re: Ayuda con entradas digitales
« Respuesta #8 en: 10 de Mayo de 2014, 11:45:28 »
Hola,

ANSELH también aunque no utilice los puertos B?
No es necesario, pero si es conveniente, para bajar el consumo del micro.

Desconectado HJG

  • PIC12
  • **
  • Mensajes: 77
Re: Ayuda con entradas digitales
« Respuesta #9 en: 10 de Mayo de 2014, 11:47:02 »
ANSELH también aunque no utilice los puertos B?
No es necesario, pero si es conveniente, para bajar el consumo del micro.

Fíjate que en el mensaje anterior había puesto "0", y en realidad es "1" lo que hay que poner para que un pin sea analógico (ya lo corregí).

Desconectado armans

  • PIC10
  • *
  • Mensajes: 9
Re: Ayuda con entradas digitales
« Respuesta #10 en: 10 de Mayo de 2014, 11:53:52 »
Vale, muchas gracias. El Lunes intentaré probarlo en la universidad y ya comentaré si al fin consigo que funcione.

Un saludo.

Desconectado armans

  • PIC10
  • *
  • Mensajes: 9
Re: Ayuda con entradas digitales
« Respuesta #11 en: 12 de Mayo de 2014, 05:01:09 »
Estoy probandolo y algo se ha resuelto, es decir, cuando añado la entrada se enciende mas el led, pero aun teniendolo supuestamente apagado está encendido ¿es algun tipo de fuga en LO o tengo algo mal?

Código: [Seleccionar]
    LIST P=16F886
    INCLUDE P16F886.INC

    __CONFIG _CONFIG1, _INTOSCIO & _WDT_OFF & _PWRTE_OFF & _MCLRE_OFF & _CP_OFF & _CPD_OFF & _BOR_ON & _IESO_OFF & _FCMEN_OFF & _LVP_OFF & _DEBUG_OFF
    __CONFIG _CONFIG2, _BOR40V & _WRT_OFF

    CBLOCK 0X20
    ENTRADA
    ENDC

    ORG 00
    GOTO INICIO

INICIO  NOP
    ; Inicialización de los puertos
    BANKSEL TRISA ; selecciona TRISA
    MOVLW B'11111111'
    MOVWF TRISA   

    BANKSEL ANSEL
    MOVLW B'00000001' ; RA0 analogico, lo demás digital
    MOVWF ANSEL

    BANKSEL TRISB ; selecciona TRISB
    MOVLW B'11111111'
    MOVWF TRISB

    BANKSEL ANSELH
    MOVLW B'00000000'
    MOVWF ANSELH

    BANKSEL TRISC
    CLRF TRISC

NUEVO
    BANKSEL PORTA
    MOVF PORTA, W
    MOVWF ENTRADA

    BTFSC ENTRADA, 1
    GOTO ENCIENDE

    BANKSEL PORTC
    MOVLW B'00000000'
    MOVWF PORTC

    GOTO NUEVO

ENCIENDE
    BANKSEL PORTC
    MOVLW B'00000100'
    MOVWF PORTC
    GOTO NUEVO

    END

Desconectado HJG

  • PIC12
  • **
  • Mensajes: 77
Re: Ayuda con entradas digitales
« Respuesta #12 en: 12 de Mayo de 2014, 08:17:02 »
No veo nada raro a simple vista.
Deberías subir el esquema que estas utilizando, y si es posible alguna foto del montaje donde se pueda ver correctamente el mismo.

Saludos
HJ

Desconectado armans

  • PIC10
  • *
  • Mensajes: 9
Re: Ayuda con entradas digitales
« Respuesta #13 en: 12 de Mayo de 2014, 09:24:46 »
En este ejemplito simplemente alimento el PIC, le saco de la tension otro cable a la entrada que estoy gastando y la salida va con una resistencia al LED y de ahi a masa. No tiene más. cuando lo tengo en "apagado" me da luz y cuando le conecto tambien la entrada, da ligeramente un poco más de luz.

Un saludo.

Desconectado HJG

  • PIC12
  • **
  • Mensajes: 77
Re: Ayuda con entradas digitales
« Respuesta #14 en: 12 de Mayo de 2014, 10:13:25 »
En este ejemplito simplemente alimento el PIC, le saco de la tension otro cable a la entrada que estoy gastando y la salida va con una resistencia al LED y de ahi a masa. No tiene más. cuando lo tengo en "apagado" me da luz y cuando le conecto tambien la entrada, da ligeramente un poco más de luz.
Allí está el problema... no leo que le estés dando la referencia negativa al pin utilizado como entrada (RA1)... deberías colocarle una resistencia de 10K desde el pin a masa.

Estoy casi seguro que es eso...