7 votos

Pin y puerto en microcontrolador

Soy un poco nuevo en microcontroladores. ¿Puedes decirme qué es un puerto y un pin en un microcontrolador? ¿Cuáles son sus usos (pin y puerto)?

16voto

Matt McMinn Puntos 6067

Los pines son lo que sobresale de un IC y se conectan eléctricamente con el mundo exterior. Los puertos están representados por registros dentro del microcontrolador, y permiten que el programa (firmware) controle el estado de los pines, o viceversa, lea el estado de los pines si están configurados como entradas. Existe una correspondencia uno a uno entre los pines en el microcontrolador y los bits en sus registros.

Toma, por ejemplo, este microcontrolador de 28 pines, que resulta ser un PIC24FJ64A004:

ingresar descripción de la imagen aquí

Este procesador tiene una arquitectura de 16 bits, por lo que los puertos y registros tienen todos un ancho de 16 bits. Otras anchuras de datos comunes (y por lo tanto anchuras de puerto) en microcontroladores son de 8 y 32 bits. Como se muestra en el diagrama anterior, los pines de puerto no necesariamente tienen que agruparse juntos.

Dado que este chip en particular tiene solo 28 pines, solo se puede implementar completamente un registro, es decir, tiene pines que corresponden a todos los 16 bits en el registro de E/S. Ese es el PORT B, y los pines están coloreados en rojo en el diagrama anterior. Hay otro puerto que está parcialmente poblado, es decir, el PORT A que tiene 5 bits implementados, RA0 a través de RA4. Me quedaré con PORT B.

Hay otros microcontroladores en esta misma familia de procesadores que vienen en un paquete de 44 pines, donde se definen pines de registro adicionales (RA7-RA10 y RC0-RC9).

Como se mencionó anteriormente, los puertos son manipulados a través de varios registros.

Dependiendo del tipo de procesador, los registros pueden aparecer en el mismo mapa de memoria que la memoria del procesador (RAM); en este caso, las direcciones están reservadas para este propósito y ese segmento de RAM no se implementa. La ventaja aquí es que todas las instrucciones que operan en la RAM también funcionarán con los registros de E/S.

El otro esquema es tener un espacio de direcciones especial para los registros de E/S y tener instrucciones especiales (es decir, INP y OUT) que solo acceden a estos registros. Qué esquema se utiliza es histórico, en la década de 1970 Intel comenzó a usar el esquema de direccionamiento de E/S separado, y Motorola entre otros eligió poner tanto las direcciones de E/S como las de RAM en el mismo espacio de memoria.

Estos registros asociados con el PORT B en el PIC24FJ64A004 son:

ingresar descripción de la imagen aquí

La configuración del puerto se realiza a través de los registros TRISB y ODCB. TRIS significa tri-estado, que es una condición donde un pin se coloca en un estado de alta impedancia y no puede conducir ninguna salida. El registro TRISB determina si cada pin del PORT B es una entrada o salida. (En algunos otros microcontroladores, esto se llama un registro de Dirección de Datos, o DDR: DDRB en el caso de PORT B. Creo que DDR es un mejor nombre para este registro que TRIS).

Establecer el bit asociado en TRISB hace que el pin sea una entrada, y establecerlo en 0 hace que sea una salida.

Cada pin, si está configurado como salida, también se puede configurar como de drenaje abierto o push-pull. Esto se hace con el registro ODCB (registro de control de drenaje abierto),

Drenaje abierto significa que el pin solo "absorbe" corriente, es decir, puede controlar una salida ya conectada a un voltaje positivo, como un LED u otro periférico de E/S conectado a Vcc (el voltaje del sistema) apagándolo. Push-pull significa que el pin puede "fuente" voltaje (establecer la salida a un voltaje alto igual a Vcc) o absorber corriente de la misma manera que una salida de drenaje abierto.

Establecer el bit asociado en ODCB hace que el pin sea de drenaje abierto, y establecerlo en 0 lo hace push-pull.

¿Por qué drenaje abierto? Una razón es que permite que varios dispositivos impulsen la misma línea, que está conectada a una resistencia de pull-up. Cuando la salida de drenaje abierto se establece en 1, se coloca en un estado de alta impedancia, igual que una entrada. Por lo tanto, solo el dispositivo que está configurado en 0 (tierra) controla activamente la línea.

Si el pin está configurado como una entrada, entonces al leer el puerto se lee el estado del pin. Si el pin está configurado como una salida, entonces escribir en los registros LATB o PORTB cambiará el estado del pin de salida. ¿Por qué utilizar tanto LATB como PORTB? Porque leer PORTB siempre lee el estado del pin, ya sea que el pin sea una entrada o salida. Leer el registro LATB lee lo que sea que se haya escrito en el puerto.

Establecer el bit en el registro de salida en 1 de un pin configurado como salida de drenaje abierto pone el pin en un estado de alta impedancia, y establecerlo en 0 establece la salida a tierra. Establecer el bit en el registro de salida en 1 de un pin configurado como push-pull impulsa la salida en alto, y establecer el bit en 0 lleva la salida a bajo.

Aunque se puede escribir en o leer desde todo el puerto a la vez, hay instrucciones para establecer o probar bits individuales en un registro de E/S. Esto ahorra, por ejemplo, la necesidad de recordar el valor anterior de un registro de E/S al escribir nuevamente el contenido completo.

Observa en el diagrama del microcontrolador anterior, además de las designaciones RBx, hay muchas otras funciones etiquetadas con estos pines. Esto permite que el microcontrolador configure los pines para otros propósitos como entradas analógicas, comparadores, osciladores externos, captura de entrada/salida PWM, UART, SPI, I²C y PMP (puerto maestro paralelo).

Este diagrama muestra la lógica interna asociada con un pin de un puerto de E/S, además del circuito utilizado para compartir un pin con un periférico.

ingresar descripción de la imagen aquí

Para habilitar cualquiera de estos periféricos, generalmente solo es necesario establecer un bit de habilitación en el registro de control para el periférico. Esto permite que el periférico controle el pin correspondiente y lo desconecte de los registros del PORT.

Una de las características inusuales de la familia PIC24 es que tiene una característica llamada PPS (Selección de Pin Periférico). Esto significa que muchas de las funciones mostradas en el diagrama del microcontrolador en realidad pueden ser reasignadas a otros pines, el diagrama solo muestra las ubicaciones predeterminadas. Los pines etiquetados RP representan los pines periféricos remapeables.

Finalmente, este microcontrolador tiene un ADC de 10 canales. Ocho de estos canales comparten pines con PORTB (RB0-RB3 y RB12-RB15). Un registro llamado AD1PCFG se utiliza para controlar si un pin se utiliza como entrada analógica o si es utilizado por PORT B.

12voto

Lee Richardson Puntos 121

Como ejemplo, un puerto en un microcontrolador como el que se encuentra en las placas de desarrollo de Arduino (como el Uno) es un conjunto de usualmente 8 pines (debido a que es una arquitectura de 8 bits, tiene sentido organizar los pines en grupos de 8) que pueden configurarse ya sea para actuar como entradas digitales (encendido/apagado), salidas, o ser utilizados por un periférico especial como un Convertidor Analógico a Digital, Temporizador para funciones como la Comparación de Salida (PWM), y a veces estos pueden estar conectados a una generación especial de interrupciones internas, por ejemplo, para ser activados por una fuente externa si el microcontrolador está en modo de reposo.

Aquí hay un diagrama rápido de los pines de un microcontrolador ejemplo:

diagrama de pines

¿Ves cómo las etiquetas son cosas como PB0 ... PB7, y PA0 a P7, etc? Estos son puertos de 8 bits etiquetados como B y A respectivamente. Los microcontroladores pueden tener cualquier número de puertos, realmente depende de la arquitectura, cantidad de pines del paquete y diseño general que dicta cuántos pines hay en un puerto, cuántos puertos/pines hay en un microcontrolador, y qué pueden hacer. Cada uno es especial y diferente, pero la mayoría sigue la etiqueta del puerto en letras, con números específicos de pines en números, y P significa "Puerto". Entonces PA0 se refiere al Puerto A, pin 0. Los números de pin generalmente comienzan en 0, asumo que debido a que el índice de firmware/programación prefieren comenzar en 0. ¡Nota que en las huellas y diseños esquemáticos, en la imagen también, los números de pin físicos reales siempre comienzan en 1!

La siguiente imagen muestra una versión simplificada de lo que hay en el pin de un microcontrolador moderno (que recuerda generalmente se agrupan en puertos, o conjuntos de este circuito todos en fila).

circuito de pin

Si el pin está configurado como una entrada, enrutará las conexiones de ese pin al lado de "entrada" del circuito y deshabilitará el lado de salida. Lo mismo sucede si el pin está configurado como un pin de salida, el lado de entrada está deshabilitado/desconectado.

El bloque de "funcionalidad lógica" de cada pin en el centro del diagrama generalmente está conectado al registro de datos del puerto, donde el procesador puede leer los valores en todos sus pines en cualquier momento. Ten en cuenta que el registro de datos es simplemente una representación del valor visto en el pin, no es exactamente una conexión directa. El registro de datos generalmente se puede escribir, si el pin está configurado como una salida, para cambiar el valor de salida a un 0 o un 1. Nuevamente, establecer estos valores es solo una representación, los controladores de puerto de salida mostrados en el diagrama como MOSFET al menos intentarán emparejar el valor requerido, pero la circuitería externa o problemas pueden impedir que eso se cumpla.

Recuerda que los valores lógicos de entrada/salida son realmente solo umbrales de comparación del voltaje VCC/fuente dado para el microcontrolador. Si suministras al microcontrolador 5V, lo usará como el voltaje de comparación para sus salidas y entradas lógicas. Las salidas simplemente porque los FETs de salida del driver suministran corriente y conducen a la misma diferencia de potencial (también conocida como voltaje) que VCC al ir a "alto lógico" y conectan/presionan corriente hacia la referencia de Tierra al ir a "bajo lógico".

Para la entrada, hay comparadores de alta impedancia (quizás con disparadores Schmitt para tener algo de histéresis y evitar la incertidumbre de alto/bajo lógica si una entrada está cerca de estos valores) que usan VCC (el voltaje de la fuente de alimentación de entrada, ¡recuérdalo!) como punto de comparación, y luego un cierto % de esto se utiliza para determinar si una señal de entrada es una señal de ALTO lógico o BAJO lógico. A menudo, los porcentajes utilizados son >66% de VCC para ALTO lógico, y <33% para BAJO lógico. Esto deja un buen margen para rechazar señales desconocidas o ruidosas. Si el microcontrolador en mi ejemplo anterior ve 4V en la entrada, esto está por encima del 66% de 5V (3.3V) y se verá en el registro de datos del puerto, para ese pin en particular, como un "1".

1voto

abeger Puntos 1825

Ok primero los pines son los conductores físicos y los puertos son los canales de entrada/salida I/O conectados internamente a esos pines. Los pines se utilizan para indexar y orientar el chip físico. Por ejemplo, el pin 1 está casi siempre en la parte superior izquierda del chip, pero siempre está a la izquierda de la semicircunferencia recortada en un extremo del chip.

Los puertos se utilizan para comunicarse con y desde el chip, por ejemplo, el bit 1 del PuertoA podría estar en el pin 1 y el bit 2 del PuertoA podría estar en el pin 2. Por supuesto, esto es solo un ejemplo ya que es diferente en cada microcontrolador.

i-Ciencias.com

I-Ciencias es una comunidad de estudiantes y amantes de la ciencia en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X