Autor Tema: Problema con puerto 16f88  (Leído 2992 veces)

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

Desconectado soymoe

  • PIC18
  • ****
  • Mensajes: 456
    • El blog de Moe
Problema con puerto 16f88
« en: 22 de Diciembre de 2010, 15:33:13 »
Estoy tratando de encender un display de 7 seg conectado al puerto b para mostar la temperatura, con ra1 y ra2 como pin de habilitacion para 2 digitos multiplexados. Como no se ve nada en el display me pregunto si no sera porque estoy configurando mal los puerto. RA0 es  mi entrada analogica. Para configurar el puerto hice una rutina lamada INITPORT que es esta:
Código: [Seleccionar]
IniPort
       clrf PORTA
       clrf PORTB
   bsf STATUS,RP0;seleciona banco 1
       movlw b'00000001'
   movwf ANSEL;Seleciono channel AN0 como analogico
   movlw b'11111001'
       movwf TRISA; configuro bit 3-1 como salida bit 0 entrada analogica
   movlw b'00000000';salidas la display
       movwf TRISB
       bcf STATUS,RP0; vuelvo a banco 0
       return
     
   
Como oscilador uso el interno y lo configuro en el icprog al programar ya que no me acepta la instrucion __config

Ayuda por favor

Desconectado AKENAFAB

  • Colaborador
  • DsPIC30
  • *****
  • Mensajes: 3227
Re: Problema con puerto 16f88
« Respuesta #1 en: 22 de Diciembre de 2010, 17:57:14 »
Código: [Seleccionar]
MOVLW 7
MOVWF CMCON ; COMPARADORES APAGADOS


Ponlo antes de cambiar de banco.
Con eso desactivas los comparadores que estan por default usando los pines RA0,RA1,RA2,RA3.

Cuando seleccionas el pin como Analogo en e tu caso ANSEL , si escribes 0 el pin es digital , si escribes 1 es analogo.

Esto es lo que hacía :

Código: [Seleccionar]
MOVLW 7
MOVWF CMCON ; COMPARADORES APAGADOS

BANK1
CLRF TRISA
BSF TRISA,1 ;RA1 <--- ENTRADA
CLRF TRISB

MOVLW B'01111110' ; OSCILADOR INTERNO 8 MHz
MOVWF OSCCON
;---------------------------------   CONFIGURACON ADC
BANKSEL ANSEL
CLRF ANSEL ;E/S DIGITAL

BSF ANSEL,1 ;RA1 <--- ENTRADA ANALOGA

MOVLW B'10000000'
MOVWF ADCON1 ; JUSTIFICADO DERECHO - NO DIVIDIDO /2
; VREF =  +VDD  -VSS

BANKSEL ADCON0
MOVLW B'11001001' ;CLOCK INT RC -CANAL 1 - ADC ENCENDIDO
MOVWF ADCON0
BANK0

Saludos!
« Última modificación: 22 de Diciembre de 2010, 18:02:10 por AKENAFAB »

Desconectado soymoe

  • PIC18
  • ****
  • Mensajes: 456
    • El blog de Moe
Re: Problema con puerto 16f88
« Respuesta #2 en: 22 de Diciembre de 2010, 22:06:15 »
 :-/Gracias por responder, se que en esta epoca no mucha gente se quiere meter con los pics. Segun lo que me dijiste, he encontrado 2 grandes errores que cometia y que hacia que no se muestre nada en el display:
1-NO configuraba OSCCON.
2- No dsabilitaba los comparadores.
Ya configure el oscilador en el cuerpo del programa principal. Los comparadores los deshabilito en la rutina de configuracion de los puertos.
Voy a probar mostrar los numeros en el display y despues sigo con la conversion A/D.
Muchas Gracias. 8)

Desconectado soymoe

  • PIC18
  • ****
  • Mensajes: 456
    • El blog de Moe
Re: Problema con puerto 16f88
« Respuesta #3 en: 23 de Diciembre de 2010, 10:27:18 »
No logro tener salida en el puerto B, este es mi programa principal de prueba del puerto b:
Código: [Seleccionar]
BSF STATUS,RP0;SELECCIONO BANCO 1
MOVLW b'10001000';OPCIONES
MOVWF OPTION_REG;
;--------------CONFIGURO OPCIONES------------
MOVLW B'01101110' ; OSCILADOR INTERNO 4 MHz
MOVWF OSCCON
BCF STATUS,RP0;SELECCIONO BANCO 0
;----------CONFIGURO OSCILADOR-------------

        CALL IniPort; configura port
;----------
CICLO   MOVLW   .8
        MOVWF PORTB;SACO EL VALOR AL PUERTO B
MOVLW 02H
MOVWF PORTA;ACTIVO PRIMERA SALIDA
        GOTO CICLO
    END;
No se porque no sale nada por el puerto b. :5] Me ayudan?

Desconectado PalitroqueZ

  • Moderadores
  • DsPIC33
  • *****
  • Mensajes: 5474
    • Electrónica Didacta
Re: Problema con puerto 16f88
« Respuesta #4 en: 23 de Diciembre de 2010, 23:44:22 »
¿y configuraste a RB3 como salida?

La propiedad privada es la mayor garantía de libertad.
Friedrich August von Hayek

Desconectado soymoe

  • PIC18
  • ****
  • Mensajes: 456
    • El blog de Moe
Re: Problema con puerto 16f88
« Respuesta #5 en: 24 de Diciembre de 2010, 09:36:58 »
¿y configuraste a RB3 como salida?


Si ya lo conigure como salida en la rutina Initport que esta al principio. En el simulador de MPlab parece andar todo bien pero no logro tener salida en el puerto. Yo sospecho que por alguna configuracion de oscilador o algo asi el pic no funciona. Pero no se cual sea el problema.

Desconectado AKENAFAB

  • Colaborador
  • DsPIC30
  • *****
  • Mensajes: 3227
Re: Problema con puerto 16f88
« Respuesta #6 en: 24 de Diciembre de 2010, 13:15:29 »
Sube tu pograma para darle una revisada.



Desconectado soymoe

  • PIC18
  • ****
  • Mensajes: 456
    • El blog de Moe
Re: Problema con puerto 16f88
« Respuesta #7 en: 27 de Diciembre de 2010, 15:53:00 »
Aqui les paso el programa principal y la rutina Initport:
Código: [Seleccionar]
LIST p=16F88   
binH  EQU 20H
binL  EQU 21H
bcdH  EQU 22H
bcdM  EQU 23H
bcdL  EQU 24H
counter EQU 25H
temp EQU 26H
Resultado_L EQU 27H
Resultado_H EQU 28H
CONTA1 EQU 29H
CONTA2 EQU 2AH
STATUS_TEMP EQU 2BH
binL_TEMP EQU 2CH
binH_TEMP   EQU 2EH

ORG 00H
GOTO PROGRAMA
#INCLUDE "p16F88.inc"
#INCLUDE "bin2bcd16.inc"
#INCLUDE "IniPort.inc"
#INCLUDE "sad.inc"
#INCLUDE "display.inc"
#INCLUDE "retardo4ms.inc"
#INCLUDE "tabla.inc"
PROGRAMA
CLRF binH;
CLRF binL
CLRF bcdL
CLRF bcdM
CLRF bcdH
;-------------------------------------------
BSF STATUS,RP0;SELECCIONO BANCO 1
MOVLW b'10001000';OPCIONES
MOVWF OPTION_REG;
;--------------CONFIGURO OPCIONES------------
MOVLW B'01101100' ; OSCILADOR INTERNO 4 MHz
MOVWF OSCCON
CLRF   OSCTUNE
BCF STATUS,RP0;SELECCIONO BANCO 0
;----------CONFIGURO OSCILADOR-------------
        CALL IniPort; configura port
CICLO   MOVLW   .255
        MOVWF PORTB;SACO EL VALOR AL PUERTO B
MOVLW 02H
MOVWF PORTA;ACTIVO PRIMERA SALIDA
        GOTO CICLO
    END;

Rutina Initport:

Código: [Seleccionar]
IniPort  
       clrf PORTA
       clrf PORTB
   bsf STATUS,RP0;seleciona banco 1
   movlw .7
   movwf CMCON ; COMPARADORES APAGADOS
       movlw b'00000001'
   movwf ANSEL;Seleciono channel AN0 como analogico
   movlw b'11111001'
       movwf TRISA; configuro bit 2-1 como salida bit 0 entrada analogica
   movlw b'00000000';salidas la display
       movwf TRISB
       bcf STATUS,RP0; vuelvo a banco 0
       return
     
   

Desconectado soymoe

  • PIC18
  • ****
  • Mensajes: 456
    • El blog de Moe
Re: Problema con puerto 16f88
« Respuesta #8 en: 28 de Diciembre de 2010, 17:55:30 »
Logre hacer funcionar el programa :-/, cambiando la configuracion de OSCCON y haciendo un CLRF de OSCTUNE
Código: [Seleccionar]
MOVLW B'01100110' ; OSCILADOR INTERNO 4 MHz
CLRF OSCTUNE
No estoy seguro de en que me equivocaba pero ahora funciona. :-/