¿Puedo usar este interruptor con entradas pull-up?

Actualmente estoy usando mbed Application Shield en una placa tipo Arduino. Quiero usar el botón central como entrada para las interrupciones, pero las resistencias pull-up internas me causan problemas.

Sin embargo, durante la depuración, no pude entender por qué leería 2,7 V en la entrada cuando no se presionó el interruptor cuando esperaba leer 3,3 V, independientemente de si el interruptor se presionó o no.

Esquema de la configuración del interruptor

¿Es posible hacer que esta configuración funcione o tendré que hacer un circuito separado para un botón?

¿E (Centro) no está derribado? Puede configurar para obtener una interrupción en el borde ascendente o descendente.
La resistencia pull-up interna está en el microcontrolador. Obtengo 3.3 V en SW_CENTER.

Respuestas (2)

Las resistencias pullup internas en una MCU suelen estar en el rango de 30K a 50K ohm. Si está viendo el nivel de 2.7 V en las líneas GPIO a la MCU, entonces parece probable que una de varias cosas esté en juego aquí:

  1. ¿Las resistencias desplegables son realmente 4.7K? Si se completan incorrectamente, digamos 47K, este podría ser el problema. Si es así, retírelos y reemplácelos con resistencias de menor valor.
  2. Esto también podría ser un problema con las conexiones comunes de esas resistencias desplegables de 4.7K que no están conectadas correctamente a la GND de la MCU. Compruébelo con un ohmímetro cuando todo esté apagado.
  3. Es muy posible que tenga los pines GPIO a los que estos se conectan configurados como pines de salida en el estado alto ('1'). El pulldown nominal de 4,7 K en estos pines puede hacer que la unidad de salida sea de 2,7 V y luego el interruptor simplemente tira de la salida hasta 3,3 V. Si este es el caso, haga que esos pines GPIO sean entradas en lugar de salidas.
Para el 1 y el 2 he comprobado la resistencia y es de 4,7K. Para 3, el pin se ha declarado como un pin de entrada en el código.

Las interrupciones externas se pueden configurar para que se "llamen" cuando también haya un flanco ascendente o descendente. El esquema dice Arduino R3, por lo que debería ser un Atmel. Entonces, sí, puede hacer que esta configuración funcione en interrupción ascendente o descendente.

Actualmente tengo la interrupción en CAMBIO, por lo que funciona tanto en el borde ascendente como en el descendente. Esta configuración funciona cuando la conexión es pin de entrada->interruptor separado->tierra, pero no funciona con la configuración de interruptor incorporada anterior. Los voltajes que leo con la configuración anterior son 2,7 V cuando no se presiona y 3,3 V cuando se presiona, lo que no funcionará.
Para obtener una solución rápida: configúrelo en menú desplegable interno. Entonces obtendrás un 3.3 cuando se presiona el interruptor. La razón de los 2.7V (creo) es con respecto al riel interno de 3.3, la resistencia interna y la resistencia de 4.7K (externa). Recuerdo haberlo leído en alguna parte. Volvere a ti.
Desafortunadamente, este microcontrolador no tiene resistencias pull-down internas.