Autor Tema: Leer puerto A PIC18F4550 en C18  (Leído 6868 veces)

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

Desconectado freshdesing

  • Colaborador
  • PIC12
  • *****
  • Mensajes: 88
Leer puerto A PIC18F4550 en C18
« en: 23 de Junio de 2009, 12:45:03 »
Hola estoy intentando leer el puerto A del PIC18F4550 y encender unos leds en función del estado de éste. Hay algo que no funciona, pero no logro ver que es. ¿Podría alguien ayudarme?

Código: [Seleccionar]
//*** EJEMPLOS CURSO C18 TODOPIC ***



//*** 5.-IF ELSE ***

#include <p18f4550.h>
//#include <delays.h>
#include <stdio.h>
#pragma config FOSC = XT_XT,FCMEN = OFF,IESO = OFF //CONFIG1H
#pragma config PWRT = ON,BOR = OFF,BORV = 0 //CONFIG2L
#pragma config WDT = OFF,WDTPS = 32768 //CONFIG2H
#pragma config MCLRE = ON,LPT1OSC = OFF,PBADEN = OFF,CCP2MX = ON//CONFIG3H
#pragma config STVREN = OFF,LVP = OFF,XINST = OFF,DEBUG = OFF//CONFIG4L
#pragma config CP0 = ON,CP1 = ON,CP2 = ON, CP3 = ON//CONFIG5L
#pragma config CPB = ON,CPD = ON//CONFIG5H
#pragma config WRT0 = ON,WRT1 = ON,WRT2 = ON,WRT3 = ON//CONFIG6L
#pragma config WRTB = ON,WRTC = ON,WRTD = ON//CONFIG6H
#pragma config EBTR0 = ON,EBTR1 = ON,EBTR2 = ON,EBTR3 = ON//CONFIG7L
#pragma config EBTRB = ON//CONFIG7H

unsigned int valor;

void main(void){
//inicializar puertoA
//todos los pines
//seran digitales
PORTA = 0XFF; //inicializar puertoA como entrada
LATA = 0X00;
ADCON0 = 0X00; //ADC desactivado
ADCON1 = 0X0F;  //Digitales

CMCON = 0X07; //Comparadores desactivados

//*******************
TRISA = 0XFF;
TRISB = 0X00;
TRISC = 0X00;
LATB = 0XFF;
//*******************************************************
//*******************************************************
while(1)
{
valor=PORTA;
//***************
if(valor == 0X00)
{
LATB = 0XFF;
}
//***************
if(valor == 0X01)
{
LATB = 0X00;

}

}
//*******************************************************
//*******************************************************
}

Para leer o escribir en el puerto en C18. ¿hay que usar LATX o PORTX?

Gracias.

PD: El código es modificado del tutorial de C18 de micro_cadaver de este foro.
Como salida en el puerto B uso leds. y como entrada en el puerto A un pulsador qeu da 5 V al pulsarlo, la idea es dejarlo pulsado y ver como cambia el puerto B.

Desconectado micro_cadaver

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 2102
    • blog microembebidos
Re: Leer puerto A PIC18F4550 en C18
« Respuesta #1 en: 24 de Junio de 2009, 12:30:48 »
#pragma config OSC = XT,FCMEN = OFF,IESO = OFF //CONFIG1H

revisa esta linea porsiacaso pues en tu codigo figura:
#pragma config FOSC = XT_XT,

para aclarar conceptos: PORTx para Leer
                                   LATx   para Escribir

saludos
a cosechar!!!... :P
pic32... ahi voy....
aguante el micro 16f84  !!!!

visita mi pagina: http://www.microembebidos.wordpress.com

Desconectado freshdesing

  • Colaborador
  • PIC12
  • *****
  • Mensajes: 88
Re: Leer puerto A PIC18F4550 en C18
« Respuesta #2 en: 26 de Junio de 2009, 06:53:24 »
La parte de FOSC=XT_XT está sacada del fichero  hlpPIC18ConfigSet . he cambiado todo el puerto A por el B y funciona, del PIN A0:5 Ya que el RA6 lo utilizo para el xtal y el RA7 no existe.

Muchas gracias por lo del LATx y PORTx, porque no me había quedado claro.

Inentaré ver por que no funciona lo mismo pero con el A como entrada y el B como salida.


Código: [Seleccionar]
unsigned int valor;

void main(void){
//inicializar puertoA
//todos los pines
//seran digitales
//PORTA = 0XFF; //inicializar puertoA como salida
//LATA = 0X00;
ADCON0 = 0X00; //ADC desactivado
ADCON1 = 0X0F;  //Digitales

CMCON = 0X07; //Comparadores desactivados

//*******************
TRISA = 0X00;
TRISB = 0XFF;
TRISC = 0X00;
LATB = 0XFF;
//LATC = 0XFF;
//*******************************************************
//*******************************************************
while(1)
{
valor=PORTB;
//***************
if(valor == 0X01)
{
LATA = 0XFF;
}
//***************
if(valor == 0X01)
{
LATA = 0X00;

}

}
//*******************************************************
//*******************************************************
}

Desconectado freshdesing

  • Colaborador
  • PIC12
  • *****
  • Mensajes: 88
Re: Leer puerto A PIC18F4550 en C18
« Respuesta #3 en: 26 de Junio de 2009, 07:02:43 »
Que no me había dado cuenta de que eras tu...

Muy bueno el tutorial, lo estoy usando para el 18F4550 que es el que tenía por aquí de unos samples. Voy a intentar conseguir el 18F2525 que no tiene USB y así me quito una parte importante de la configuración,  y cuando aprenda a usarlo, pues ya habrá tiempo del USB.

Gracias.


Desconectado micro_cadaver

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 2102
    • blog microembebidos
Re: Leer puerto A PIC18F4550 en C18
« Respuesta #4 en: 26 de Junio de 2009, 10:45:34 »
gracias por tu comentario, es alagador para mi saber que lo que hice una vez (eran tiempos duros para mi, estaba sin curro) le esta ayudando a otras personas, sobre todo que ayude a fomentar la apreciación a los micros.  :mrgreen:

pues continua con ese chip, no te conformes con lo que esta ya hecho, el camino es así siempre, con dificultades y pruebas, y pos siempre hay que superarlas jejejej, es solo una sugerencia.  :o

por otro lado que curioso que no funcione de esa manera, dime has tratado de simularlo en el proteus?

saludos
a cosechar!!!... :P
pic32... ahi voy....
aguante el micro 16f84  !!!!

visita mi pagina: http://www.microembebidos.wordpress.com

Desconectado freshdesing

  • Colaborador
  • PIC12
  • *****
  • Mensajes: 88
Re: Leer puerto A PIC18F4550 en C18
« Respuesta #5 en: 26 de Junio de 2009, 10:55:31 »
Tengo el proteus, pero no la parte de simulación. Lo estoy haciendo en una placa de Mikroelectronica, la EasyPIC5.


Desconectado micro_cadaver

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 2102
    • blog microembebidos
Re: Leer puerto A PIC18F4550 en C18
« Respuesta #6 en: 26 de Junio de 2009, 10:57:03 »
añap derepente tiene algo conectado por ahi que no te deja utilizarlo como quieres, por lo general las placas entrenadoras tienen algunas limitaciones de esa caracteristica.
a cosechar!!!... :P
pic32... ahi voy....
aguante el micro 16f84  !!!!

visita mi pagina: http://www.microembebidos.wordpress.com

Desconectado freshdesing

  • Colaborador
  • PIC12
  • *****
  • Mensajes: 88
Re: Leer puerto A PIC18F4550 en C18
« Respuesta #7 en: 26 de Junio de 2009, 11:58:47 »
Había por ahí un Jumper para el ADC... Ya va correcto.


He estado usando el puerto C, he estado desactinado el USB, para asi ir poco a poco, y he visto que algunos pines no se pueden usar como salida. Bueno sigo con los ejemplos...

Gracias de nuevo...


 

anything