Sunteți pe pagina 1din 5

Práctica microprocesadores

Ingeniería Biomédica​1

RESUMEN

Los microprocesadores son el “cerebro” del computador: su centro lógico de operaciones


aritméticas y lógicas, ​adonde van a ejecutarse todos los programas del sistema​, tanto los
propios del Sistema Operativo, como las aplicaciones ejecutadas por el ​usuario​. Allí también
se dan las lógicas binarias del sistema y los accesos a memoria. Es decir: el procesador es el
motor informativo del ​computador​. De manera general, es tan importante la función del
microprocesador que actualmente es considerado el componente electrónico más influyente
en la vida del ser humano.
Por ejemplo, a nivel económico, es el producto más comercializado a nivel mundial y, a nivel
social, es el objeto más utilizado, presente en una gran variedad de artefactos y componentes
electrónicos, así como, computadores, teléfonos celulares, teléfonos inteligentes y tabletas.

Por lo cual, en el curso se realizan diversos laboratorios que permiten llevar a la práctica los
temas vistos. En primera medida, se hará una descripción de los códigos implementados en
lenguaje C y programados en el entorno de programación atmel studio 7 para la
sistematización de un par de semáforos en 4 casos distintos, tal y como se especifica en la
guia de laboratorio propuesta por la docente.

 
PREGUNTAS Y RESULTADOS
 
a) Explique en detalle el funcionamiento del programa del punto 4.1. ¿Por qué es necesaria
cada librería en el código?

#ifndef F_CPU
#define F_CPU 16000000UL​ // 16 MHz clock speed
#endif

Primer programa invocado por el compilador. Se está preguntando si está definida F_CPU, si no está
definida se define F_CPU con una velocidad de reloj de 16MHz, esto debido a que en el caso del Arduino
Uno, el microcontrolador trabaja con un cristal el cual se encuentra a la frecuencia anteriormente
mencionada.

#include <avr/io.h>
Se incluye la librería de puertos entrada/salida
#include <util/delay.h>

Se incluye la librería de retardos

int main(void)
{
//Puerto B (incluye pines 8 a 13, pin 13 es PB5)
DDRB |= 0x20;

Se establece el pin 5 del puerto B como salida.

while(1) ​//Bucle infinito

Se establece para que una vez se acabe la instrucción vuelva a empezar la ejecución del código.

{
PORTB |= 0x20;​ //Encendemos el LED escribiendo un 1

Para que se encienda un led, se debe escribir un 1 en la posición o en el pin que se estableció como
salida, en este caso es el pin 5 del puerto B.
Para lo anterior se realiza una OR entre el puerto B que se encuentra en 0x00 y el valor de 0x20,
dando como resultado 0x20, la cual corresponde al pin 5 del puerto B. Se escribe un 1 en ese pin,
haciendo que el led encienda.

_delay_ms(1000); ​//1 second delay

Se establece un retardo de 1 segundo, es el tiempo que durará el led encendido.

PORTB &= 0xDF; ​//Apagamos el LED escribiendo un 0

Para que se apague el led, se debe escribir un 0 en el pin de salida, que en este caso es el pin 5 del
puerto B.
Para lo anterior se realiza esta vez una AND entre el puerto B y 0xDF (Que corresponde en binario a
11011111), haciendo que en el pin 5 del puerto B se escriba un 0 y de esta manera el led se pueda
apagar.

_delay_ms(1000);​ //1 second delay

Se establece un retardo de 1 segundo, es el tiempo que durará el led apagado.

}
}

Se destaca la importancia de la implementación de las librerías cuando se trabaja con lenguaje C


debido a que el compilador debe reconocer con qué acciones se va a trabajar para que puedan ser
ejecutadas y se de el buen funcionamiento del código. En el caso del código anterior se necesitan las
librerías de los puertos entradas/salidas ya que se necesita configurar una salida para poder
prender/apagar el led, adicionalmente se requieren la librería de los retardos para mantener el led
prendido o apagado durante el tiempo establecido que en este caso es un segundo.
Si no se implementan las librerías el programa no reconoce las acciones a ejecutar y en este caso no se
prendería el led porque no habría ningún pin de salida ni los retardos se accionaría.

b) Presentar y explicar el funcionamiento del programa del punto 4.2.

#ifndef F_CPU
#define F_CPU 16000000UL​ // 16 MHz clock speed
#endif
#include <avr/io.h>
#include <util/delay.h>
int main(void)
{

En esta parte del código se hace uso del puerto B el cual tiene 6 pines, estos 6 pines corresponden a
los pines que van del 8 al 13 en el arduino, se usó este puerto debido a que los demás puertos ocupan 2
de sus pines para realizar operaciones ya designadas por el fabricante dentro de la tarjeta arduino
como en el caso del puerto D del microprocesador Atmega 328P en el cual dos de sus pines PD0 y
PD1 se destinan para la comunicación serial RX(recepción) y TX(transmisión) del arduino.

Se configura como salida, poniendo en alto(1) desde el PB0 al PB5 usando el comando DDRB.

DDRB |= 0B111111;
while(1) ​//Bucle infinito

Se crea un ciclo infinito con la finalidad de que el microprocesador se encuentre en “ocioso” y así este
ejecute de manera continua el código dentro de este ciclo, esto debido a que el debe de estar
realizando acciones de manera continua, ese es el modo de funcionamiento

Teniendo en cuenta que ciertos pines deben de ponerse en alto, es decir tener 5V en su salida con la
finalidad de que puedan energizar los leds y estos prendan, se procede a por medio de la secuencia
determinar cuales son los pines que se van a poner en alto(5v) y en bajo(0v), recordando que el primer
semáforo a encender esta representado por los 3 primeros bit menos significativos del puerto B
mientras que el segundo semáforo está representado por los 3 pines más significativos del puerto B.

PORTB = 0B100001;​ //Encendemos el LED ubicado en el pin 14 del arduino y el pin


19 del arduino los cuales representan a PB0 y PB6

Semáforo 1 color rojo (PB0) activo y Semaforo 2 color verde (PB6) activo

_delay_ms(1000); ​//1 second delay(1 segundo encendido)


La acción anterior al delay se mantiene durante 1 segundo

PORTB = 0B010001;​ //Encendemos el LED ubicado en el pin 14 del arduino y el pin


18 del arduino los cuales representan a PB0 y PB5

Semáforo 1 color rojo (PB0) activo y Semaforo 2 color amarillo (PB5) activo

_delay_ms(1000); ​//1 second delay(1 segundo encendido)


PORTB = 0B001100; ​//Encendemos el LED ubicado en el pin 16 del arduino y el pin
17 del arduino los cuales representan a PB2 y PB3

Semáforo 1 color verde (PB2) activo y Semaforo 2 color rojo (PB3) activo

_delay_ms(1000); ​//1 second delay(1 segundo encendido)


PORTB = 0B001010;​ //Encendemos el LED ubicado en el pin 15 del arduino y el pin
17 del arduino los cuales representan a PB2 y PB4

Semáforo 1 color amarillo (PB2) activo y Semaforo 2 color rojo(PB4) activo

_delay_ms(1000);​//1 second delay(1 segundo encendido)


}
}

CONCLUSIONES

● La gran mayoría de microprocesadores que permiten multitarea tienen esquemas


robustos de protección para la concurrencia de procesos. Además, cualquier recurso
compartido en una computadora está asociado a una localidad de memoria, por este
motivo la protección de memoria juega un papel muy importante en la sincronización
de procesos.
● Por medio de los laboratorios del curso, se logra evidenciar una relación de la
programación en diferentes lenguajes y cómo estos se utilizan diariamente, por
ejemplo en el tema de la sincronización de semáforos, lo cual es un sistema
sumamente utilizado en la mayoría de ciudades del mundo, con el fin de controlar el
tráfico de manera responsable.
● Es importante tener en cuenta que en la configuración de cualquier temporizador se
debe seleccionar la fuente del reloj y habilitar las interrupciones correspondientes a
los eventos que se quieran detectar (si se van a usar interrupciones). De este modo,
también aplicamos funciones de interrupciones en nuestro código diseñado para el
sistema, teniendo en cuenta que una interrupción es la ocurrencia de un evento
producido por algún recurso del microcontrolador, que ocasiona la suspensión
temporal del programa principal.
● En el momento de desarrollar un programa es estrictamente necesario conocer su
arquitectura superficial para así determinar cuales puertos y pines se pueden utilizar o
cuales están estrictamente ligados a realizar otras operaciones

REFERENCIAS

1. "SCT | Sistemas de Control de Tránsito", ​Sctvial.com​, 2019. [Online]. Available:


http://www.sctvial.com/. [Accessed: 28- Sep- 2019].
2. "Microprocesador - EcuRed", ​Ecured.cu​, 2019. [Online]. Available:
https://www.ecured.cu/Microprocesador. [Accessed: 28- Sep- 2019].
3. [Tutorial - Programación de AVR] Parte 1: Introducción - Todo Circuitos. (2018). Retrieved 26
September 2019, from
https://www.todocircuitos.com/blog/tutorial-programacion-de-avr-parte-1-introduccion/
4. Tutorial AVR desde 0. Retrieved 26 September 2019, from
http://chwnku.tuxfamily.org/cont/AutoDocs/TutorialAVRdesde0.pdf
5. Hernández, A. (2015). Aprende a programar microcontroladores en Lenguaje C / C++. Retrieved 26
September 2019, from
https://tallerelectronica.com/2015/08/24/aprende-a-programar-microcontroladores-en-lenguaje-c/

S-ar putea să vă placă și