Tengo un PIC16f877 con PORTB configurado de la siguiente manera:
RB0 Output
RB1 Output
RB2 Output
RB3 Output
RB4 Input
RB5 Input
RB6 Output
RB7 Output
RB4..5 se usa para detectar 2 simples interruptores de botón, y quiero usar el indicador de interrupción RBIF para manejar el evento de presionar un botón, en lugar del sondeo.
Mirando la hoja de datos en la página 31, dice esto:
El usuario, en la Rutina de servicio de interrupción, puede eliminar la interrupción de la siguiente manera:
a) Cualquier lectura o escritura de PORTB. Esto terminará la condición de desajuste.
b) Borre el bit de marca RBIF.
Una condición de falta de coincidencia continuará configurando el bit de indicador RBIF. La lectura de PORTB finalizará la condición de discrepancia y permitirá que se borre el bit de bandera RBIF.
Mi preocupación es que dice específicamente "Cualquier ESCRIBIR de portb". Los otros pines en el PORTB que están configurados para emitir se usan para LED atenuados de PWM y, por lo tanto, se escriben con mucha frecuencia. No quiero que se produzca un cambio de entrada en RB4 o RB5 unos pocos ciclos antes de que un PORTB escriba para eliminar una condición de falta de coincidencia y no desencadenar la interrupción.
Sin embargo, la hoja de datos se contradice en el párrafo anterior:
Solo los pines configurados como entradas pueden hacer que se produzca esta interrupción (es decir, cualquier RB7: RB4 configurado como salida se excluye de la comparación de cambio de interrupción).
Lo que significaría que voy a estar bien y no tendré que preocuparme por las escrituras en PORTB que afectan la interrupción.
¿Es esto algo de lo que tengo que preocuparme? No puedo mover las salidas a otro puerto porque no tengo suficientes pines de repuesto en el chip.