Autor Tema: Necesito un poco de luz... estoy desesperado  (Leído 2348 veces)

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

Desconectado poshijo

  • PIC10
  • *
  • Mensajes: 8
Necesito un poco de luz... estoy desesperado
« en: 22 de Mayo de 2008, 06:25:56 »
Hola a todos.
Como siempre , con problemas a la hora de llevar a cabo mis proyectillos.
Os comento:
Estoy realizando un secuencial de 8 canales que he sacado de la red , pero lo quiero modificar porque necesito una salida más.

El codigo original usa el puerto A como entrada y el puerto B como salida.
En el puerto B van los leds que hacen diferentes secuencias en base a los datos recogidos del puerto A en donde tengo puesto un Dip de 4 interruptores, ocupando desde el RA0 al RA3 quedando libre el RA4.

Es precisamente el RA4 el que quiero modificar , dejandolo como salida pero no consigo hacerlo.
Resumiendo , en vez de que todo el puerto A sea entrada, modificarlo para dejar unicamente desde el RA0 al RA3 como entrada y el RA4 como salida.
He hecho modificaciones de todas clases siguiendo diferentes tutoriales para configurar los puertos pero no hay manera humana de hacerlo, no me funciona ni a patadas.
No consigo encender el led del RA4

Os pongo parte del codigo en donde se realizan tales funciones.

;=================== Mapa de Memoria ======================

STATUS   equ   0x03   ; Haciendo asignaciones
TRISA   equ   0x05
TRISB   equ   0x06        
PORTA   equ   0x05
PORTB   equ   0x06



llaves   equ   0x0C   ; Almacenara el STATUS de las llaves
PDel0   equ   0x0D   ; Variable para Demora
PDel1   equ   0x0E   ; Variable para Demora2
PDel2   equ   0x0F   ; Variable para Demora3


;============== Configuración de puertos ==================

        ORG     0x0000
        GOTO    inicio
        ORG     0x0005
   

inicio   BSF     STATUS,5   ; Cambio al banco 1 del pic
        MOVLW   0x1f      
        MOVWF   TRISA      ; Asigna al puerto A como entrada
        MOVLW   0x00      
        MOVWF   TRISB      ; y Al puerto B como salida
        BCF     STATUS,5   ; Regresa al banco 0
        CLRF    PORTA      ; Limpia el puerto A
        CLRF    PORTB      ; Limpia el puerto B

swich   MOVF   PORTA,0      ; Carga w con el puerto A
        ANDLW   0x0F      ; Retiene los 4 bits de interes (las llaves)
        MOVWF   llaves      ; y los guarda en llaves
        XORLW   0x00      ; Verifica si es el primer efecto de la tabla
        BTFSC   STATUS,2   ; si es así
        CALL    efect1      ; lo llama y lo ejecuta
        MOVF    llaves,0   ; sino, carga llaves en w
        XORLW   0x01      ; y verifica si es el segundo efecto
        BTFSC   STATUS,2   ; si es así
        CALL    efect2      ; lo llama y lo ejecuta,etc
        MOVF    llaves,0   
        XORLW   0x02      
        BTFSC   STATUS,2   
        CALL    efect3
        MOVF    llaves,0
        XORLW   0x03
        BTFSC   STATUS,2
        CALL    efect4
        MOVF    llaves,0
        XORLW   0x04      
        BTFSC   STATUS,2
        CALL    efect5
        MOVF    llaves,0
        XORLW   0x05      
        BTFSC   STATUS,2
        CALL    efect6
        MOVF    llaves,0
        XORLW   0x06      
        BTFSC   STATUS,2
        CALL    efect7
        MOVF    llaves,0
        XORLW   0x07      
        BTFSC   STATUS,2
        CALL    efect8
        MOVF    llaves,0
        XORLW   0x08      
        BTFSC   STATUS,2
        CALL    efect9
        MOVF    llaves,0
        XORLW   0x09      
        BTFSC   STATUS,2
        CALL    efect10
        MOVF    llaves,0
        XORLW   0x0A      
        BTFSC   STATUS,2
        CALL    efect11
        MOVF    llaves,0
        XORLW   0x0B      
        BTFSC   STATUS,2
        CALL    efect12
        MOVF    llaves,0
        XORLW   0x0C      
        BTFSC   STATUS,2
        CALL    efect13
        MOVF    llaves,0
        XORLW   0x0D      
        BTFSC   STATUS,2
        CALL    efect14
        MOVF    llaves,0
        XORLW   0x0E      
        BTFSC   STATUS,2
        CALL    efect15
        MOVF    llaves,0
        XORLW   0x0F      
        BTFSC   STATUS,2
        CALL    efect16
        GOTO    swich      ; Comienza a revisar de nuevo
;======================== Primer efecto=========================
efect1   CLRF    PORTB      ; Limpia el puerto B
   BSF     PORTB,0      ; Enciende
                CALL    Demora1      ; 1 segundo
   BCF     PORTB,0      ; Apaga
   CALL    Demora1      ; 1 segundo
   BSF     PORTB,0      ; Enciende
                CALL    Demora1      ; 1 segundo
   BCF     PORTB,0      ; Apaga
   CALL    Demora1      ; 1 segundo
   CALL   UNO
   CALL   APAGA
   CALL   FIN
;------------------------------------------------------------- y a partir de aqui los demas efectos....

GRACIAS DE ANTEMANO A TODOS, como veis intento seguir aprendiendo, cosa que me cuesta horrores a mi edad.
Saludos

Desconectado Nocturno

  • Administrador
  • DsPIC33
  • *******
  • Mensajes: 18286
    • MicroPIC
Re: Necesito un poco de luz... estoy desesperado
« Respuesta #1 en: 22 de Mayo de 2008, 06:32:45 »
Jeje, veo que tú también has topado con el famoso RA4.

Lee esto, y verás la luz.
http://www.todopic.com.ar/foros/index.php?topic=8121.40

y también esto:
El PORTA de los PIC's y una de sus particularidades

Desconectado poshijo

  • PIC10
  • *
  • Mensajes: 8
Re: Necesito un poco de luz... estoy desesperado
« Respuesta #2 en: 22 de Mayo de 2008, 06:46:55 »
Gracias por la respuesta tan rapida.
Me estoy leyendo el tocho , pero para mi que no acaba de entender demasiado bien la cosa.

A ver si lo entiendo:
El RA4 va al revés?
O sea cuando es 1 lo que hace es no conducir.
Cuando es 0 lo que hace es conducir MASA (-).
Es correcto lo que digo?

No tengo ni idea de lo que es una resistenci pull-up.

Total que me he quedao compuesto y sin novia, pues nada, me toca volver a rehacer el codigo , desmontar el pic y probar y probar.
Al final daré con la solución.

Se me olvidaba, estoy usando un pic 16f84A y en el RA4 pretendo conectar un circuito musical .
Saludos

Desconectado Nocturno

  • Administrador
  • DsPIC33
  • *******
  • Mensajes: 18286
    • MicroPIC
Re: Necesito un poco de luz... estoy desesperado
« Respuesta #3 en: 22 de Mayo de 2008, 07:10:13 »
Ese pin es de colector abierto, lo cual significa que cuando saca un 0 lo hace bien, o sea, pone la señal a tierra.
Pero sin embargo, cuando la salida saca un 1, lo que hace es quedar flotando, y no leerás 5V en el pin.
Para ello, se le pone una resistencia a Vdd que suele llamarse Pullup. Con una de 10K irá bien, aunque ese valor dependerá del consumo que quieras proporcionar al circuito que reciba ese "1".

¿Lo pillas ahora?

Desconectado poshijo

  • PIC10
  • *
  • Mensajes: 8
Re: Necesito un poco de luz... estoy desesperado
« Respuesta #4 en: 22 de Mayo de 2008, 07:21:17 »
Correctisimo, ahora si lo he pillao.
Es que ando más perdido que la leche.
Voy a probarlo ahora mismo.

Muchisimas gracias, no sé que haria sin vosotros.
Un saludo.

Desconectado poshijo

  • PIC10
  • *
  • Mensajes: 8
Re: Necesito un poco de luz... estoy desesperado
« Respuesta #5 en: 22 de Mayo de 2008, 07:58:16 »
Ya está.
Con lo facil que era y me he tirado dos semanas liado con la patilla asquerosa esta.
Habia apartado dos pic pensando que estaban mal.
De verdad que tiene guasa la jodia patilla.

GRACIAS.
Saludos

Una pregunta más si no os molesta.
Con el pic 16f84 voy a intentar manejar un motorcillo de un belén en breve, y quiero poder regular la velocidad del mismo , digamos que tres velocidades diferentes.
He leido acerca de hacerlo mediante PWM, he comprado un NE555 para probar, pero no sé por donde empezar el código.
Creo que hay algo en un libro sobre pics de la editorial RAMA.
Sabeis donde puedo encontrar algún codigo con el que empezar?

Gracias de nuevo.

Desconectado poseidon20

  • Colaborador
  • PIC24F
  • *****
  • Mensajes: 762
Re: Necesito un poco de luz... estoy desesperado
« Respuesta #6 en: 23 de Mayo de 2008, 00:21:34 »
Si mal no recuerdo el 16f84a no tiene pwm por hardware, en todo caso lo tendrias que implementar por software, uno que si lo tiene es el 16f877a :D.


 

anything