Lab3 Inicialización GPIO

Descargar como docx, pdf o txt
Descargar como docx, pdf o txt
Está en la página 1de 4

Universidad Modelo Control de Motores Eléctricos

Lab 3: Inicialización y GPIO


15/04/2022
Azcorra Espadas Luis Jorge.

Introducción.
En esta práctica aprenderemos a inicializar el sistema de reloj para poder trabajar
con el microcontrolador y el periférico GPIO usando TivaWare para luego usar la salida
GPIO para hacer parpadear un LED en la placa de evaluación.
Desarrollo.
1.-Primero se crea el proyecto.
Para crear el proyecto se copia el lab 2 para evitar realizar toda la declaración de
variables y de buscar la placa

2.- Establecer los archivos principales en el main.c.


TivaWare™ está escrito utilizando los estándares de programación C ISO/IEC
9899:1999 (o C99) junto con el estándar húngaro para nombrar variables. Las
convenciones de programación C99 CC99 hacen un mejor uso del hardware disponible,
incluyendo la unidad de punto flotante IEE754de punto flotante. Para que todo tenga el
mismo aspecto, vamos a utilizar esas líneas de programación.
Para empezar a programar necesitas incluir las librerías para posteriormente
escribir el código:
#include <stdint.h>
#include <stdbool.h>
#include "inc/hw_memmap.h"
#include "inc/hw_types.h"
#include "driverlib/sysctl.h"
#include "driverlib/gpio.h"

uint8_t ui8PinData=2;

El uso del < > restringe la ruta de búsqueda sólo a la ruta especificada. El uso de "
"hace que la búsqueda se inicie en el directorio del proyecto. Para los includes como los
dos estándares usted quiere asegurarse de que está accediendo a los archivos originales,
estándar ... no uno de los que puede que hayan sido modificados.
stdint.h: Definiciones de variables para el estándar C99

1
Universidad Modelo Control de Motores Eléctricos

stdbool.int: Definiciones de booleanos para el estándar C99


hw_memmap.h : Macros que definen el mapa de memoria del dispositivo Tiva C Series.
Este incluye definiciones tales como ubicaciones de direcciones base de periféricos como
GPIO_PORTF_BASE.
hw_types.h : Define tipos y macros comunes
sysctl.h : Define y macros para la API de control del sistema de DriverLib. Esto incluye
funciones de la API como SysCtlClockSet y SysCtlClockGet.
gpio.h : Define y macros para la API GPIO de DriverLib. Esto incluye funciones de la API
como GPIOPinTypePWM y GPIOPinWrite.
uint8_t ui8PinData=2; Crea una variable entera llamada ui8PinData y la inicializa a 2. Esto
se utilizará para recorrer los tres LEDs, encendiéndolos uno a uno a la vez. Observe que el
tipo C99 es un entero de 8 bits sin signo y que el nombre de la variable refleja esto. Y en
binario representa 0000-0010.

3.- Estructurar y programar.


Creamos la función main para incluir el código para encender un led adentro de la
función creada.
Int main(void)
{
}

4.- Configuración del reloj.


Configure el reloj del sistema para que funcione con un cristal de 16MHz en el
oscilador principal, conduciendo el PLL de 400MHz. El PLL de 400MHz oscila sólo a esa
frecuencia, pero puede ser manejado por cristales u osciladores que funcionen entre 5 y
25MHz. Hay un divisor /2 por defecto en la ruta del reloj y estamos especificando otro /5,
lo que hace un total de 10. Esto significa que el Reloj del Sistema Clock será de 40MHz.
Para ello agregamos la siguiente línea de código que defina la velocidad del
microcontrolador.
SysCtlClockSet(SYSCTL_SYSDIV_5|SYSCTL_USE_PLL|SYSCTL_XTAL_16MHZ|
SYSCTL_OSC_MAIN);

2
Universidad Modelo Control de Motores Eléctricos

5.- Configuración del GPIO.


Antes de llamar a cualquier función driverLib específica de un periférico, debemos
habilitar el reloj para ese periférico. Si no se hace esto, se producirá un fallo ISR (fallo de
dirección). Esto es este es un error común para los nuevos usuarios de la Serie C de Tiva.
La segunda declaración de abajo configura los tres pines GPIO conectados a los LEDs como
salidas.
Deja una línea después del código anterior y pega estás líneas de código para
inicializar el GPIO que es habilitar el puerto F:
SysCtlPeripheralEnable(SYSCTL_PERIPH_GPIOF);

Se configura como salida del puerto F el pin1, pin2 y pin3.

GPIOPinTypeGPIOOutput(GPIO_PORTF_BASE,GPIO_PIN_1|GPIO_PIN_2|GPIO_PIN_3);

5.- Ciclo While.


Finalmente programamos en ciclo while que como en leguaje C es el loop, lo que
nos permitirá que el led pueda estar repitiendo la función una tras otra vez.
Para escribir en el pin GPIO, utiliza la llamada a la función GPIOPinWrite de la API GPIO.
Asegúrese de de leer y comprender cómo se utiliza la función GPIOPinWrite en la hoja de
datos. El tercer argumento de datos no es simplemente un 1 o un 0, sino que representa
todo el puerto de datos de 8 bits. El segundo argumento es una máscara de bits de los
datos que se están escribiendo. En nuestro ejemplo de abajo, estamos escribiendo el valor
en la variable ui8PinData a los tres GPIO que están conectados a los LEDs. Sólo esos tres
pines se escribirán en base a en base a la máscara de bits especificada. La instrucción final
recorre los LEDs haciendo que ui8PinData igual a 2, 4, 8, 2, 4, 8 y así sucesivamente.
Observe que los valores enviados a los pines coinciden con sus posiciones un "uno" en la
posición del bit dos sólo puede llegar al pin del bit dos del puerto.
while(1)
{
//Encendemos el led de acuerdo con el arreglo de los números binarios
GPIOPinWrite(GPIO_PORTF_BASE, GPIO_PIN_1|GPIO_PIN_2|GPIO_PIN_3,
ui8PinData);
//delay del microcontrolador.
SysCtlDelay(2000000);
GPIOPinWrite(GPIO_PORTF_BASE, GPIO_PIN_1|GPIO_PIN_2|GPIO_PIN_3, 0x00);
SysCtlDelay(2000000);
//Se multiplica el valor de la variable del led por dos para ir
prendiendo el led.
if(ui8PinData==8) {ui8PinData=2;} else {ui8PinData=ui8PinData*2;}
}
}

3
Universidad Modelo Control de Motores Eléctricos

Hay un retraso de 3 a 6 ciclos de reloj entre la habilitación de un periférico y la posibilidad


de utilizarlo. En la mayoría de los casos, la cantidad de tiempo requerida por la propia
codificación de la API.
API evita cualquier problema, pero hay situaciones en las que se puede causar un fallo del
sistemaal intentar acceder al periférico antes de que esté disponible.

Así queda la programación final.

Conclusiones:

Con esta práctica de lab 3 se pudo aprender como crear nuestro primer proyecto, coom
inicializarlo y lo fácil que es prender un Led, también se aprendió el por que se usó el while
y no el loop ya que al ser un microcontrolador diferente, la estructura de su programación
cambia.

Referencias:

www.ti.com/training

También podría gustarte