Estoy experimentando un problema extraño con la lectura del valor de PORTD
mientras está configurado como una salida. Estoy escribiendo en LATD
para establecer la salida en el puerto. La salida real es la que espero (verificada con LED), pero cuando leo el valor de PORTD
, los bits 0: 3 siempre vuelven como cero ...
Mi primer pensamiento fue un conflicto con el ADC, pero está apagado, al igual que CCP1, ECCP y PSP, que también comparten pines con el puerto D. El código funciona bien cuando se ejecuta en MPLAB SIM, pero el problema parece que ambos funcionan normalmente y depuración con un PICkit3 ...
Aquí está el código:
void main (void)
{
char test;
ADCON0bits.ADON=0; //Turn adc off
ADCON1 = 0x0F; //Turn individual ADC channels off.
ECCP1CONbits.ECCP1M = 0; //Turn off ECCP module
CCP1CON = 0; //Disable CCP1
TRISEbits.PSPMODE = 0; //Turn off PSP module
TRISD = 0; //PORTD to output
LATD = 0xFF; //Set all bits high
Nop(); //Wait for output to propagate back to PORTD
test = PORTD; //test gets 0xF0???
}
Esto es realmente frustrante, sobre todo porque el hardware realmente funciona pero mis auto pruebas siguen dando falsos positivos ...