Hola, os indico algunas cosas sobre este tema.
Resistencias de Pull-Up/Pull-Down.
Como indica @
Inderlard, se utilizan en este caso para fijar el estado en reposo del pin que controla el final de carrera, de forma que se eviten estados flotantes (indefinidos) que pueden engañar al firmware y también para otra función que indicaré más adelante
Las hay de dos tipos: internas, que vienen incorporadas en la MCU y pueden activarse/desactivarse por software; externas, implementadas en la circuitería de la placa o del interruptor.
Las primeras son las que se activan al definir los parámetros de Marlin (
ENDSTOPPULLUPS/
ENDSTOPPULLDOWNS); las segundas vienen en todas las placas que conozco, excepto en la RAMPS y por lo tanto, si la placa lleva ese circuito integrado, es indiferente la configuración de Marlin.
Para los finales de carrera, se utiliza de forma universal el Pull-Up: cuando no está activo, el pin está en estado alto (HIGH) y cuando se activa, en estado bajo (LOW), para lo que simplemente se conecta a GND.
Debido a esto y por el motivo indicado en el siguiente punto, Marlin tráe por defecto activadas las Pull-Up internas de forma preventiva (las versiones antiguas solo tenían las Pull-Up, ahora vienen las dos).
"Cortocircuito"
Realmente, siempre que se establece un circuito eléctrico, conectando los dos polos de una fuente de alimentación, se está realizando un cortocircuito, aunque esta palabra se utilice normalmente para cuando el circuito tiene resistencia casi nula, con los consabidos efectos desastrosos: la intensidad que recorre el circuito es inversamente proporcional a la resistencia de este y precisamente es la de Pull-Up la que lo evita en este caso: si se conectase directamente al pin sin una resistencia de Pull-Up, podrían producirse daños en la MCU, de ahí que Marlin tenga activadas las internas por defecto (para RAMPS sin interruptores Makerbot, es imperativo activarlas).
Conectores
En todas las placas que conozco, los conectores de final de carrera tienen 3 contactos, que como se indica son Vcc, GND y Señal: Vcc solo está ahí por si se necesita alimentación adicional y no interviene en la función del final de carrera, a no ser que el circuito de Pull-Up se encuentre en el mismo interruptor, como es el caso de los de tipo Makerbot, diseñados en su día para las placas RAMPS; Señal va conectado al pin de la MCU que controla el final de carrera, siempre mediante un circuito de Pull-Up, sea interno a la MCU o externo.
Por tanto, sin tener nada conectado en la placa, tendrémos Vcc voltios entre Vcc/GND, 0V entre Vcc/Señal (los dos están a Vcc voltios por el Pull-Up) y Vcc voltios entre GND/Señal, aunque esto puede cambiar cuando conectemos el interruptor a la placa, dependiendo de que tipo sea: si es NC (normalmente cerrado), se invierten los voltajes de VCC/Señal y GND/Señal; si es NO (normalmente abierto), serían los indicados antes.
Lógica del final de carrera
El firmware detecta el final de carrera por el cambio de estado del pin, dependiendo la configuración, como hemos visto antes, del tipo de interruptor que se use: si el pin pasa de nivel alto a bajo al activarse el final de carrera (NO), la configuración es true; si pasa de nivel bajo a alto (NC), false.
Es decir, el tipo de Pull que se utiliza no es relevante para la funcionalidad, pues es el tipo de interruptor el que fuerza el estado del circuito, pero sí influye en el funcionamiento: de cara a la seguridad, lo más recomendable es que el final de carrera funcione con lógica false ya que, dado que se utiliza el Pull-Up, en caso de fallo en el interruptor por corte del cable, se activará automáticamente el final de carrera, lo que no ocurre con lógica true, pero tiene el inconveniente de que hace trabajar la resistencia de Pull-Up de forma contínua, con el consiguiente desgaste y previsible fallo con el tiempo.