Autor Tema: no se encender un diodo pulsando un interruptor  (Leído 2491 veces)

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

Desconectado liqu0ta

  • PIC10
  • *
  • Mensajes: 11
no se encender un diodo pulsando un interruptor
« en: 13 de Junio de 2005, 15:53:00 »
OLA! Vereis,soy un personaje que no sabe encender un diodo con un pulsador, muy triste:(, la programacion que lleva mi pic16f876 es esta:

Codigo:
   LIST   p=16F876
   INCLUDE   <P16F876.INC>
   __CONFIG   H"3fb2"
 
   ORG   0x00
   BSF   STATUS,RP0
   BSF TRISC,0
   CLRF   TRISB
   BCF   STATUS,RP0
   BCF   PORTB,0
bucle   BTFSC   PORTC,0
   GOTO   $-1
   BSF   PORTB,0
   SLEEP
   END

Creo que es correcta, y las conexiones que hago en la matriz son las siguientes, vdd y mclr a +5 , vss a tierra, el reloj en su sitio, el diodo a la pata 0 del puerto B(no creais que lo haya puesto al reves ;P ) y despues a tierra, y por ultimo, en el puerto C(0) tengo una resistencia de 1 ohm a +5 y el interruptor a masa...creo que el montaje y la programacion estan bien, el pic no funciona mal xq puedo hacer que encienda y apage el diodo intermitentemente, pero tengo aqui un cnflicto con los puertos de entrada.. si alguien pudiera echar una mano =), GRACIAS!:D

Desconectado antoniof

  • Moderadores
  • PIC24F
  • *****
  • Mensajes: 729
RE: no se encender un diodo pulsando un interruptor
« Respuesta #1 en: 13 de Junio de 2005, 19:47:00 »
Codigo:
tengo una resistencia de 1 ohm a +5 y el interruptor a masa


Supongo que te has confundido y la resistencia es de 1000 ohmios por lo menos. Si es de 1 ohm, la alimentación caerá bruscamente al pulsar el interruptor y saltará el BROWN OUT RESET del PIC, y se researá. Te aconsejo que utilices en la directiva config el siguiente formato:

Codigo:
_CP_ALL                      EQU     H"0FCF"
_CP_HALF                     EQU     H"1FDF"
_CP_UPPER_256                EQU     H"2FEF"
_CP_OFF                      EQU     H"3FFF"
_DEBUG_ON                    EQU     H"37FF"
_DEBUG_OFF                   EQU     H"3FFF"
_WRT_ENABLE_ON               EQU     H"3FFF"
_WRT_ENABLE_OFF              EQU     H"3DFF"
_CPD_ON                      EQU     H"3EFF"
_CPD_OFF                     EQU     H"3FFF"
_LVP_ON                      EQU     H"3FFF"
_LVP_OFF                     EQU     H"3F7F"
_BODEN_ON                    EQU     H"3FFF"
_BODEN_OFF                   EQU     H"3FBF"
_PWRTE_OFF                   EQU     H"3FFF"
_PWRTE_ON                    EQU     H"3FF7"
_WDT_ON                      EQU     H"3FFF"
_WDT_OFF                     EQU     H"3FFB"
_LP_OSC                      EQU     H"3FFC"
_XT_OSC                      EQU     H"3FFD"
_HS_OSC                      EQU     H"3FFE"
_RC_OSC                      EQU     H"3FFF"

   __CONFIG   _CP_OFF & _PWRTE_ON & _WDT_OFF & _XT_OSC & _BODEN_OFF & _LVP_OFF


A mi me aclara bastante mejor que fusibles tengo activados y cuales no. Importantísimo desactivar el Low Voltage Programming (LVP_OFF). Más de un dolor de cabeza me ha dado, y algún que otro led se ha resistido cuando no lo he configurado

Otra cosa que es recomendable que hagas es desactivar el conversor analógico-digital. No sé porqué los PIC lo traen activado por defecto:

Codigo:
   bsf   STATUS,RP0
   movlw   b"00000111"
   movwf   ADCON1      ;CAD desactivado
   bcf   STATUS,RP0


También me ha causado dolores de cabeza el conversor. Puede que al estar activado "despierte al PIC del modo sleep y lo resetee y apage de nuevo el LED.

Si con estas modificaciones sigue sin funcionar, cambia la orden SLEEP por un fin goto fin. El PIC se queda en ese bucle infinito, pero sin apagarse el oscilador.

Si te sigue sin funcionar, empiezate a mosquear y prueba otro PIN de entrada.

Desconectado liqu0ta

  • PIC10
  • *
  • Mensajes: 11
RE: no se encender un diodo pulsando un interruptor
« Respuesta #2 en: 14 de Junio de 2005, 08:40:00 »
que es el low voltage programming? solo desactivando el conversor a/d ya funciona bien, es por culturizarme, muchas gracias!

Desconectado antoniof

  • Moderadores
  • PIC24F
  • *****
  • Mensajes: 729
RE: no se encender un diodo pulsando un interruptor
« Respuesta #3 en: 14 de Junio de 2005, 17:47:00 »
Los PIC necesitan para programarlos una tensión de 13.5V en la patilla MCLR. Para facilitar la programación en el circuito donde se montan, se puede activar el fusible (Low Voltaje Programming) y se habilita la posibilidad de programarlos a 5V. Sin embargo, este fusible habilita como pin de programación el PGM, que en la mayoría de los PICs es el RB3. No sólo se pierde esta patilla como entrada salida, sino que además, si la dejas al aire sin conectar a masa, el PIC no te funcionará de ninguna manera, o lo hará de forma extraña. Por eso, si no se tiene pensado programarlos a baja tensión, es mejor desactivar este fusible.

Desconectado Nocturno

  • Administrador
  • DsPIC33
  • *******
  • Mensajes: 18286
    • MicroPIC
RE: no se encender un diodo pulsando un interruptor
« Respuesta #4 en: 15 de Junio de 2005, 02:43:00 »
No acabo de entender lo de que se pierde esa patilla, antoniof, entiendo que no se puede usar en tiempo de grabación pero ¿quieres decir que no se puede usar tampoco en tiempo de ejecución?

Desconectado antoniof

  • Moderadores
  • PIC24F
  • *****
  • Mensajes: 729
RE: no se encender un diodo pulsando un interruptor
« Respuesta #5 en: 15 de Junio de 2005, 03:55:00 »
Efectivamente. Tampoco se puede usar en tiempo de ejecución. Hay que ponerla con una resistencia a masa y dejarla en pazMuchas risas. Esta patilla hace la misma función que la MCLR/VPP pero sólo es necesario los 5V. Cuando esta activado el fusible, se puede programar en bajo voltaje si los vpp los entramos por esta patilla a 5V, o en alto voltaje si los pulsos vienen por la patilla MCLR a 13.5V.

Este descubrimiento lo he hecho, después de tirarme una mañana entera para entender porqué no era capaz de hacer parpadear un simple LED con el 16F876. Active el oscilador de alta frecuencia para 20MHz HS_ON y el IC-Prog, de paso, me activó el LVP_ON "de regalo"loco. No me di cuenta y deje la patilla PGM al aire. Por pura casualidad me dio por ir conectando el LED a todas las patillas del PIC hasta que llegué a la PGM y aquello se puso a funcionar. Vamos que de pura suerte me di cuenta del fallo. Si no, a estas alturas ya habría tirado el PIC, el programador, el PC y a mi mismo por la ventana.ArdiendoArdiendo

Desconectado liqu0ta

  • PIC10
  • *
  • Mensajes: 11
RE: no se encender un diodo pulsando un interruptor
« Respuesta #6 en: 15 de Junio de 2005, 04:34:00 »
Muchas gracias por la explicacion=) pero ahora tengo otra pregunta, esta vez mas de electronica que de otra cosa, veras, me preguntaba si tienes un pic alimentado con una pila de 5 voltios(realmente es una pila de 9 pasando por un regulador de voltaje, el 7805), y quieres comunicar ese pic con un sistema que trabaja tambien con niveles TTL, pero con una alimentacion propia, entonces, cuando el pic reciba una señal, esa señal será de cinco voltios con respecto de su tierra(a la tierra del pic me refiero)?me he explicado?Lo que quiero decir es que si ambos niveles de 5 voltios lo son respecto de una de las dos tierras.espero vuestra respuesta pues es un tema que me trae por la calle de la amargura. GRACIAS Y SALUDOS A TODOS!

Desconectado antoniof

  • Moderadores
  • PIC24F
  • *****
  • Mensajes: 729
RE: no se encender un diodo pulsando un interruptor
« Respuesta #7 en: 15 de Junio de 2005, 13:09:00 »
Si unes las masas de ambos sistemas no tendrás ningún problema. El 1 lógico del sistema TTL son 5V con respecto a su masa, así que el PIC lo entenderá pefectamente. Es más, un PIC puede comunicarse con otro sistema que tenga de tensión de alimentación 3.3V, aun estando alimentado el propio PIC a 5V.

Desconectado liqu0ta

  • PIC10
  • *
  • Mensajes: 11
RE: no se encender un diodo pulsando un interruptor
« Respuesta #8 en: 04 de Julio de 2005, 18:02:00 »
me ha quedado una ultimisima duda, si tu tienes ambos sistemas funcionando normalmente (x ejemplo, con unas pilas) y entonces unificas sus tierras...hay algun problema?me refiero, no habria cortocircuito o algo?no se estropearia nada? y entonces si ambas trabajan con 5 V se podrian comunicar perfectamente,no?
Gracias por responder a tanta cosa como pregunto :)

Desconectado antoniof

  • Moderadores
  • PIC24F
  • *****
  • Mensajes: 729
RE: no se encender un diodo pulsando un interruptor
« Respuesta #9 en: 05 de Julio de 2005, 03:50:00 »
Si tienes dos sistemas funcionando con alimentaciones independientes, para comunicarlos tienes que unir ambas masas. De otra forma, el sistema receptor no sería capaz de entender un uno o un cero porque no tiene con que compararlo. Otra forma de comunicar dos sistemas sin necesidad de conexión alguna, es por Radiofrecuencia o infrarojos.