Autor Tema: C18 - 18f252 - Problema PUERTO A.  (Leído 1858 veces)

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

Desconectado andros

  • PIC16
  • ***
  • Mensajes: 111
C18 - 18f252 - Problema PUERTO A.
« en: 10 de Mayo de 2006, 15:10:05 »
Cordial saludo caballeros:

Tengo un pequeño problema con la recepción de un bit en el puerto A del PIC18F252 programado en el compilador C18 de microchip (en ensamblador no me da problemas)... El problema es que no me detecta la activación de una entrada del Puerto A, específicamente el pin RA1. Lo curioso del asunto es que pruebo el mismo código para otros puertos y lo ejecuta perfectamente (Puerto B-RB3). Saben de algo en lo cual no me haya fijado?, o que por uno u otro asunto esté obviando?..., a continuación coloco el código que estoy ejecutando; si encuentran librerías que no estoy usando es porque el fragmento hace parte de un programa más grande....:


//************************************************************************************************
//El programa detecta si hay un HIGH en el pin RB3, si es así coloca un alto en RB1, de otro modo un bajo.
//Igualmente realiza el mismo procedimiento con RA1, pero colocando un alto en RB0.



#include <p18f252.h>
#include <stdlib.h>
#include <delays.h>
#include <adc.h>      //Librería de conversor Análogo Digital de 10 bits.
#include <sw_i2c.h>

//************************************************************************************************

//PROTOTIPOS

void definicion_puertos(void);

void main()
{

   definicion_puertos();

   if (PORTBbits.RB3 == 1)
   
   {
      PORTBbits.RB1 = 1;
   }
   
       else
   {
      PORTBbits.RB1 = 0;
   }

   if (PORTAbits.RA1 == 1)
   {
      PORTBbits.RB0 = 1;
   }

   else
   {
      PORTBbits.RB0 = 0;
   }
   
   while (1)                     //Ciclo infinito.
   {
   }
}

void definicion_puertos()
{
//Define si los pines son de entrada o salida.
   TRISA=0b00000011;               //Pines RA0 (AD0)y RA1 (EOM) de entrada.
   TRISC=0X00;
   TRISB=0B00001000;               //RB3 ENTRADA

//Define el estado inicial de los pines
   PORTB=0x00;
   PORTC=0x00;
   PORTA = 0b00001100;               //Salidas RA2 y RA3
}


Se me olvidaba comentar que lo estoy simulando en el PROTEUS.


Saludos.
Andros!

Desconectado JavisusII

  • PIC12
  • **
  • Mensajes: 79
Re: C18 - 18f252 - Problema PUERTO A.
« Respuesta #1 en: 10 de Mayo de 2006, 16:54:20 »
Hombre para empezar pondrías poner las sentencias if dentro del loop infinito While(1) .

Xavi (Barcelona)

Desconectado andros

  • PIC16
  • ***
  • Mensajes: 111
Re: C18 - 18f252 - Problema PUERTO A.
« Respuesta #2 en: 10 de Mayo de 2006, 16:55:30 »
Gracias a Dios he dado con la solución del problema..., es curioso me tuvo volteando bastante tiempo y apenos posteo doy con la respuesta...., por si a alguien le pasa resulta que el puerto A inicia por defecto (cuando son entradas) como entradas análogas, es decir como canales del conversor Análogo Digital de 10 bits incorporado en el pic; a través de una simple instrucción se pueden configurar como entrada digital; la instrucción es esta:

   OpenADC(ADC_FOSC_32 & ADC_RIGHT_JUST & ADC_1ANA_0REF, ADC_CH0 & ADC_INT_OFF);

En este caso el comando "ADC_1ANA_0REF" indica el uso de un solo canal para la conversión, el resto es digital....; por otro lado "ADC_CH0" indica el canal AD a usar, en este caso representa el pin RA0. De este modo RA1 es digital y !listo el pollo!

Saludos.
Andros!

Desconectado andros

  • PIC16
  • ***
  • Mensajes: 111
Re: C18 - 18f252 - Problema PUERTO A.
« Respuesta #3 en: 10 de Mayo de 2006, 16:57:50 »
Hola JavisusII, lo del While es porque lo necesitaba hacer una sola vez, de otro modo lo haría por siempre.

Saludos.
Andros!

Desconectado maunix

  • Moderadores
  • DsPIC33
  • *****
  • Mensajes: 4751
    • Mi Sitio Web Personal
Re: C18 - 18f252 - Problema PUERTO A.
« Respuesta #4 en: 10 de Mayo de 2006, 19:04:19 »
Gracias a Dios he dado con la solución del problema..., es curioso me tuvo volteando bastante tiempo y apenos posteo doy con la respuesta...., por si a alguien le pasa resulta que el puerto A inicia por defecto (cuando son entradas) como entradas análogas, es decir como canales del conversor Análogo Digital de 10 bits incorporado en el pic; a través de una simple instrucción se pueden configurar como entrada digital

Hola andros me alegro hayas podido resolver el problema, solo te posteo para contarte que esa opción de arranque es así en todos los pics que tienen canales analógicos.

En todos los pics que he usado, todos los puertos se inician siempre como entrada y los que tienen posibilidad de ser entradas analógicas se inician como tales.

Saludos
- La soberbia de un Einstein es entendible.. la de un salame es intolerable (A.Dolina)
- En teoría no hay diferencia entre la teoría y la práctica. En la práctica... si la hay.
- Lee, Lee, Lee y luego pregunta.(maunix)
- Las que conducen y arrastran al mundo no son las máquinas, sino las ideas (V. Hugo)
- Todos los hombres se parecen por sus palabras; solamente las obras evidencian que no son iguales.(Moliere)
- Todo debería ser hecho tan simple como sea posible pero no mas simple que eso.(A.Einstein)