Autor Tema: PIC16F716 no cambia estado de entradas  (Leído 1596 veces)

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

Desconectado ThePIC-GUY

  • PIC10
  • *
  • Mensajes: 19
PIC16F716 no cambia estado de entradas
« en: 30 de Julio de 2014, 14:29:31 »
Que tal todos, Me gustaría pedir su cooperación.
Estoy trabajando con un PIC16F716, y como dice el titulo, no cambian los estados de los pins que declaro como entradas. Adjunto la imagen del esquemático.
El circuito usa como comun el pin de RB5 como "POWER SUPPLY".

El funcionamiento del circuito es el siguiente:
- despues de inicializar, se pone en SLEEP
- Cuando despierta (cada 150mS) se pone a "1" RB5
-Se revisa el estado de las 3 Entradas (RB0,RB3 y RB4), si el switch de alguna de ellas esta cerrado tendra un "1", si estas abierto tendra "0"
-si alguna de ellas cambio se activa determinada secuencia
     Aqui el codigo de inicializacion en ensamblador
Código: [Seleccionar]
;-----------CONFIGURAR HARDWARE-------------------------
CLRWDT ;LIMPIAR WATCH DOG TIMER
BCF STATUS,RP0
CLRF PORTB
CLRF PORTA
BSF STATUS,RP0 ;BANCO 1
CLRF ADCON1 ;TODAS COMO DIGITAL I/O
CLRF TRISA ;
MOVLW H'19'
MOVWF TRISB ;CONFIGURAR ENTRADAS Y SALIDAS
MOVLW H'0B' ;HABILITAMOS RESISTENCIAS DE PULL-UP Y
MOVWF OPTION_REG ;ASIGNAMOS PRESCALER AL WDT 1:8
BCF STATUS,RP0 ;BANCO 0
CLRF PORTB
; MOVLW B'01000000' ;CONFIGURAR ADC
; MOVWF ADCON0 ;FOSC/8--CHN0--RA0
MOVLW H'00' ;NO SE USAN INTERRUPCIONES
MOVWF INTCON ;

El programa ya lo simule con PIC simulator IDE, y funciona correctamente, de hecho ya lo cargue el PIC, y cuando pongo cualquiera de las entradas directo a "GND" si cambia el estado.
En si el problema es que los pins que declaro como entradas siempre se quedan en nivel alto. ya intente cambiando el valor de las resistencias por unas mas chicas, pero a menos que las ponga directo a "GND" no cambia de estado.

Desconectado solapower

  • Colaborador
  • PIC16
  • *****
  • Mensajes: 209
Re: PIC16F716 no cambia estado de entradas
« Respuesta #1 en: 30 de Julio de 2014, 14:41:59 »
Hola.
Al activar las resistencias de Pull-up del puerto B estás forzando un uno en sus entradas,prueba a desactivar las resistencias de Pull-up.
Saludos

Desconectado ThePIC-GUY

  • PIC10
  • *
  • Mensajes: 19
Re: PIC16F716 no cambia estado de entradas
« Respuesta #2 en: 31 de Julio de 2014, 12:41:03 »
Gracias solapower,
Ya antes habia desactivado las resistencia de pull-up, pero aun asi no cambian los estados. tambien intente ponerlas como salidas (Solo para saber si las podia afectar asi), pero de igual fora no cambiaron los estados.
Tambien intente ya cambiando el valor de las resistencias que van GND por unas mas pequeñas, y no importa el valoe que le ponga (las mas chicas que probe fueron 100ohms) no cambian los estados.
los estados cambian SOLO cuando conecto directamente las entradas a GND

Desconectado BrunoF

  • Administrador
  • DsPIC30
  • *******
  • Mensajes: 3865
Re: PIC16F716 no cambia estado de entradas
« Respuesta #3 en: 31 de Julio de 2014, 14:46:14 »
   CLRF   ADCON1                              ;TODAS COMO DIGITAL I/O

pone todas como Analógicas, no como digitales. Revisa el datasheet para setearla acorde si no es lo que deseás.

Apagá los comparadores, pueden ser ellos quienes estén afectando la dirección o lectura de los pines.

Saludos.
"All of the books in the world contain no more information than is broadcast as video in a single large American city in a single year. Not all bits have equal value."  -- Carl Sagan

Sólo responderé a mensajes personales, por asuntos personales. El resto de las consultas DEBEN ser escritas en el foro público. Gracias.

Desconectado ThePIC-GUY

  • PIC10
  • *
  • Mensajes: 19
Re: PIC16F716 no cambia estado de entradas
« Respuesta #4 en: 31 de Julio de 2014, 16:45:57 »
La parte de ADCON1 afecta solo al puerto A, el problema que yo tengo es en el puertoB, ademas al programa aun le falta la parte en la que usare el ADC
En cuanto a los comparadores, esos si estan en el puerto B y tambien habia pensado que eso podria ser la causa del problema pero este PIC no tiene registro CMCON para seleccionar el tipo de entrada de los comparadores (o apagarlos).

Esto es algo de lo que eh intentando para solucionar el problema (ninguna a funcionado)
- Configurar puerto como entrada CON resitencias de pull-up
- Configurar puerto como entrada SIN resitencias de pull-up
- Configurar como salida y al momento de verificarla cambiarla aentrada
- utilizar la interrucion INT
- utilizar int-on-change de RB4 a RB7 (haciendo puente de RB0 a RB7 y de RB3 a RB6)

- Arrojar lo mas lejos que podia el aparato XD