Saltar al contenido principal
LibreTexts Español

20.2: Circuitos de entrada

  • Page ID
    81900
  • \( \newcommand{\vecs}[1]{\overset { \scriptstyle \rightharpoonup} {\mathbf{#1}} } \) \( \newcommand{\vecd}[1]{\overset{-\!-\!\rightharpoonup}{\vphantom{a}\smash {#1}}} \)\(\newcommand{\id}{\mathrm{id}}\) \( \newcommand{\Span}{\mathrm{span}}\) \( \newcommand{\kernel}{\mathrm{null}\,}\) \( \newcommand{\range}{\mathrm{range}\,}\) \( \newcommand{\RealPart}{\mathrm{Re}}\) \( \newcommand{\ImaginaryPart}{\mathrm{Im}}\) \( \newcommand{\Argument}{\mathrm{Arg}}\) \( \newcommand{\norm}[1]{\| #1 \|}\) \( \newcommand{\inner}[2]{\langle #1, #2 \rangle}\) \( \newcommand{\Span}{\mathrm{span}}\) \(\newcommand{\id}{\mathrm{id}}\) \( \newcommand{\Span}{\mathrm{span}}\) \( \newcommand{\kernel}{\mathrm{null}\,}\) \( \newcommand{\range}{\mathrm{range}\,}\) \( \newcommand{\RealPart}{\mathrm{Re}}\) \( \newcommand{\ImaginaryPart}{\mathrm{Im}}\) \( \newcommand{\Argument}{\mathrm{Arg}}\) \( \newcommand{\norm}[1]{\| #1 \|}\) \( \newcommand{\inner}[2]{\langle #1, #2 \rangle}\) \( \newcommand{\Span}{\mathrm{span}}\)\(\newcommand{\AA}{\unicode[.8,0]{x212B}}\)

    La figura\(\PageIndex{1}\) presenta una simplificación adicional que se centra únicamente en la porción de entrada.

    Circuitos de entrada simplificados (de Atmel 2014).
    Figura\(\PageIndex{1}\): Circuitos de entrada simplificados (de Atmel 2014).

    Una vez más hemos eliminado las puertas que rodean PortXn que crean la función bit toggle. Además, hemos eliminado las señales PUD, SLEEP y CLK y simplificado la sección inferior dejando solo el Schmitt Trigger. El proceso de lectura será similar al proceso de escritura examinado en el capítulo anterior.

    Para leer una señal en un pin externo, necesitaremos escribir una lógica baja al bit de dirección de datos DDxN. Esto desconectará PortXN del pin físico, Pxn, porque el búfer de tres estados pasará al estado de Z alta. Si PortXN se dejara conectado, el dispositivo externo terminaría tratando de impulsar la salida activa de PortXN. Esto produciría resultados impredecibles como mucho.

    Ahora que PortXN está desconectado de Pxn, la señal existente en Pxn impulsa el Schmitt Trigger ubicado a lo largo del borde inferior del diagrama. Esta señal se pasará al bus de datos una vez que la señal de control RPx (Pin de lectura x) sea afirmada en el búfer de tres estados inferior. Un disparador Schmitt se utiliza como intermediario aquí, ya que no podemos estar seguros de señales de entrada limpias y libres de ruido. Además, tenga en cuenta que las señales de entrada se leen desde un registro PIN (por ejemplo, PINB o PINC). Esto contrasta con los registros PORT utilizados al escribir datos. Así, si quieres escribir datos al mundo exterior, escribes a un registro PORT. Si quieres leer datos del mundo exterior, lees de un registro PIN. No todos los microcontroladores utilizan esta convención de nomenclatura. Algunos utilizan un solo registro PORT tanto para escribir como para leer. Un buen mnemotécnico para recordar si se usa PIN o PORT para entrada o salida es asociar el “in” en PIN y la “o” (para salida) en PORT. Normalmente, los registros PORT, PIN y DDR son adyacentes en el mapa de memoria. Por ejemplo, usando el puerto B encontramos PINB en 0x23, DDRB en 0x24 y PORTB en 0x25. Consulta el mapa de registro en el Apéndice para más.

    Todavía nos quedamos con la sección MOSFET. Esto se utiliza para generar una resistencia de pull-up opcional. Hay dos formas básicas de generar señales de entrada. El primero es con un circuito activo. Por ejemplo, la salida de una puerta lógica podría estar conectada al pin externo. El voltaje producido por la puerta se alimentaría al Schmitt Trigger como se describió anteriormente y la señal llegaría al bus de datos. Sin embargo, no siempre es conveniente generar una tensión externa con un circuito activo. Si quisieras leer el estado de un simple pulsador, no podrías simplemente conectarlo entre el pin y tierra ya que no habría señal que detectar. En su lugar, tendría que conectarlo a una fuente de alimentación externa a través de una resistencia limitadora, lo que requiere más componentes y espacio. El pull-up se encarga de esto por ti. Cuando se activa, el MOSFET conecta su resistencia asociada a la línea de alimentación interna. Si un interruptor ahora está conectado entre el pasador externo y tierra, y está cerrado, el pasador se tira a tierra (es decir, lógica baja). Si se abre el interruptor, la resistencia “levanta” la tensión del pin al riel de suministro (es decir, lógica alta). Así, podemos determinar el estado del conmutador sin ningún otro circuito externo.

    Para activar el pull-up, primero el pin debe estar en modo de entrada (DDxN en lógica baja que alimenta la puerta AND). Además, la salida de PortXN debe ser lógica alta. Estas dos señales harán que la salida de la puerta AND sea alta, encendiendo el MOSFET y activando la resistencia pull-up. Puede parecer un poco extraño escribir en el bit PORT para el modo de lectura, pero esta es solo una manera ordenada de aprovechar al máximo el hardware disponible. Después de todo, en modo de lectura, el registro PORT no se utiliza de otra manera. ¿Por qué dejarlo desperdiciar y requerir otro registro más para controlar el pull-up?

    En resumen, para leer desde el pin externo, se escribe un bajo en el bit DDR apropiado, colocando este circuito en modo de lectura (entrada). Si se desea un pull-up, se escribe un alto en el bit PORT apropiado. Si no se desea un pull-up, se escribe un bajo en el bit PORT. Una vez hecho esto, el valor externo se puede leer desde el registro PIN. Al igual que con los circuitos de salida, el DDR y el PUERTO no tienen que ser reescritos antes de cada lectura posterior del PIN. Los flip-flops D mantendrán sus valores hasta que sean reescritos, manteniendo así la dirección actual de los datos y el estado pull-up.


    This page titled 20.2: Circuitos de entrada is shared under a CC BY-NC-SA 4.0 license and was authored, remixed, and/or curated by James M. Fiore via source content that was edited to the style and standards of the LibreTexts platform; a detailed edit history is available upon request.