Encontré que es bueno usar registros de cambio de entrada.
No estoy seguro de qué tiene que ver eso con el resto de la pregunta.
El punto de la escalera es producir varios voltajes espaciados entre Vcc y tierra. Al presionar el interruptor apropiado, usted presenta el voltaje seleccionado al micro para que lo lea e identifique.
La forma en que lo haces es bastante arbitraria y puedes usar los valores que desees dentro de los límites siempre que los voltajes resultantes sean lo suficientemente distintos como para que el micro se separe. Limita el hecho de que no desea que la resistencia sea tan alta que tenga problemas de ruido y que no sea tan bajo que consuma demasiada corriente.
Al observar el segundo circuito, puede ver que hay un total de resistencia de 10 K en la escalera y ocho interruptores. El diseñador lo configuró para que haya 0.5V entre los interruptores, probablemente para facilitar la identificación de qué interruptor se presiona cuando se usa un multímetro. (Ya que al micro no le importa mucho). O eso o el diseñador solo le gustan las cosas bonitas y ordenadas.
Como sospechas, el 100K está ahí para bajar el pin cuando no se presiona nada y se incluye el 0.1uF para proporcionar un poco de rebote.
Manejo de la presión simultánea de botones
Como mencionaste, esta técnica está bien si solo se presiona un botón a la vez. Si necesita manejar más que eso, debe considerar el uso de una red R / 2R .
Estasredessonbásicamenteconvertidoresanalógicosadigitalessimplesquecodificanlaconfiguracióndelconmutadorenvaloresanalógicosúnicos.Notequeelbit0alaizquierdatienelaresistenciadenivelbaseycadainterruptorsubsiguientetieneeldobledelvaloranterior.
Elejemploquesemuestraarribaincluyeunamplificadoroperacionalperoqueproduceunatensiónnegativaproporcionalalosinterruptoresestablecidos.
Elsiguienteesquemanoutilizacomponentesactivos.Lasalidaescerocuandonosepresionanada.CuandosepresionaSW8,salemediocarril.TodoslosdemásinterruptoressecodificanporencimadelamitaddelrielhastacercadeVcc.
simular este circuito : esquema creado usando CircuitLab
DEBOUNCING
El problema con todos estos métodos es el debouncing. Los interruptores rebotan, es decir, al presionarlos o soltarlos hacen contacto y se rompen repetidamente hasta que se asientan en un estado mecánico. Como tal, es muy importante que el software de monitoreo observe el valor de ADC durante un período para determinar si se ha establecido en un valor antes de decodificar dicho valor como la configuración del interruptor.