Sie sind auf Seite 1von 20

Diseño de Sistemas Digitales Docente: Ing. Roger Guachalla Narváez - xoroger@yahoo.

es

PRACTICA 01: Programación de la tarjeta Arduino con MikroC Pro for AVR
I. Objetivos:
 Conocer la manipulación directa de puertos en a través del acceso a registros en el ATMEGA328P
 Utilizar el software IDE MikroC Pro for AVR para programar la tarjeta Arduino
 Subir el código hex a la tarjeta Arduino usando el software Xloader
 Convertir un programa en MikroC Pro for PIC escrito para el microcontrolador PIC18F4550 a su equivalente para el
microcontrolador ATMEGA328P (incluido en la tarjeta Arduino UNO)

II. Acceso directo a los registros de puertos


El microcontrolador incluido en la tarjeta Arduino UNO, el ATmega328P, dispone de 3 puertos PB, PC y PD.
Cabe aclarar que la numeración de pines en la Tarjeta Arduino es diferente a la del ATmega328P.

Cada puerto es controlado por tres registros:


Registro DDR
Permite CONFIGURAR los pines de un puerto como Entrada o Salida (0 = Entrada, 1 = Salida)
Ejemplo: DDRD= %00001111; //Puerto PD con el nibble superior como Entrada
//y el nibble inferior como Salida
Registro PORT
Permite ESCRIBIR (SACAR) valores alto (1) o bajo (0) en los pines de un puerto.
Ejemplo: PORTB=10101010; //Sacar por el puerto PB los bits intercalados en Alto y Bajo
Por consiguiente, en el puerto B, los pines 1, 3, 5, 7 están en estado alto mientras que los pines 0, 2, 4, 6
están en estado bajo.
Registro PIN
Permite LEER (INGRESAR) el estado de los pines de entrada de un puerto.
Ejemplo: valor=PINC; //Leer los datos presentes en el puerto PC y almacenarlos en
//la variable valor
III. Conversión de un proyecto en MikroC del PIC18F4550 al ATmega328P
1) MikroCPro for AVR versus MikroCPro for PIC
El IDE (Entorno de Desarrollo Integrado) MikroCPro for AVR es virtualmente idéntico al MikroCPro for PIC
 Las funciones del Menú son iguales
 Las herramientas (Tools) son iguales
 Los Wizard para creación de proyectos son iguales
 Todas las librerías (LCD, Keypad, Sound, etc.) son iguales
 El lenguaje de programación C es igual para ambos IDE
Es decir, el proceso de conversión de un programa para el PIC18F4550 a su equivalente para el ATmega328P (Arduino
UNO) se simplifica en gran manera.
Sin embargo, se debe tomar en cuenta los siguientes aspectos:
 Los nombres, disponibilidad, configuración y uso de Puertos de Entrada/Salida son diferentes
 Los nombres y funciones de Registros de Función Especial (SFRs) para cada microcontrolador son diferentes*
Por ejemplo, los registros ADCON1, CMCON, INTCON no existen en el ATmega328P.
*Para realizar una conversión satisfactoria es necesario conocer las especificaciones técnicas de ambos
microcontroladores. Esta información se obtiene de las hojas de datos (datasheet) de estos dispositivos

2) Comparación de puertos entre el PIC18F4550 y el ATmega328P


PIC18F4550 (40 pin)

ATmega328P (28 pin)


La siguiente tabla muestra la equivalencia de control de puertos entre ambos microcontroladores:

PIC18F4550 ATmega328P
Puertos disponibles RA(7 bit), RB(8 bit), RC(7 bit), RD(8 bit) PB (6 bit), PC (6 bit), PD (8 bit)
Configurar puerto TRIS 0: Salida Ej. TRISB=0; //Puerto RB DDR 0: Entrada Ej. DDRB=0; //Puerto PB
1: Entrada configurado como Entrada 1: Salida configurado como Salida
Escribir (SACAR) LAT Ej. LATD=15; //Sacar el PORT Ej. PORTD=15; //Sacar el
datos valor 15 por el puerto RD valor 15 por el puerto PD
Leer (INGRESAR) PORT Ej. valor=PORTC; //Ingresar PIN Ej. valor=PINC; //Ingresar
datos el dato en el puerto RD y el dato en el puerto PC y
almacenarlo en la variable almacenarlo en la
valor variable valor

NOTA: Los pines 0 Rx (PD0) y 1 Tx (PD1) de la tarjeta Arduino UNO pertenecen a la recepción y transmisión de
datos seriales que son utilizados por el Bootloader para Subir (Upload) los programas del usuario. Si se usan
estos pines, antes de realizar dicha operación, desconectar los pines de cualquier otro componente, subir el
programa y posteriormente volverlos a conectar.
La siguiente figura muestra la disposición física de los puertos en la tarjeta Arduino UNO:
IV. Programación de la tarjeta Arduino con MikroCPro for AVR
Mikroelektronika (www.mikroe.com) es una empresa europea que desarrolla compiladores en lenguajes C, Basic y Pascal
para los procesadores PIC (8 bit), AVR (8 bit), DsPIC/PIC24 (16 bit), PIC32 (32 bit), ARM (32 bit), FT90x (32 bit) y 8051 (8 bit).
En esta práctica se utilizará el compilador MikroC Pro for AVR v.7.0.1

El IDE cuenta con diversas herramientas de desarrollo y un sistema de Librerías y Ayuda muy extenso.
Del sitio web se puede descargar la última versión de este compilador. La versión gratuita y demostrativa es totalmente
funcional y completa. Solo cuando el tamaño del código excede los 2 KBytes aparecerá en la ventana de mensajes:
‘Demo Limit’, indicando que se ha superado el tamaño permitido en la versión demostrativa.
En este caso se debe proceder a parchar el programa para acceder al total de la memoria ROM Flash del ATmega328P.

Creación de un PROYECTO en el IDE MikroC Pro for AVR


a) Iniciar el IDE
b) Cerrar cualquier proyecto previo: ‘Project – Close Project’
c) Crear un nuevo Proyecto: ‘Project – New Project’. El ‘New Project Wizard’ se iniciará automáticamente.
d) En la ventana ‘1. Tipo de Proyecto’, seleccionar Proyecto Estándar y hacer click en
e) En la ventana ‘2. Configuración del Proyecto’: llenar los datos como indica la figura y luego presionar . NO ACTIVAR
la opción ‘Open Edit Project window to set Configuration bits’

f) En la ventana ‘3’ Añadir archivos’: Si se disponen de librerías del usuario adicionales se pueden agregar en este punto. Los
ejemplos de esta guía no incluyen dichos elementos por lo que basta con presionar ‘Next’

g) En la ventana ‘4’ Librerias’: Mantener seleccionado la opción ‘Include All (Default)’ para que el IDE MikroC administre
automáticamente el uso de todas las librerías y presionar ‘Finish’
h) El Wizard ha terminado y MikroC genera la plantilla para iniciar todos los proyectos a realizar

i) Aunque aún no se ha escrito el programa, es importante compilar el proyecto para guardar el código fuente con el nombre que se
utilizó en el punto e). Para ello hacer click en el ícono ‘Build’

j) Al aparecer la ventana emergente, confirmar el nombre del código fuente (en este ejemplo ‘LedControl.c’) y hacer click en ‘Save’

k) Repetir la opción ‘Build’ una vez que el código haya sido escrito para compilar el programa y generar el archivo: .hex
Este archivo es necesario para la simulación en Proteus y para subir el código a la tarjeta Arduino.

Ejemplo A: Control de leds con ATmega328P con MikroC Pro for AVR
1) Enunciado
Se revisa el valor de entrada del interruptor. Si este valor es Alto (1) entonces los Leds se invierten, de otra manera,
si el valor es Bajo (0) el valor actual en los leds se incrementa. Este proceso se repite infinitamente.
2) Diagrama en Bloques

*** La Alimentación, Reloj y Reset están implementados en la tarjeta Arduino


3) Diagrama de Flujo

4) Código fuente en MikroC Pro for AVR


5) Esquemático de simulación en Proteus

Componentes
Proteus:

Notas:
 Para insertar la tarjeta Arduino en Proteus 8:
a) Seleccionar la opción ‘File – Import Project Clip’

b) En la ventana emergente seleccionar la carpeta ‘Arduino’


c) De la lista, seleccionar ‘Arduino 328.pdsclip’

 Para conectar los diferentes elementos a la tarjeta Arduino:

a) Hacer click en el ícono ‘Terminals Mode’

b) Seleccionar el componente ‘DEFAULT’ para usar conexión por Etiqueta (Label):


c) Para realizar una conexión de un componente (Para este ejemplo un Logic State (Estado lógico)) a cualquier pin de la
tarjeta Arduino (Para este ejemplo el pin IO0), conectar el componte al conector Label (etiqueta) y hacer click
derecho sobre el Label para seleccionar sus Propiedades

d) En la lista emergente, seleccionar el pin de la tarjeta Arduino a conecta (Ej. IO0)

e) Proceder de la misma forma para conectar todos los elementos restantes a la tarjeta Arduino.
 Para asignar el programa (archivo hex) a simular en Proteus:
a) Del menú principal seleccionar ‘File – Save Project As’ para grabar el esquemático

b) Usar el mismo Folder y el mismo Nombre del Proyecto en MikroC Pro for AVR

c) Hacer 2 clicks derechos en el ATmega328P para editar sus propiedades


d) Verificar que la frecuencia de reloj es de 16 MHz y hacer click en el ícono de Folder en el campo ‘Program File’. En la
ventana emergente seleccionar el archivo hex del Proyecto. (En este ejemplo ‘LedControl.hex’)

e) Hacer click en el ícono para correr la simulación en Proteus y verificar el funcionamiento del programa.

6) Grabación del código en la tarjeta Arduino


Para grabar el código en la tarjeta Arduino UNO se utilizará el software XLoader que permite subir (upload) un archivo
hex utilizando el bootloader pregrabado en la tarjeta Arduino.
Siendo este un software ejecutable (XLoader.exe) no requiere instalación.
a) Conectar al computador la tarjeta Arduino y verificar el número de COM virtual que le asignó el sistema operativo
b) Iniciar XLoader y completar los datos indicando el archivo hex (en este ejemplo LedControl.hex), el modelo de
tarjeta Arduino (Uno/ATmega328), el puerto COM (en este ejemplo COM6) y la velocidad en Baudios (115200)

c) Hacer click en ‘Upload’ para iniciar la grabación del código


d) Al concluir la grabación, se indicará la cantidad de bytes grabados
Ejemplo B: ‘Hola mundo’ con LCD y la tarjeta Arduino UNO en MikroC Pro for AVR
Para demostrar la simplicidad con la que se puede programar la tarjeta Arduino UNO usando el IDE MikroC Pro for AVR se
implementa un programa que despliega el mensaje ‘Hola Mudo’ en una pantalla LCD.
Para ello se utiliza la librería LCD incluida en MikroC Pro for AVR que contiene la funciones:
 Lcd_Init() para inicializar la pantalla
 Lcd_Cmd() para enviar comandos al LCD
 Lcd_Out() para desplegar mensajes en el LCD
*Para mayores referencias consultar la documentación incluida en la Ayuda en MikroC Pro for AVR

Código fuente MikroC Pro for AVR

Diagrama Esquemático
Ejemplo C: Conversión PIC→AVR del programa ALU (Unidad Aritmético-Lógica) de 3
bits y 4 operaciones
a) Enunciado
Se tiene un programa, en MikroC Pro for PIC con PIC18F4550, que simula una Unidad Aritmético Lógica (ALU) con
2 entradas: Dato A y Dato B de 3 bits cada una, una Salida de 6 bits y un selector de Operación de 2 bits con la
posibilidad de realizar las siguientes operaciones:
Operación Salida
00 Dato A + Dato B
01 Dato A - Dato B
10 Dato A * Dato B
11 Dato A / Dato B
Se requiere CONVERTIR este programa para que funcione en la tarjeta Arduino UNO

0
b) Diagrama en bloques
c) Diagrama de Flujo

d) Código fuente MikroC Pro for PIC


e) Diagrama esquemático - Simulación Proteus

Componentes
Proteus:

Pasos a realizar para la conversión de PIC18F4550 a ATmega328P (Arduino)

1) Usando un diagrama en bloques comparativo, seleccionar los puertos a usar

puerto RD puerto PD
puerto RB puerto PC

2) Determinar los registros que son diferentes


 ADCON1, CMCON y INTCON son registros propios del PIC18F4550 y no existen en el ATmega328P
 Ya que se usarán los pines 0 RX y 1 TX antes de subir el programa desconectar los interruptores
conectados a estos.
3) Codificar el código para el ATmega328P
4) Realizar la simulación en Proteus

5) Verificar el funcionamiento en la tarjeta Arduino


En la tarjeta Arduino, conectar 6 Leds en los pines AD0 al AD5 y 8 switches en los pines IO0 al IO7
comprobando el funcionamiento del ALU en sus 4 operaciones.
V. Procedimiento en Laboratorio
1era Firma: Simular en Proteus e Implementar en Proteus los Ejemplos A, B y C
2da Firma: Convertir de PIC→AVR e Implementar el siguiente programa en MikroC Pro for PIC:
Diagrama esquemático:

Componentes Proteus:
Código fuente MikroC Pro for PIC:
VI. Informe escrito

a) Carátula estándar con las Firmas del Docente que avalen el procedimiento en laboratorio
b) Para la 2da Firma, elaborar:
 Enunciado
 Diagrama en bloques
 Diagrama de flujo
 Código fuente MikroC Pro for AVR totalmente comentado
 Diagrama esquemático
c) Tema de Investigación:
“Ventajas y desventajas de usar MikroC Pro for AVR en el desarrollo de proyectos con Arduino”
 2 Páginas de Resumen escrito a mano, Enlace web (link) y 1era página del link impresa
d) Conclusiones

Das könnte Ihnen auch gefallen