Está en la página 1de 15

UNIVERSIDAD AUTÓNOMA DE NUEVO LEÓN

FACULTAD DE INGENIERÍA MECÁNICA Y ELÉCTRICA

Microcontroladores
Docente: Dr. Héctor Gilberto Barrón González

Actividad Fundamental 1: 3 en 1.

Nombre: Luis Alejandro Gómez Romero Matricula: 2035598

Hora: martes V3-V6 Salón: 6305


Brigada: 005 Plan: 401

1
Contenido
Actividad Fundamental 1.- 3 en 1 ....................................................................................................... 3
1.- Descripción del Problema .............................................................................................................. 3
2.- Objetivo .......................................................................................................................................... 3
3.- Diagrama de Flujo Propuesto......................................................................................................... 4
4.- Diagrama de la Implementación del Circuito................................................................................. 7
5.- Evidencia Grafica (Si existe un circuito) ......................................................................................... 7
6.- Prototipos de funciones principales .............................................................................................. 9

2
Actividad Fundamental 1.- 3 en 1

1.- Descripción del Problema


Utilizando un puerto GPIO configurado como entradas digitales, deberá seleccionar entre
las siguientes funciones:

01 contador en Binario

02 auto Increíble

03 contador RGB

Para ello deberá tomar en cuenta las siguientes consideraciones

1. Visualizar en un grupo de 8 leds el efecto producido por una cuenta natural ascendente en
código binario.
2. Lograr la visualización de una cuenta ascendente dentro de los rangos del 1 al 7 en un led
RGB de Cátodo Común.
3. Se requiere establecer un Loop infinito de lectura entre un puerto paralelo de 2 bits
configurado como entradas y la función a desarrollar.
4. Solo se deberá efectuar una operación a la vez, es decir si el contador ascendente es
seleccionado se incrementará en una posición ejemplo de 0000 0001 a 00000010, y
posteriormente regresara a leer las entradas, si es seleccionado el contador RGB el valor
del contador binario deberá guardarse y continuar cuando sea seleccionado de nuevo. De
la misma forma esto debe suceder para las otras opciones (un desplazamiento en el auto
increíble o un incremento en la cuenta RGB).

2.- Objetivo
1. Desarrollar un Código que permita manipular el puerto para leer las entradas.
2. Que el código a desarrollar pueda en función de las entradas pueda determinar la función
correspondiente
3. Que si se genera una entrada 0 en binario quede en un estado inactivo por default
4. Que ante una entrada de 1 en binario ejecute un contador binario mediante una salida de
8 leds
5. Que ante una entrada de 2 en binario ejecute la función del auto increíble
6. Que ante una entrada de 3 en binario ejecute un contador RGB
7. Que si se cambia de valor almacene el progreso de cada estado

3
3.- Diagrama de Flujo Propuesto
Se plantean 4 diagramas de flujo 1 general del Código y 3 para cada función a realizar

Diagrama de flujo del código general:

4
Diagrama de flujo de caso 1 (contador Binario)

5
Diagrama de flujo de caso 2 Auto increíble

Diagrama de flujo de caso 3 contador RGB

6
4.- Diagrama de la Implementación del Circuito

Evidencia diseño de conexión en tinkercad:

Recordamos que para el contador RGB se planteo de la siguiente manera

numero RED GREEN BLUE


1 0 0 1
2 0 1 0
3 0 1 1
4 1 0 0
5 1 0 1
6 1 1 0
7 1 1 1

5.- Evidencia Grafica (Si existe un circuito)


Evidencia gráfica:

7
8
6.- Prototipos de funciones principales
Agregue las prototipos y llamadas utilizadas para:

• La configuración de periféricos.
• El loop de control principal y las subrutinas que dé él se derivan.

Configuración de periféricos

9
Los periféricos del microcontrolador de modelo Núcleo 64 STM32F401RE ubicado en el software
de programación STM32CUBE bajo el nombre de Núcleo-401RE se programo basado en las
configuraciones instruidas en clase y las entradas y salidas necesarias según el enunciado y
objetivo de la actividad.

Para la programación de los periféricos se configuraron 11 salidas (GPIO_Output) repartidas en 8


(PC=-PC7) para las salidas de los leds utilizados para los casos 1 y 2 del contador binario y el auto
increíble, y 3 (PB13-PB15) para las salidas del caso numero 3 del contador RGB. Conjunto con esto
se programaron 2 entradas (GPIO_Input) para que cumplan con el rol de entradas de comando
para indicar el caso en sistema binario (PB1,PB0)

Se configuraron las salidas de PC= a PC7 para que fueran consecutivas al pertenecer al mismo
grupo de respuesta. Mismo principio se aplico a las salidas PB13 a PB15 para las salidas RGB. Todas
estas configuraciones al procesador se tradujeron en un código el cual consiste en lo siguiente:

La programación del sistema, las variables y periféricos:

La primera etapa consiste en la indicación de variables y subrutinas que afectarán o tendrán lugar
y uso en el microcontrolador:

10
• Las líneas iniciales de 1 a 3 son espacios creados en el código basado en el diseño de
periféricos. Las líneas en blanco son para separar las agrupaciones de código y darle un
aspecto más legible al código.
• las líneas 4 5 y 6 definen las compuertas de salidas bajo los nombres de “RED, GREEN,
BLUE” esto se hace con el fin de darle uso en la programación del contador RGB.
• Las líneas 8, 9 y 10 corresponden a la declaración de variables de conteo de cada subrutina
de los 3 casos, se declaran en este punto para que sean de tipo universal, y por lo tanto
cumplan con el objetivo de almacenar el valor y condicion de cada caso ante un cambio de
uno a otro
• Las líneas 12 y 13 son periféricos de los sistemas de puertas y tiempo programados en el
código en función de la configuración del código inicial.
• Las líneas 14, 15, 16 con periféricos de las subrutinas que se llevan a cabo en el programa,
cada una representa a uno de los casos a ejecutar por el programa.
• Las líneas 17 y 19 son comandos de agrupación de variables y le indicaran al programa
secuencias a seguir de una serie de salidas en determinado proceso.
• Las líneas 21 y 22 se detallan las variables de comandos de entrada y el medio de lectura
de estas en el caso de Inputs. Así mismo el comando Outputs funciona como medio de
salida de la condicion inicial 0 o los posibles estados de default sin afectar el
funcionamiento de los otros casos

• La línea 26 indica el comienzo del programa donde estarán las instrucciones y programas a
ejecutar, así como enlaces a subrutinas que se detallan luego de este
• Las líneas 29, 31 y 33 son periféricos creados por el programa a partir del chip y representa
donde se ejecutan las subrutinas y partes dentro del programa general
• Al llegar al While en la línea 36 inicia el proceso de periféricos y variables

11
El loop de control principal y las subrutinas que dé él se derivan

Loop de control principal

• El loop de control principal inicia en el While que estable que mientras este se ejecute se
encontrara ciclando sobre sus procedimientos.
• Las líneas 38, 39 y 40 dentro del loop del While señalan que las salidas y entradas estarán
limpias, así como la configuración de los valores de entrada y que de estos solo se leerá un
limite de 3 en binario es decir 00, 01, 10, 11.
• La línea 42 es el inicio Del proceso de cambio como su nombre indica en función de las
entradas previamente configuradas y dónde se hará uso del manejo de los casos.

• La línea 44 refleja el inicio de las condiciones del estado inicial es decir el caso 0.
• En la línea 46 podemos apreciar como este representa una salida completamente apagado
aparatos componentes mientras
• finalizan en la línea 48 con un break que representa el final de los comandos y rutinas de dicho
caso y el final del ciclo que lo hace volver al While

12
• La línea 50 refleja en inicio del caso número 1 del contador binario
• La línea 52 El comando que relaciona este caso con la subrutina del contador binario que se
detallarán más adelante en el apartado de subrutinas
• el mismo finalizando con la línea 54 que cierra el caso número 1
• La línea 56 establece el inicio del caso 2 El del auto increíble
• La línea 58 hace el enlace de su rutina con el programa ejecutar en este caso
• La línea 60 establece el final del caso 2

• La línea 62 establece el inicio del caso 3 el contador RGB


• La línea 64 donde se hace el enlace de subrutina del caso 3
• La línea 66 es donde se cierra el caso 3
• La línea 68 establece el default como una respuesta de otros posibles casos
• La línea 70 es para establecer su salida del caso como todo apagado con la línea 72 como final
del caso
• Las líneas 74, 76 y 78 establecen finales de el ciclo de switch, el While y el int_main
respectivamente como final de loop principal del programa

las subrutinas que se le derivan:

subrutina caso 1 contador binario:

• La subrutina del contador binario inicia en la línea 81 que responde a las declaraciones de
la parte superior correspondiente a la línea 14 declarada en el Código.

13
• La línea de comando 85 establece la impresión del valor en el pin correspondiente
• La línea 86 establece la duración de dicha impresión de valor binario
• La línea 87 establece el borrado del valor previo tras cumplir el tiempo previamente
señalado
• La línea 88 indica un incremento de +1 en el contador de esta subrutina en concreto
• Las líneas de 90 a 96 establecen que si dicho contador llega a ser mayor de 255 debe
volver a cero y en caso de no serlo terminar el ciclo de la subrutina que como vimos hace
volver al While del loop principal

subrutina caso 2 Auto Increíble:

• La subrutina del Auto increíble inicia en la línea 101 que responde a las declaraciones de la
parte superior correspondiente a la línea 15 declarada en el Código.
• La línea de comando 105 establece el reset del valor en el pin correspondiente
• La línea 106 relaciona el valor a imprimir con el correspondiente en la secuencia indicada
en la línea 19 del Código
• La línea 107 establece la duración de dicha impresión de valor binario
• La línea 108 establece el borrado del valor previo tras cumplir el tiempo previamente
señalado
• La línea 109 indica un incremento de +1 en el contador de esta subrutina en concreto
• Las líneas de 111 a 117 establecen que si dicho contador llega a ser mayor o igual a 14
debe volver a cero y en caso de no serlo terminar el ciclo de la subrutina que como vimos
hace volver al While del loop principal

14
subrutina caso 3 contador RGB:

• La subrutina del Auto increíble inicia en la línea 122 que responde a las declaraciones de la
parte superior correspondiente a la línea 16 declarada en el Código.
• La línea de comando 125 establece el reset del valor en el pin correspondiente
• La línea 126 relaciona el valor a imprimir con el correspondiente en la secuencia indicada
en la línea 18 del Código
• La línea 127 establece la duración de dicha impresión de valor binario
• La línea 128 establece el borrado del valor previo tras cumplir el tiempo previamente
señalado
• La línea 130 indica un incremento de +1 en el contador de esta subrutina en concreto
• Las líneas de 132 a 138 establecen que si dicho contador llega a ser mayor o igual a 7 debe
volver a cero y en caso de no serlo terminar el ciclo de la subrutina que como vimos hace
volver al While del loop principal

15

También podría gustarte