Sie sind auf Seite 1von 12

UNIVERSIDAD NACIONAL DE CHIMBORAZO

CARRERA DE INGENIERÍA ELECTRÓNICA Y


TELECOMUNICACIONES

Asignatura: Docente: Práctica N: 2

Dispositivos Embebidos y Lab. Ing. Leonardo Rentería

1. Tema: Manejo N0 de horas: 4 Revisión Director de Carrera:


de GPIO.

Fecha:2018-05-14.

2. Objetivo:

 Configurar los puertos E/S para enviar y recibir datos.

3. Conocimientos previos:

 Sistemas Operativos en Tiempo Real.


 Microcontroladores

4. Instrucciones:

 Ejecutar los programas, los cuales hayan sido grabados en el Arduino.


 Realizar el análisis de cada uno de los programas ejecutados.
 Colocar el osciloscopio para observar cómo se comporta cada una de las señales.

5. Equipos y Materiales:

Equipos Materiales

 Computadora
 Software de Arduino.  Guía de práctica
 Osciloscopio.  Arduino
 Generador de Funciones.
 Multímetro.
 Mcu.

6. Resultado de Aprendizaje:

1
Dispositivos Embebidos-Práctica 2
UNIVERSIDAD NACIONAL DE CHIMBORAZO
CARRERA DE INGENIERÍA ELECTRÓNICA Y
TELECOMUNICACIONES

Aprender a majear los periféricos de E/S de propósito general.

7. Fundamento Teórico:

MANIPULACIÓN DIRECTA DE PUERTOS USANDO LOS PUERTOS DIGITALES

Fig. 1 Esquema de un microcontrolador ATmega 328P.

El microcontrolador ATmega328p tiene registros, estos registros están relacionados con los puertos
de entrada/salida, cada puerto tiene un nombre específico y sus registros asociados, de hecho, el
Atmega tiene el puerto B, C y D, y cada puerto un diferente número de pines (Esta es una restricción
del paquete de 28 pines PDIP y no desde el microcontrolador, ya que un PDIP 40 pines, por
ejemplo, tiene 4 puertos con los 8 bits cada uno), el único puerto que tiene el total de sus 8 pines de
entradas/salidas es PORTD. Como usted ya sabe, cada pin puede tener múltiples funciones, como
la generación de PWM, o las capacidades de ADC, los pines 6 y 7 del PORTB son los pines de
entrada para el oscilador de cristal, y pin 6 del PORTC le corresponde al botón de reinicio. En esta
imagen se puede ver todas las funciones alternativas que cada pin puede tener en el chip en cuestión
que es el ATmega328P.

A. Interactuar con los pines digitales

Hay un registro dedicado para cada puerto que define si cada pin es una entrada o una salida, que
es el registro de DDRX, donde x es la letra del puerto que se quiere configurar, en el caso de la
Arduino hay DDRB, DDRC y DDRD. Como toda variable lógica, cada bit en los registros DDRX
puede ser 1 ó 0, es que poner un bit específico de DDRX a 1 configura el pin como salida y ponerla
a 0 configura el pin como una entrada.

2
Dispositivos Embebidos-Práctica 2
UNIVERSIDAD NACIONAL DE CHIMBORAZO
CARRERA DE INGENIERÍA ELECTRÓNICA Y
TELECOMUNICACIONES

Fig. 2 Registro de configuración de un puerto

8. Procedimiento:

Este procedimiento se realizará para los cuatro programas detallados en la práctica, los cuales se
analizarán individualmente, y así poder especificar las particularidades de cada uno de ellos.

9. Actividades:

9.1. PROGRAMA 1

A. Descripción del Programa 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.

B. Creación del código del programa 1

int LED1=3;

int LED2=4;

int LED3=5;

int LED4=6;

int LED5=7;

void setup(){

pinMode(LED1,OUTPUT);

3
Dispositivos Embebidos-Práctica 2
UNIVERSIDAD NACIONAL DE CHIMBORAZO
CARRERA DE INGENIERÍA ELECTRÓNICA Y
TELECOMUNICACIONES

pinMode(LED2,OUTPUT);

pinMode(LED3,OUTPUT);

pinMode(LED4,OUTPUT);

pinMode(LED5,OUTPUT);

void loop()

digitalWrite(LED1,HIGH);

digitalWrite(LED2,HIGH);

digitalWrite(LED3,HIGH);

digitalWrite(LED4,HIGH);

digitalWrite(LED5,HIGH);

delay(100);

digitalWrite(LED1,LOW);

digitalWrite(LED2,LOW);

digitalWrite(LED3,LOW);

digitalWrite(LED4,LOW);

digitalWrite(LED5,LOW);

delay(100);

C. Análisis del código del Programa 1

4
Dispositivos Embebidos-Práctica 2
UNIVERSIDAD NACIONAL DE CHIMBORAZO
CARRERA DE INGENIERÍA ELECTRÓNICA Y
TELECOMUNICACIONES

El presente programa permite encender y apagar 5 leds al mismo tiempo, con un retardo de 100ms
después de cada acción de encendido y apagado, haciendo uso de los pines digitales de la tarjeta
arduino declarando una a una cada variable como tipo entero y asignando un PIN de salida a cada
LED.

9.2. PROGRAMA 2

A. Idealización y Descripción del Programa 2

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.

B. Creación del código del programa 2

const int LED=13;

const int BOTON=7;

int val;

void setup(){

pinMode(LED,OUTPUT);

pinMode(BOTON,INPUT);

void loop(){

val=digitalRead(BOTON);

if (val==HIGH){

digitalWrite(LED,HIGH);

else { digitalWrite(LED,LOW);

5
Dispositivos Embebidos-Práctica 2
UNIVERSIDAD NACIONAL DE CHIMBORAZO
CARRERA DE INGENIERÍA ELECTRÓNICA Y
TELECOMUNICACIONES

C. Análisis del código del Programa 2.

El programa hace uso de un almacenamiento de datos, lo cual funciona como una memoria para
saber el estado en el que se encuentran tanto el LED como el pulsador, consecuentemente hace una
lectura del estado almacenado y mediante una condición el pulsador en estado ON enciende el LED
caso contrario se mantiene apagado.

9.3. PROGRAMA 3

A. Idealización y Descripción del Programa 3

Abrir un nuevo proyecto Arduino y crear un código que active y desactive 5 leds cada 100ms,
optimizando el código a través del manejo de registros de E/S. DDRX, PINX y PORTX.

B. Creación del código del programa 3

void setup()

DDRB= 0b11111111;//Utilizamos D porque es del 0 al 7 y B porque es Binario.

//En este ejemplo no utilicé los pines 0 y 1 del Arduino.

/*Esta instrucción es lo mismo que hacer esto:

pinMode(2,OUTPUT);

pinMode(3,OUTPUT);

pinMode(4,OUTPUT);

pinMode(5,OUTPUT);

pinMode(6,OUTPUT);

pinMode(7,OUTPUT); */

void loop(){

6
Dispositivos Embebidos-Práctica 2
UNIVERSIDAD NACIONAL DE CHIMBORAZO
CARRERA DE INGENIERÍA ELECTRÓNICA Y
TELECOMUNICACIONES

PORTB= 0b11111111;//aquí encenderemos todos los leds

delay(100);

PORTB= 0b00000000;//aquí los apagaremos todos.

delay(100);

C. Análisis del código del Programa 3.

En el programa se hace uso de los registros DDRB con valor lógico 1 para asignar como salidas
los pines del puerto B del arduino, y PORTB para asignar un estado de encendido 1 y apagado 0,
con un retardo entre cada acción de 100ms estas instrucciones serán introducidas dentro de un
ciclo de repetición infinita.

9.4. PROGRAMA 4

A. Idealización y Descripción del Programa 4

Repetir los pasos anteriores para encender un LED mediante pulsadores, optimizando el código a
través del manejo de registros de E/S. DDRX, PINX y PORTX.

B. Creación del código del programa 4

void setup()

DDRB = 0x01;

void loop()

if(PINB & (1<<PB1))

7
Dispositivos Embebidos-Práctica 2
UNIVERSIDAD NACIONAL DE CHIMBORAZO
CARRERA DE INGENIERÍA ELECTRÓNICA Y
TELECOMUNICACIONES

PORTB = (1<<PB0);

else

PORTB = (0<<PB0);

C. Análisis del código del Programa 4.

Mediante el uso de los registros DDRB configuramos el puerto B. P1 como salida del arduino, y
haciendo uso de los registros PORTB y PINB hace una comparación del pulsador si esta encendido
enciende el led caso contrario apaga el LED estas instrucciones van inmersas en un ciclo de
repetición infinito.

10. Análisis de Resultados:

Fig. 3 Montaje del esquema del programa 1 todos los LEDs apagados.

8
Dispositivos Embebidos-Práctica 2
UNIVERSIDAD NACIONAL DE CHIMBORAZO
CARRERA DE INGENIERÍA ELECTRÓNICA Y
TELECOMUNICACIONES

Fig. 4señales cuando los LEDs están apagados.

Fig. 5 Esquema con los LEDs encendidos.

Fig. 6 señales de los LEDs encendidos.

9
Dispositivos Embebidos-Práctica 2
UNIVERSIDAD NACIONAL DE CHIMBORAZO
CARRERA DE INGENIERÍA ELECTRÓNICA Y
TELECOMUNICACIONES

Fig. 7 montaje del 2 esquema conectados un led y un pulsador los dos en estado apagado.

Fig. 8 señales del led y el pulsador en estado OFF.

10
Dispositivos Embebidos-Práctica 2
UNIVERSIDAD NACIONAL DE CHIMBORAZO
CARRERA DE INGENIERÍA ELECTRÓNICA Y
TELECOMUNICACIONES

Fig. 9 señales del led y el pulsador en estado ON.

11. Conclusiones:

 Los presentes programas tienen una finalidad en común y se pueden programar de diferente
manera, lo cual depende de las estrategias y métodos en que cada programador desee
trabajar.
 El primer programa se enfoca en la estructura de programación en C usando comandos
fáciles de utilizar de igual forma en el segundo programa se hace uso de estructuras simples
y lo que es de relevancia en este tema es la asignación de PINEs de trabajo para su
respectiva configuración, en lenguaje C se pueden hacer uso de variables asignando a cada
PIN una variable de tipo entero y en el desarrollo del programa únicamente ocuparemos
las variables.
 En el tercer y cuarto programa se hace uso de lenguaje ensamblador por lo que tenemos
que hacer uso de registros DDR para asignar Pines como entradas o salidas, registros PORT
para asignar estados de ON-OFF, es una manera más compleja de programación ya que se
quiere hacer uso de pines de diferentes puertos ya que se debe de conocer de manera exacta
en donde están ubicados en la tarjeta arduino para realizar su respectiva asignación en el
programa y hace uso de más líneas de programación .
 Si se busca un mismo fin en el programa ,de la manera en que el programador desee trabajar
deberá obtener los mismos resultados.

12. Observaciones:

 Prestar atención a la ejecución de cada programa y analizar su comportamiento uno con


respecto al otro.

11
Dispositivos Embebidos-Práctica 2