Cuando se configura el pin como entrada, se pone alto, ¿por qué?

1

He conectado un pulsador a GP1 y un LED a GP2 en mi PIC12F683 y este es mi código:

unsigned char i = 0;

void main() {
     TRISIO = 0b00000010;
     CMCON0 = 0x07;

     ANSEL = 0b00000000;

     while(1){
              i = GPIO.B1;
              if(i == 0){ GPIO.B2 = 0; }
              if(i == 1){ GPIO.B2 = 1; }
     }
}

Pero cuando conecto la alimentación, mi LED está encendido, incluso cuando quito el interruptor de la placa de pruebas.

Estoy usando MikroC. Cuando configuré la salida de GP1, el LED se apagó.

¿Cuál es el problema probable?

Mi configuración:

Scematics:

    
pregunta

1 respuesta

0

Inhabilite la resistencia de pull-up interna de su pin de entrada. En AVR, generalmente se hace configurando el pin como entrada y configurándolo en 0 . (No sé mucho sobre el PIC pero se hace de esta manera en el AVR de Atmel). Además, si su pulsador está conectado a VCC, debe colocar una resistencia desplegable en el pin de entrada, de modo que cuando el interruptor esté apagado, la entrada se conectará a GND y el valor estará en cero.

si estás confundido por lo que he dicho, simplemente coloca una resistencia de 1Kohm desde tu pin de entrada a tierra. ¡Debería resolver tu problema! (Sólo va a usar más poder, ¡pero no es mucho!) :-)

También aquí hay una buena referencia en configuraciones de pines para PIC (¡con muchas fotos!): enlace

    
respondido por el Shamim

Lea otras preguntas en las etiquetas