Autor Tema: Problema. Led que no se enciende con pulsador.  (Leído 9742 veces)

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

Desconectado edu1989

  • PIC18
  • ****
  • Mensajes: 275
Problema. Led que no se enciende con pulsador.
« en: 10 de Noviembre de 2010, 08:34:22 »
Hola a todos, estoy haciendo unos programas antes de meterle el programa que en realidad quiero hacer.. para volver a coger el truquillo a esto de los PIC.
El programa es muy sencillo, apaga o enciende un Led segun si el boton esta pulsado o no. Les dejo el codigo:

#include <pic18f4550.h>
#define PORTBIT(adr,bit)((unsigned)(&adr)*8+(bit))

static bit LED @ PORTBIT(PORTA,1);
static bit MCLR @ PORTBIT(PORTE,3);
static bit polsador @ PORTBIT(PORTB,3);

void main(void)
{
   
   PORTA=0; // RESET A TODOS LOS PINES DE PORTA
   TRISA=0xFD; // Ponemos como  salida(0) el bit de RA1(donde va conectado el LED)

   PORTB=0;   //RESET A TODOS LOS PINES DE PORTAB
   TRISB=0x08; //Ponemos como entrada(1) el bit RB3(donde va el pulsador)

while(1){
   
if(polsador==0) // si no esta pulsado, led encendido
   LED=1;
else   // si esta pulsado, led apagado.
   LED=0;
}


}

A ver si ustedes ven lo que ocurre. El programa lo simulo en proteus en la placa de pic que tengo (18f4550). El led se enciende a la perfeccion pero cuando le doy al pulsador no consigo apagarlo.

Les agradeceria mucho que me ayuden. Gracias de antemano.

Desconectado samshiel_pic

  • Colaborador
  • PIC24F
  • *****
  • Mensajes: 777
    • Electrónica·Ingenia
Re: Problema. Led que no se enciende con pulsador.
« Respuesta #1 en: 10 de Noviembre de 2010, 09:12:48 »
Hola edu1989 de momento no veo los FUXES ni la configuración del OSCILADOR. Para que te sea mas fácil vete a buscador y pon por ejemplo PIC18F4550 y te saldrán un montón de post con programas y comparas las configuraciones del micro.

No te puedes fiar siempre del simulador porque por defecto viene precargado con un oscilador de 4Mhz. Un saludo :P

Desconectado AngelGris

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 2480
Re: Problema. Led que no se enciende con pulsador.
« Respuesta #2 en: 10 de Noviembre de 2010, 09:15:18 »
Yo no use nunca un pic de la familia 18, pero en los que uso el puerto A por defecto queda configurado como analógico.

Tendrías que chequear bien eso, asegurarte que estás configurando bien todo. Para ello tenés que tener el datasheet a mano.
De vez en cuando la vida
nos besa en la boca
y a colores se despliega
como un atlas

Desconectado edu1989

  • PIC18
  • ****
  • Mensajes: 275
Re: Problema. Led que no se enciende con pulsador.
« Respuesta #3 en: 10 de Noviembre de 2010, 09:20:37 »
Si que queda configurado como analogico como bien dices. Es lo que estaba pensando ahora, tengo que cambiar el pin a digital no? Me suena que es con ADCON1...

Mirare a ver...

Lo que respecta a los fuses y al oscilador que me recomendais? Un oscilador muy preciso repercute en el tiempo computacional del programa no?

Desconectado edu1989

  • PIC18
  • ****
  • Mensajes: 275
Re: Problema. Led que no se enciende con pulsador.
« Respuesta #4 en: 10 de Noviembre de 2010, 12:01:01 »
Es un poco extraño pero estoy viendo ejemplos de la web de microchip en c ( www.microchipc.com) donde no pone nada de los fuses en los ejemplos...
Sigo teniendo el problema, alguien sabe que es lo que esta mal?

Gracias de antemano.

Desconectado gary_servin

  • PIC12
  • **
  • Mensajes: 65
Re: Problema. Led que no se enciende con pulsador.
« Respuesta #5 en: 10 de Noviembre de 2010, 13:43:59 »
Si lo estas simulando solo en Proteus (no en un circuito real) creo que no hacen falta los fuses, ahora, si lo quieres programar en un PIC si los debes tener en cuenta. Como te indico AngelGris (y como también explica en el datasheet) los pines de los puertos que se multiplexan con las entradas analógicas (para PIC 18 normalmente el puerto A, E y B) se configuran como entradas analógicas en cualquier tipo de Reset o cuando se enciende el micro. Debes setear el registro de configuración ADCON 1 para habilitar la función I/O digital de los pines del puerto A. También los pines RB0 al RB4 del puerto B se configuran como entradas analógicas, a no ser que se configure en bit de configuración PBADEN de los fuses!

Saludos!


EDIT: Esta información la puedes encontrar en el datasheet del 18F4550, en la sección 10.0 "I/O PORTS" en la pagina 110
« Última modificación: 10 de Noviembre de 2010, 13:51:01 por gary_servin »

Desconectado edu1989

  • PIC18
  • ****
  • Mensajes: 275
Re: Problema. Led que no se enciende con pulsador.
« Respuesta #6 en: 10 de Noviembre de 2010, 16:09:59 »
Muchas gracias por la respuesta, lo probare y ya te contare! Un par de dudas mas..
.Para escoger la verdadera función de un pin ( que puede tener 3 o 4, RA1, Osc0...) es a base de ir activando o desactivando bits de registros especiales no?
. La función de ADCON1 es habilitar los pines del PUERTO A  como digitales? solo del Puerto A? los demás tienen otro bit de algún registro?

Gracias de antemano y perdonad por el batiburrillo de preguntas

Desconectado AngelGris

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 2480
Re: Problema. Led que no se enciende con pulsador.
« Respuesta #7 en: 10 de Noviembre de 2010, 16:21:45 »
Muchas gracias por la respuesta, lo probare y ya te contare! Un par de dudas mas..
.Para escoger la verdadera función de un pin ( que puede tener 3 o 4, RA1, Osc0...) es a base de ir activando o desactivando bits de registros especiales no?
. La función de ADCON1 es habilitar los pines del PUERTO A  como digitales? solo del Puerto A? los demás tienen otro bit de algún registro?

  Todo eso está claramente explicado en el datasheet del PIC que quieras utilizar. No todos tienen los mismos periféricos y es por ello que para programar un PIC es conveniente tener su datasheet a la mano. Por lo menos hasta que te familiarices con él.

  En todo caso, si hay algo que no entiendas del datasheet, ahí sí uno puede intentar ayudar.
De vez en cuando la vida
nos besa en la boca
y a colores se despliega
como un atlas

Desconectado edu1989

  • PIC18
  • ****
  • Mensajes: 275
Re: Problema. Led que no se enciende con pulsador.
« Respuesta #8 en: 10 de Noviembre de 2010, 16:55:32 »
Muy bien! Muchas gracias a todos por la ayuda :)

Desconectado edu1989

  • PIC18
  • ****
  • Mensajes: 275
Re: Problema. Led que no se enciende con pulsador.
« Respuesta #9 en: 11 de Noviembre de 2010, 14:19:18 »
Sigue sin salirme.. he puesto la salida del LED tambien como salida digital... a ver si pueden ayudarme, les adjunto el codigo y la simulacion.

#include <pic18.h>
#define PORTBIT(adr,bit)((unsigned)(&adr)*8+(bit)

static bit polsador @PORTBIT(PORTA,1);
static bit LED @PORTBIT(PORTB,1);

void main(void){

PORTB=0x00;
ADCON1=0x06;
TRISB=0xFD;

PORTA=0;
ADCON1=0x06;

TRISA=0x3F;

while(1){
if(polsador==0)
LED=1;
else
LED=0;

}

}

Gracias de antemano.

Desconectado lopb

  • PIC12
  • **
  • Mensajes: 77
    • contactos lopb
Re: Problema. Led que no se enciende con pulsador.
« Respuesta #10 en: 11 de Noviembre de 2010, 14:58:13 »
Sigue sin salirme.. he puesto la salida del LED tambien como salida digital... a ver si pueden ayudarme, les adjunto el codigo y la simulacion.

#include <pic18.h>
#define PORTBIT(adr,bit)((unsigned)(&adr)*8+(bit)

static bit polsador @PORTBIT(PORTA,1);
static bit LED @PORTBIT(PORTB,1);

void main(void){

PORTB=0x00;
ADCON1=0x06;
TRISB=0xFD;

PORTA=0;
ADCON1=0x06;

TRISA=0x3F;

while(1){
if(polsador==0)
LED=1;
else
LED=0;

}

}

Gracias de antemano.
hola, que compilador estas usando? porque parece que faltan varias cosas ahi.

Desconectado edu1989

  • PIC18
  • ****
  • Mensajes: 275
Re: Problema. Led que no se enciende con pulsador.
« Respuesta #11 en: 11 de Noviembre de 2010, 16:03:52 »
Uso el Hi-tech picc18. El pic es el 18f4550, a ver si podeis ayudarme..
Gracias

Desconectado AngelGris

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 2480
Re: Problema. Led que no se enciende con pulsador.
« Respuesta #12 en: 11 de Noviembre de 2010, 16:33:16 »
Uso el Hi-tech picc18. El pic es el 18f4550, a ver si podeis ayudarme..
Gracias

  Yo uso Hitech pero sólo estoy programando por hobby algún que otro 16fxxx.

  Tanto en 16F628A como en el 16F876A (que son los que estoy usando) el puerto A también se usa como entrada de unos comparadores, así que también tengo que tocar el registro CMCON. ¿En tu caso no hay que tocar otra cosa?
De vez en cuando la vida
nos besa en la boca
y a colores se despliega
como un atlas

Desconectado edu1989

  • PIC18
  • ****
  • Mensajes: 275
Re: Problema. Led que no se enciende con pulsador.
« Respuesta #13 en: 11 de Noviembre de 2010, 16:37:20 »
Otra cosa? a que te refieres? pues tengo ejemplos similares al que estoy haciendo pero son de un pic16... Que haces con CMCON? en principio creo que no deberia tocarlos..

Gracias

Desconectado AngelGris

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 2480
Re: Problema. Led que no se enciende con pulsador.
« Respuesta #14 en: 11 de Noviembre de 2010, 16:40:11 »
El registro CMCON es para configurar los comparadores. Por defecto A0 A1 A2 A3 (hablando de los 16F62xA y 16F87xA) quedan conectados a los comparadores por lo tanto no se los puede usar como pines digitales hasta no configurar el registro CMCON.

De vez en cuando la vida
nos besa en la boca
y a colores se despliega
como un atlas


 

anything