Usando GPIO en MPLAB® X con MCC
Los pines de entrada / salida de propósito general (GPIO) en una MCU PIC® de 8 bits dentro de MPLAB® X son bastante fáciles de configurar y usar gracias a la interfaz simple de la herramienta MPLAB Code Configurator (MCC). Como entrada, GPIO puede usarse para cosas como llevar información del sensor al chip. Como salida, GPIO puede usarse para enviar información a diferentes actuadores, como LED o motores. Muchos de los pines de E / S comparten una conexión con otros periféricos en el dispositivo, pero esta discusión se centrará en usarlos como GPIO.
Bloqueo de pines como GPIO
El primer paso para usar un pin GPIO es seleccionar la conexión de periféricos dentro del microcontrolador. En el MCC dentro de MPLAB X, los pines se pueden conectar a las líneas de señal a través del uso de la ventana MCC Pin Manager, que es el menú más a la derecha de la pantalla del MCC. Para conectar un pin en particular a una línea de señal particular para usar como un pin GPIO, busque las dos filas denominadas Pin Module. La fila de entrada se usa para las señales que ingresan al microcontrolador, y la fila de salida se usa para las señales enviadas desde el microcontrolador. Las filas superiores están etiquetadas con puertos, debajo de los cuales hay una serie de números. A estos se hace referencia mediante la sintaxis R (PortLetter) #. Por ejemplo, la línea de señal RA4 se refiere al puerto A, pin 4. Para conectar el pin a esa señal en particular, haga clic en el icono azul desbloqueado para cambiarlo al icono verde bloqueado como se ve a continuación:
Si no ve las filas etiquetadas como Módulo Pin, es posible que deba desplazarse hacia abajo en la lista ya que están ubicadas cerca de la parte inferior de la lista.
Configurando el Pin en MCC
Una vez que el Pin GPIO ha sido bloqueado en el Puerto, verá una fila acompañante en la pantalla de configuración del Módulo Pin. Este módulo se puede encontrar en el centro de la pantalla del MCC luego de hacer clic en "Módulo Pin" en Recursos del proyecto:
Debería aparecer como se muestra a continuación:
Nombre del pin: el nombre del pin se refiere al puerto que se mencionó anteriormente. Por ejemplo, dado que el primer pin bloqueado de izquierda a derecha estaba en la sección Puerto A, y correspondía a la columna 0, el pin se etiqueta RA0. Esta estructura es la misma para todos los nombres de pin, independientemente de las capacidades de un pin en particular. La designación puede volver a etiquetarse en la sección de nombre personalizado de la pantalla del Módulo Pin.
Módulo: Esto se refiere al módulo utilizado para el pin que ha elegido. RA0 se está utilizando como GPIO, que se engloba en el Módulo Pin.
Función: pueden aparecer varias instancias de un pin dependiendo de cuántos periféricos lo estén usando. Por lo tanto, para cada una de estas instancias, aparece una fila para la función acompañante, junto con el módulo al que se refiere esa función. Esta es una característica de las capacidades de Selección de pin periférica de este dispositivo.
Nombre personalizado: el nombre personalizado es un nombre definido por el usuario para el pin, a diferencia del nombre del pin que está definido por el sistema. Este será el nombre utilizado al escribir cualquier código adicional que no esté cubierto en la configuración.
Start High: define si el pin comenzará el programa como lógico HIGH, o VDD - 0.7 V.
Configuración analógica: si está buscando usar el pin GPIO como una entrada digital, asegúrese de que esta casilla esté desmarcada. Al marcar la casilla, se habilitará como un pin analógico o ADC.
Configuración analógica: si está buscando usar el pin GPIO como una entrada digital, asegúrese de que esta casilla esté desmarcada. Al marcar la casilla, se habilitará como un pin analógico o ADC.
Salida: este cuadro define si el pin se usará para recibir (entrada) o enviar (salida) una señal.
WPU: Al marcar esta casilla, se controla el uso de una resistencia de pull-up débil en el pin. La resistencia de pull-up se coloca entre la línea de señal del pin de entrada y VCC (5 V). Cuando intenta utilizar ciertas entradas digitales, el ruido eléctrico o las corrientes parásitas causadas por una variedad de factores ambientales pueden hacer que su pin fluctúe entre ALTO y BAJO.
Por ejemplo, los botones son un buen ejemplo de esto. Dependiendo de cómo conecte el circuito y el botón pulsador, quiere que el pin que lo lea se lea constantemente ALTO o BAJO cuando el botón está abierto, y el opuesto cuando está cerrado. La conexión de la línea de señal a través de una resistencia pull-up significa que el estado siempre estará conectado a 5 V cuando el botón esté abierto, a través de la resistencia. Por el contrario, cuando el botón se cierra, la corriente sigue la ruta de menor resistencia y se conecta a tierra impulsando la señal BAJA. A continuación se muestra un esquema que ilustra esta situación:
IOCP e IOCN: interrupción en el cambio (IOC) inicia una interrupción cuando cambia el nivel lógico externo (voltaje) del pin. IOCP (Interrupt-on-Change transición positiva) significa que enviará una interrupción cuando el nivel cambia de bajo a alto. IOCN (transición negativa de interrupción en el cambio) significa que enviará una interrupción cuando el nivel cambie de mayor a menor. Esta funcionalidad es más avanzada y, en la mayoría de los casos, no debería necesitar marcar ninguno de estos cuadros.
Usar la funcionalidad básica del software en el archivo main.c
En la ventana del proyecto, en Archivos generados de MCC, puede encontrar la lista completa de macros para usar con un pin GPIO bajo el archivo de encabezado pin_manager.h. Sin embargo, para la mayoría de los casos, solo hay cuatro funciones que debes tener en cuenta.
IO_RB0_SetHigh ()
Esta macro establece el pin al que se hace referencia en ALTO, que es 3.3 V en el espacio físico o 1 en el espacio digital.
Esta macro establece el pin al que se hace referencia en ALTO, que es 3.3 V en el espacio físico o 1 en el espacio digital.
IO_RB0_SetLow ()
Esta macro establece el pin al que se hace referencia en BAJO, que es 0 V en el espacio físico o 0 en el espacio digital.
IO_RB0_Toggle ()
Esta macro establece el pin referido al estado opuesto de lo que fue leído o configurado por última vez.
IO_RB0_GetValue ()
Esta macro lee el estado actual del pin al que se hace referencia.
Código de ejemplo
Si al pin RB0 se le dio el nombre personalizado Pin1, y RB1 al nombre personalizado Pin2, entonces:
Si al pin RB0 se le dio el nombre personalizado Pin1, y RB1 al nombre personalizado Pin2, entonces:
Resumen
Usar GPIO es el corazón de casi cualquier proyecto de microcontrolador y MPLAB X junto con MCC hace que configurar todo esto sea fácil y efectivo de usar.
Fuente: Using GPIO in MPLAB® X with MCC
Comentarios
Publicar un comentario