Estoy tratando de utilizar algunos de los pines IO de dsPIC33FJ128GP802 . Los pines en cuestión son RB8 a RB11.
He escrito un pequeño programa que lee el valor de entrada de uno de esos pines y lo envía al pin RA4.
Todo lo que obtengo es 0, cualquiera de los pines que use.
Si utilizo cualquier pin PORTB 7 desde abajo (es decir, el byte inferior del registro), funciona perfectamente.
He revisado la errata y no he encontrado nada que tenga relación con este problema.
¿Qué me estoy perdiendo?
Programa de prueba:
#include <p33Fxxxx.h>
_FWDT(FWDTEN_OFF)
_FOSCSEL(FNOSC_PRIPLL)
_FOSC(POSCMD_HS)
int main(void)
{
unsigned int x=0;
// Configure clock and PLL for 40 MIPS from 4MHz crystal
CLKDIVbits.DOZE = 0;
CLKDIVbits.DOZEN = 0;
CLKDIVbits.FRCDIV = 0;
CLKDIVbits.PLLPOST = 0;
CLKDIVbits.PLLPRE = 0;
PLLFBDbits.PLLDIV = 78;
// Disable the CCP output pins as per a bug mentioned in the errata.
// Should not apply to this case, but just to be sure...
CMCONbits.C1OUTEN=0;
CMCONbits.C2OUTEN=0;
// Disable all ADC pins (make them digital)
AD1PCFGL = 0xFFFF;
// Configure IO pins
TRISBbits.TRISB10=1; // RB10 Input
TRISAbits.TRISA4=0; // RA4 Output
while(1)
{
// Send input state to output pin
LATAbits.LATA4 = PORTBbits.RB10;
}
}
Otra información útil:
Microchip Language Tool Shell versión v3_30 (Fecha de creación: 21 de junio de 2011).
Las entradas están siendo controladas por un Arduino, pero usar eso, o cableado para \ $ V_ {LH} \ $ o \ $ V_ {LL} \ $ no hace ninguna diferencia.
P.S. No soy un novato en PIC, después de haber pasado muchas horas en PIC16s y PIC18s, así que no se moleste con las respuestas "obvias".