Académique Documents
Professionnel Documents
Culture Documents
FACULTAD DE INGENIERÍA
Práctica de Laboratorio
ASIGNATURA: Microprocesadores
SEMESTRE: Sexto
INTEGRANTES:
Valeria Andrade
Cecilia Caisaguano
Karla Muyulema
PERIODO ACADÉMICO
No.
Práctica No. Tema: Duración (horas) No. Grupos Estudiantes
(por Grupo)
1 Manejo de GPIO 3 6 3 (1 de 4)
Atmega
Objetivos de la Práctica:
Procedimiento:
1. Abrir un nuevo proyecto Arduino y crear un código que active y desactive 5 leds cada 100ms.
Determinar el tamaño del código generado
2. Verificar el funcionamiento del código anterior con el uso del osciloscopio.
3. Abrir un nuevo proyecto Arduino y crear un código que encienda un LED cada vez que se presione
un botón. Determinar el tamaño del código generado.
4. Verificar el funcionamiento del código anterior con el uso del osciloscopio.
5. Repetir los pasos anteriores optimizando el código a través del manejo de registros de E/S. DDRX,
PINX y PORTX.
6. Analice los resultados
Fundamentos Teóricos:
MICROCONTROLADOR
Un microcontrolador (abreviado μC, UC o MCU) es un circuito integrado programable, capaz de ejecutar las
órdenes grabadas en su memoria. Está compuesto de varios bloques funcionales, los cuales cumplen una tarea
específica. Un microcontrolador incluye en su interior las tres principales unidades funcionales de
una computadora: unidad central de procesamiento, memoria y periféricos de entrada/salida.
Procesador o Microprocesador. Un procesador incluye al menos tres elementos, ALU, unidad de control y
registros.
ALU. También conocida como Unidad Aritmetica y Lógica. Está unidad esta compuesta por los
circuitos electrónicos digitales del tipo combinatorios (compuertas, sumadores, multiplicadores), cuya
principal función es el realizar operaciones. Estas operaciones están divididas en tres tipos:
Lógicas. Como las operaciones básicas de las compuertas lógicas, como la suma lógica (OR),
multiplicación lógica (AND), diferencia lógica (XOR) y negación (NOT). Una operación lógica sólo
puede tener como entradas y como salidas una respuesta lógica (0 o 1). Esto dependiendo de los
niveles de voltajes de una señal digital.
Aritméticas. Las operaciones artiméticas son la suma, resta, multiplicación y división. Dependiendo
del procesador (8, 16, 32 o 64 bits) será la rapidez con la que se pueden hacer dichas operaciones.
Miscelaneas. En estas operaciones caen todas las demás operaciones como la transferencia de bits
(<< >>).
Unidad de control. La unidad de control es el conjunto de sistemas digitales secuenciales (aquellos
que tienen memoria) que permiten distribuir la lógica de las señales.
Registros. Los registros son las memorias principales de los procesadores, ya que funcionan a la
misma velocidad que el procesador a diferencia de otras memorias un tanto más lentas (como la RAM,
FLASH o la CACHE). Los registros están construidos por Flip-Flops. Los Flip-Flops son circuitos
digitales secuenciales.
Periféricos. Los periféricos son los circuitos digitales que nos permiten una interacción con el mundo
“exterior” al microcontrolador. Su función es la de poder habilitar o deshabilitar las salidas digitales,
leer sensores analógicos, comunicación con terminales digitales o sacar señales analógicas de una
conversión digital.
Puertos de entrada/salida pararelos. Los puertos están relacionados al tamaño del procesador, es decir
que un puerto de 8 bits es porque el procesador es de 8 bits. Un procesador de 64 bits, tiene la
capacidad de tener un puerto de 64 bits.
Puertos seriales. Nos permiten transformar la información digital pararela (bytes de información) en
tramas que se pueden transferir por una o varias líneas de comunicación. Existen por ejemplo: puerto
serial, i2c, SPI, USB, CAN, etc.
Periféricos analógicos. Como los que convierten señales analógicas a digitales (ADC) o señales
digitales a analógicas (DAC) o comparadores analógicos.
Memoria. La memoria esta dividida en tres. La memoria para el programa (FLASH), la memoria para
los datos o variables del programa (RAM) y la memoria para configuraciones o no volátil (EEPROM)
MICROPROCESADOR
La estructura tecnológica del microprocesador determinara en cuantos ciclos se efectuara la operación en el CPU
y su duración estará determinada por la frecuencia de reloj, dicha duración nunca podrá ser menor al tiempo
requerido para efectuar la tarea individual (en un ciclo) de mayor coste temporal.
Los microprocesadores contienen un oscilador de cuarzo que genera los pulsos a un ritmo constante de manera que
se pueden generar varios ciclos en un segundo, la velocidad de los microprocesadores se mide en frecuencias y
estas pueden ser megahertzios (MHz) o Gigahertzios (GHz) es decir, miles de millones o millones de ciclos por
segundo.
Para determinar la velocidad a la que trabaja la CPU podemos utilizar el indicador de frecuencia, es decir, entre
mayor frecuencia mayor velocidad para el proceso de información, pero no es el único indicador que lo determina,
también necesitamos saber la cantidad de instrucciones necesarias para realizar una tarea concreta y la cantidad de
instrucciones ejecutadas por ciclo (ICP)
ARDUINO
Arduino es una plataforma de prototipos electrónica de código abierto (open-source) basada en hardware y software
flexibles y fáciles de usar. Está pensado para artistas, diseñadores, como hobby y para cualquiera interesado en crear
objetos o entornos interactivos.
Arduino puede “sentir” el entorno mediante la recepción de entradas desde una variedad de sensores y puede afectar
a su alrededor mediante el control de luces, motores y otros artefactos. El microcontrolador de la placa se programa
usando el “Arduino Programming Language” (basado en Wiring) y el “Arduino Development Environment” (basado
en Processing). Los proyectos de Arduino pueden ser autonomos o se pueden comunicar con software en ejecución
en un ordenador (por ejemplo con Flash, Processing, MaxMSP, etc.).
Resultados:
Utilizar los periféricos de E/S para enviar y recibir datos a través de esos periféricos.
Codigo Implementado para encender los 5 leds
int led1=13;
int led2=12;
int led3=11;
int led4=10;
int led5=9;
void setup() {
// put your setup code here, to run once:
pinMode(led1,OUTPUT);
pinMode(led2,OUTPUT);
pinMode(led3,OUTPUT);
pinMode(led4,OUTPUT);
pinMode(led5,OUTPUT);
}
void loop() {
// put your main code here, to run repeatedly:
digitalWrite(led1,HIGH);
digitalWrite(led2,HIGH);
digitalWrite(led3,HIGH);
digitalWrite(led4,HIGH);
digitalWrite(led5,HIGH);
delay(50);
digitalWrite(led1,LOW);
digitalWrite(led2,LOW);
digitalWrite(led3,LOW);
digitalWrite(led4,LOW);
digitalWrite(led5,LOW);
delay(50);}
El Sketch usa 4244 bytes (14%) del espacio de almacenamiento de programa.
Codigo Implementado mediante registros
Ilutración 8.- Señal Obtenido de los 5 leds Ilutración 9.- Señal Obtenido del led mediante botón
El lenguaje de programación de Arduino es de alto nivel, el mismo que nos permite realizar la programación
con mayor facilidad, el primer sketch del programa consistía en hacer que 5 Leds se prendan y se apaguen
cada 100 ms, al describirlo en el lenguaje de programación C++, se generó un código un poco extenso el cual
ocupaba un cierto tamaño, pero con la utilización de registros se pudo optimizar el código y de la misma
manera se procedió para el punto 3 de la práctica.
El resultado en el osciloscopio fue una señal tren de pulsos, la cual lleva la información en su estado alto el
Led estará encendido y en su estado bajo el Led se encontrara apagado.
Conclusiones:
Para la realización del primer punto de la practica que requiere completar un periodo de 100 ms para
encender y apagar 5 leds se debe programar un delay de 50ms para encendido y otro delay de 50 ms
para apagado
Al utilizar registros se optimiza el programa y por tanto se reducen las líneas de código y a su vez el
tamaño del mismo.
Arduino proporciona un entorno de programación sencillo y potente para programar, pero además
incluye las herramientas necesarias para compilar el programa y “quemar” el programa ya compilado
en la memoria flash del microcontrolador. Además el IDE nos ofrece un sistema de gestión de librerías
y placas muy práctico. Como IDE es un software sencillo que carece de funciones avanzadas típicas
de otros IDEs, pero suficiente para programar.
Referencias bibliográficas:
Anexos:
http://ww1.microchip.com/downloads/en/DeviceDoc/Atmel-42735-8-bit-AVR-Microcontroller-
ATmega328-328P_Datasheet.pdf
http://playground.arduino.cc/Code/BitMath