Estoy realizando un proyecto y me topé con problema en el puertoA donde puedo manejarlo bien como salida pero no como entrada.
Realicé un código simple, aparte para probar exclusivamente este puerto, y el código funciona perfecto salvo por el puertoA como entradas
Testeé que le llega tensión al pin correspondiente y además veo en el registro de funciones especiales cuando hago debugger
que no está recibiendo la señal, y que el TRISA se configura tal como se lo pido. El puerto B responde sin problema para lectura como escritura
/////////////////////////////////////////////////////////
//PORTx para Leer
//LATx para Escribir
////////////////////////////////////////////////////////
#include "P18F4620.h" // <pic18.h> + config bits //
#include <stdlib.h>
#include <stdio.h>
#include <delays.h>
//
#define Salida1 LATAbits.LATA0
#define Entrada1 PORTAbits.RA1
#define Entrada2 PORTAbits.RA2
#define Salida2 LATAbits.LATA3
void main()
{
TRISAbits.TRISA0 = 0; // is output
TRISAbits.TRISA1 = 1; // is input
TRISAbits.TRISA2 = 1; // is input
TRISAbits.TRISA3 = 0; // is output
//PuertoB como Salida
LATB=0x00;
LATA=0x00;
///////Con esto seteo el puertoA como digital//////////////////
CMCON=0x07;//Desactiva comparadores////////////////////////////
ADCON0=0x00;//ADC desactivado//////////////////////////////////
ADCON1=0x06;//Entradas y salidas digitales/////////////////////
///////////////////////////////////////////////////////////////
TRISB=0x00;
TRISA=0xFF;
Salida1=1;
Salida2=1;
while(1){
PORTB=0xFF;
Delay10KTCYx(255);
PORTB=0x00;
Delay10KTCYx(255);
if (Entrada1==1)
{
while (Entrada1==1)
{
PORTB=0xFF;
}
}
if (Entrada2==1)
{
while (Entrada2==1)
{
PORTB=0x00;
}
}
}
}