Tengo un PIC12f1822 en un circuito simple, ejecutando código muy simple. En un bucle crítico en el código, una instrucción BTFSS lee mal el pin del puerto. Esto sucede aproximadamente el 1% del tiempo.
Para una primera aproximación, el código simplemente copia el estado del pin 4 al pin 2 o 3, dependiendo del estado del pin 5. El PIC se suministra con 5v regulados. Curiosamente, este problema solo parece manifestarse si uso señales de entrada de 0v-5v. Si utilizo entradas de 0v-3.3v, el problema parece desaparecer.
¿Hay alguna propiedad eléctrica extraña de un PIC que pueda hacer que no lea un pin de puerto el 1% del tiempo?
MAIN_LOOP
btfsc CS_INPUT
goto MAIN_LOOP
movlw B'00010000'
btfsc INDF0, 2 ; INDF0 points to PORTA
movlw B'00100000'
movwf INDF1 ; INDF1 points to LATA
movlw B'00110000'
WAIT_CS_HIGH
btfss CS_INPUT ; This test fails sometimes
goto WAIT_CS_HIGH
movwf INDF1
GOTO MAIN_LOOP
END