Siempre que utilice un puerto como entrada analógica, debe asegurarse de que el puerto esté configurado correctamente con el registro TRIS y el registro ADCON1 (o el registro CONFIG3H para PortB < 4: 0 >). De manera predeterminada, cuando se restablecen los PIC18, todos los pines del puerto se configuran automáticamente para ser una entrada analógica (pendiente de la configuración del registro CONFIG3H), pero es posible que su firmware haya cambiado esta configuración antes de usar el módulo ADC.
Por ejemplo, para configurar AN12 para que sea una entrada analógica, deberías hacer lo siguiente:
- Establezca el registro TRISB, bit0, en 0x1 (AN12 está en el puerto B0).
- Establezca PCFG de ADCON1 en 0x0.
Para el mordisco más bajo de PortB (PORTB < 4: 0 >), se puede configurar el bit PBADEN del registro CONFIG3H en lugar de jugar con la configuración TRIS:
PBADEN: PORTB A/D Enable bit
(Affects ADCON1 Reset state. ADCON1 controls PORTB<4:0> pin configuration.)
1 = PORTB<4:0> pins are configured as analog input channels on Reset
0 = PORTB<4:0> pins are configured as digital I/O on Reset
De forma predeterminada, PBADEN se establece en 1, pero no sé qué SDCC establece este valor si no se especifica.