Microcontroladores - Problemas para hacer funcionar un PIC

 
Vista:

Problemas para hacer funcionar un PIC

Publicado por Oscar (6 intervenciones) el 16/10/2007 14:03:44
Hola! estoy programando un programa con el PIC 18F2420 con el C18 compiler C. De momento lo unico que queiro hacer es encender 3 led's de la puerta A. Pero no funciona. qué hago mal? el unico led que parpadea es el llamado "focus2" el resto se mantienen a nivel bajo.

Aqui el código

#include<p18f2420.h>
//-------------------------Confiuraciones iniciales-----------------------------------
#pragma config OSC = HS, WDT = OFF, LVP = OFF

//-------------------------Inicialitzación de variables globales----------------------
#define LED_bat PORTAbits.RA0
#define focus1 PORTAbits.RA1
#define focus2 PORTAbits.RA2
//-------------------------Funciones-------------------------------------------------
void delay(void)
{
short long i;
for(i=1;i<100000; i++);
}
//------------------------Configuración de los puertos--------------------------------------
PORTA=0x00;
TRISA=0b11000000;

//------------------------rutina principal-------------------
do {
LED_bat=1;
focus1=1;
focus2=1;
delay();
focus2=0;
LED_bat=0;
focus1=0;
delay();
}while(1);
}

Alguien me puede ayudar?
Muchas grácias!
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
sin imagen de perfil

RE:Problemas para hacer funcionar un PIC

Publicado por Edgar Muñoz (14 intervenciones) el 17/10/2007 05:48:37
Para empezar, el programa no contiene la función main(), pero en realidad parece que has cometido un error de transcripción.

Ciertas líneas del PORTA, por defecto, está configuradas como entradas análogas del convertidor A/D. Para utilizarlas como entradas/salidas digitales hay que configurarlas en el registro ADCON1 escribiendo 0x0F (todas digitales), en el datasheet puedes encontrar otras combinaciones.

En fin, me he tomado el atrevimiento de modificar ligeramente tu programa

#include<p18f2420.h>
//-------------------------Confiuraciones iniciales-----------------------------------
#pragma config OSC = HS, WDT = OFF, LVP = OFF

//-------------------------Inicialitzación de variables globales----------------------
#define LED_bat PORTAbits.RA0
#define focus1 PORTAbits.RA1
#define focus2 PORTAbits.RA2
//-------------------------Funciones-------------------------------------------------
void delay(void)
{
short long i;
for(i=1;i<100000; i++);
}

void main(void)
{

//------------------------Configuración de los puertos--------------------------------------
PORTA=0x00;
TRISA=0b11000000;
ADCON1=0x0F; // Las lineas del PORTA son E/S digitales

//------------------------rutina principal-------------------
do
{
LED_bat=1;
focus1=1;
focus2=1;
delay();
focus2=0;
LED_bat=0;
focus1=0;
delay();
}
while(1);
}

Saludos
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Problemas para hacer funcionar un PIC

Publicado por Oscar (6 intervenciones) el 17/10/2007 14:59:50
Muchas gracias por tu respuesta! auque el problema se soluciona parcialmente ya que no todos los pines de todos los puertos pueden ser configurados con el registro ADCON1, ya que por exemplo, el pin 6 q corresponde a RA4 no tiene asociado el registro ADCON.

Lo he estado mirando desde ayer y he encontrado la solución: de debe de hacer des del registro LAT!! y no des del PORT. En el datasheed pone:

"Reading the PORTA register reads the status of the pins; writing to it will write to the port latch.
The Data Latch register (LATA) is also memor mapped. Read-modify-write operations on the LAT register read and write the latched output value for PORTA."

Por lo tanto para modificar, se debe usar el LAT.

ejemplo:

Void main()
while(1)
{

LATAbits.LATA0 = 1;
LATAbits.LATA1 = 1;
LATAbits.LATA2 = 1;
LATAbits.LATA3 = 1;

Delay1KTCYx(1);
LATAbits.LATA0 = 0;
LATAbits.LATA1 = 0;
LATAbits.LATA2 = 0;
LATAbits.LATA3 = 0;

Delay1KTCYx(1);
}

Y esto funciona para todos los pines d salida.


Atentamente y muchas gracias
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Problemas para hacer funcionar un PIC

Publicado por Deif (1 intervención) el 29/11/2007 10:13:39
Gracias Edgar. Yo tenía el mismo problema y ya funciona de lujo.

Un abrazo!!!.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar