¿Qué hace que al encender un pin de salida en el Microchip PIC16F690 se apague espontáneamente otro pin en el mismo puerto? Puedo solucionar este problema escribiendo un byte en todo el puerto, controlando todos los pines simultáneamente, en lugar de sólo un bit para controlar el estado del pin. Estoy usando el compilador Hi-Tech C aquí. Estoy determinando el estado del pin con 9 LEDs que consumen 3 mA cada uno. Esto está muy por debajo de las especificaciones de potencia máxima.
El archivo de cabecera mplab tiene el pin 0 del puerto A declarado como tal:
volatile bit RA0 @ ((unsigned)&PORTA*8)+0;
Enciendo el pin escribiendo un valor alto en él.
RA0 = 1;
¿El problema es que el compilador trata el "1" como un byte y escribe en todo el puerto? ¿Necesito fundirlo? Si es así, ¿no debería el compilador darme un error?
RA0 = (bit) 1;
Si escribo en todo el puerto todo funciona como se espera:
PORTA = 0b00000001;