SlideShare una empresa de Scribd logo
DEPARTAMENTO DE TECNOLOGÍA ELECTRÓNICA
ESCUELA TÉCNICA SUPERIOR DE INGENIERÍA INFORMÁTICA
Introducción a AVR-STUDIO
Microprocesadores
1.Introducción y objetivos
Los objetivos de la sesión de laboratorio son los siguientes:
▪Introducir el entorno de programación y depuración de microcontroladores de ATMEL1
llamado AVR-STUDIO.
▪Realizar la simulaciones de programas escritos en lenguaje ensamblador para el microcontrolador
ATMEGA328P.
▪Depuración de programas con el AVR Simulator.
▪Estudiar los procesos para la programación del microcontrolador del Arduino Duemilanove usando la
plataforma AVR-DRAGON.
▪Realizar la programación, depuración de programas y control del microcontrolador desde AVR-STUDIO.
AVR-STUDIO puede descargarse gratuitamente de desde las páginas del fabricante de ATMEL en
http://www.atmel.com.
2.Estudio teórico
Se deben realizar tres programas en lenguaje ensamblador. En el primero se pide desarrollar un programa que
permita el cálculo sobre un conjunto de elementos almacenados en la SRAM. Los dos restantes requieren el manejo de
la entrada-salida y se detallarán a continuación.
1.Programa MEDIANA: Realizar un programa en ensamblador que permita calcular la MEDIANA a una tabla de bytes
con signo que se ubica a partir de la dirección tabla de la SRAM. El resultado se guarda en la SRAM a continuación de
la tabla. Para la realización de este programa el alumno deberá, primero, desarrollar una subrutina que permita ordenar
la tabla siguiendo el algoritmo que se muestra a continuación.
1 Fabricante de microcontroladores, más información en http:/
/www.atmel.com
Estructura de Computadores 2
Código 1. Pseudocódigo del programa ordena
La mediana se calcula busca el elemento central de la tabla ordenada. Si el número de elementos de la tabla es impar,
la mediana es el valor que se encuentra en la mitad de la tabla, pero si el número de elementos es par, la mediana se
obtiene como el valor medio de los dos valores centrales de la tabla. Complete la plantilla que se muestra a
continuación.
.include "m168def.inc"
.equ TAMTABLA=..... //Tamaño de la tabla.
.def Temp=r16
.cseg
.org 0
call IniciaTabla //Esta llamada carga la tabla de la EEPROM a la SRAM
call Mediana
fin: jmp fin //Para terminar
Mediana:
call Ordena
/* Aquí va el programa Mediana */
Ordena:
/*Aquí va el programa de ordenación */
........
IniciaTabla:
push r0
push temp
push yl
push yh
push zl
push zh
ldi zl, low(2*TablaEeprom)
Num_Rep ←TamTabla
Repetir
X ← DirecciónTabla
Y ← DirecciónTabla+1
Num_Rep ← Num_Rep -1
Cont ← Num_Rep
Ordenado ← 0
Repetir
a ← (X)
b ← (Y)
si (a < b)
(X) ← b
(Y) ← a
Ordenado ← 1
fsi
X ← X +1
Y ← Y +1
Cont ← Cont -1
Mientras ( Cont > 0)
Mientras (Ordenado == 1)
Estructura de Computadores 3
ldi zh, high(2*TablaEeprom)
ldi yl, low(Tabla)
ldi yh, high(Tabla)
ldi temp,TAMTABLA
loop: lpm r0,Z+
st Y+,r0
subi temp,1
brne loop
pop zh
pop zl
pop yh
pop yl
pop temp
pop r0
ret
TablaEeprom: .db 10, 4, -1, 0 , 0, 6, 3, 10, 100, -100, 24, 23, -56, 4, 15, 16 ;Modifique los datos
.dseg
.org $100
Tabla: .byte TamTabla //Reservamos 10 bytes para los datos.
.
Código 2. Código del programa Mediana.
2. Conmutadores. Se pretende realizar un programa que permita manejar los puertos de entrada salida. En concreto, se
trata de activar los leds cuando se pulsa un conmutador.
En el esquema de la figura 9 aparecen dos leds y dos conmutadores que debe operar de la siguiente forma: cuando se
pulse el conmutador conectado a PC5 debe encenderse el led conectado a PC2 y mantenerse encendido hasta que se
vuelva a pulsar el conmutador. Además, al pulsar el conmutador conectado a PC4 se encenderá el led conectado a PC3
y permanecerá encendido hasta que se pulse nuevamente el conmutador. La tabla 1 muestra los puertos y los bits
asociados a los componentes así como la configuración necesaria para que operen correctamente.
Puerto Bit Componente Configuración Funcionamiento
PORTC 2 Led Como salida DDRC2=1
PC2=0 ⇒ apagado
PC2=1 ⇒ encendido
PORTC 3 Led Como salida DDRC3=1
PC3=0 ⇒ apagado
PC3=1 ⇒ encendido
PORTC 4 Conmutador Como entrada DDRC4=0
PC4=1 ⇒ no pulsado
PC4=0 ⇒ pulsado
PORTC 5 Conmutador Como entrada DDRC5=0
PC5=1 ⇒ no pulsado
PC5=0 ⇒ pulsado
Tabla 1. Configuración de los puertos e/s de los leds y conmutadores
Utilizando el la plantilla de código (fichero conmutadores.asm) debe realizar la siguientes tareas:
1.Cree un nuevo proyecto utilizando el código suministrado en el fichero conmutadores.asm y complete el programa.
2.Utilice el simulador para comprobar que funciona correctamente. Debe conmutar manualmente los pines PC4 y PC5
Estructura de Computadores 4
desde el simulador. Esto se consigue desplegando el puerto C en árbol de dispositivos que muestra el AVR-STUDIO en
la parte derecha durante la simulación y pulsando el botón del ratón sobre el cuadro que representa el bit
correspondiente. Cuando el cuadro está relleno de color negro significara que el bit está a 1, si está en blanco es 0.
3.Una vez comprobado en el simulador el correcto funcionamiento, repita los pasos realizados en la sección 11 para
programar el microcontrolador con este nuevo programa. Compruebe que funciona correctamente pulsando los
conmutadores.
3. Programa contador de pulsaciones. El nuevo programa a completar debe contar el número de pulsaciones de un
conmutador y mostrarlo en el display 7 segmentos. Habrá que completar tres fragmentos de código; el primero es la
inicialización correcta de los puertos, el segundo es una subrutina que crea una tabla en memoria con el código 7
segmentos y, el tercero es el programa principal.
La tabla 2 muestra la información de los componentes de entrada/salida que se usarán. Se incluyen los puertos, los bits
asociados a los componentes así como la configuración necesaria para que operen correctamente.
Puerto Bit Componente Configuración Funcionamiento
PORTD 0-7 Segmentos de los displays Como salida DDRD=0xFF;
PORTDX=0 ⇒ apagado
PORTDX=1 ⇒ encendido
PORTB 0 Display 0 Como salida DDRB0=1
PORTB0=1 ⇒ apagado
PORTB0=0 ⇒ encendido
PORTB 1 Display 1 Como salida DDRB1=1
PORTB1=1 ⇒ apagado
PORTB1=0 ⇒ encendido
Tabla 2. Configuración de los puertos e/s de los displays 7 segmentos.
Utilizando el fichero contador_bcd.asm mostrado en el listado de código 3 debe realizar las siguientes tareas:
1.Completar la subrutina de inicialización de puertos llamada inicializa_puertos. Puede utilizar como ejemplo de
inicialización la utilizada en el programa de la sección anterior (listado de código ). Debe inicializar los puertos con la
siguiente configuración:
1.1.En el puerto C los pines 3 y 2 deben ser salidas, el resto deben ser entradas
1.2.El puerto D está conectado a los segmentos del display, deben ser todos salida.
1.3.El puerto B controla el encendido o apagado completo de cada uno de los dos displays. Debe configurarlo como
salida, así, poniendo un 1 en PORTB0 se activará el display 0 y poniendo un 1 en PORTB1 se activará el display 1.
2.Completar la subrutina que crea una tabla para el convertidor de 7 segmentos llamada inicializa_tabla7seg. Esta tabla
contiene los códigos 7 segmentos de los dígitos 0 – 9. Al escribir un elemento de esta tabla en el puerto D aparecerá un
número BCD en los displays. Como ejemplo se muestran 2 números, donde se puede observar la correspondencia de
los bits a uno con la activación de los segmentos mostrados en la figura 12. Complete los números que faltan, del 2 al 9.
3.El bucle principal del programa comienza a partir de la etiqueta bucle. Aquí debe escribir el programa que cuente las
pulsaciones detectadas en un conmutador. El programa se puede realizar siguiendo estos pasos:
3.1.Escribir un bucle que espere hasta detectar que el conmutador se ha pulsado. Un valor 1 en el p correspondiente al
conmutador indica que se ha pulsado.
3.2.Tras detectar la pulsación hay que incrementar el contador en 1
3.3.Comprobar si el contador ha llegado a 10 para ponerlo de nuevo a cero.
Estructura de Computadores 5
3.4.Esperar en un bucle hasta que se suelte en botón, fíjese que este fragmento de código ya está hecho y corresponde
a la etiqueta espera.
4.Construya el programa y programe el microcontrolador para comprobar si funciona. Si no opera correctamente puede
utilizar el simulador para detectar los errores. Tenga en cuenta que a veces existen problemas de rebotes en los
conmutadores, esto significa que, al pulsar una vez el conmutador se detectan varias pulsaciones y el valor mostrado en
el display se incrementa en más de una unidad.
.include "m328pdef.inc"
.def temp = r16 /* Define un registro para uso temporal se ha utilizado el r16 para
poder emplear los modos con direccionamiento indirecto.*/
.def contador = r17 // Cuenta el número de pulsaciones
.def cero= r18
.dseg
.org $100
TABLA7SEG: .byte 10 // Se reservan 10 bytes para una tabla de valores del convertidor bin7seg
.cseg
.org $0
rcall inicializa_puertos // Rutina que inicializa los puertos
rcall inicializa_tabla7seg // Rutina que inicializa la tabla del convertidor
bucle: // Programa principal
rcall display // Representamos el valor de contador en el display
/* Aquí debe escribir el programa que haga lo siguiente:
1. Esperar hasta que se pulse un pulsador
2. Si se pulsa el pulsador incrementar el contador
3. Si el contador llega a 10 hay que ponerlo a cero */
inicializa_puertos:
// Aquí debe configurar portc[3:2] como salidas y el resto como entradas
...
// Aquí debe configurar puerto D y el puerto B completo como salida
out portc,temp // Se Activan las resistencias de pull-up del portc[1:0] y apaga leds
ldi temp,$ff
ret
/* La siguiente rutina inicializa la tabla de 7 segmentos. Esta rutina sería innecesaria si se hubiera utilizado la memoria de
programa para almacenarla */
inicializa_tabla7seg:
ldi zh,high(TABLA7SEG) // Utilizamos Z para apuntar a la tabla
ldi zl,low(TABLA7SEG) // low() high() son directivas que devuelven el byte bajo o
// el byte alto de la dirección que se le pasa como
// argumento respectivamente
ldi temp,0b01111110 //Código 7 segmentos del 0
st z+,temp
ldi temp,0b00110000 //Código 7 segmentos del 1
st z+,temp
/* Aquí debe completar los códigos de los dígitos que faltan: del 2 al 9 */
...
ret
/* La siguiente rutina permite representar un número en el display de 7 segmentos. Utiliza para ello el registro Z, que
inicialmente apunta a la tabla de 7 segmentos. A este registro se le suma Cont que es una variable entre 0 y 9 y, después,
mediante acceso indirecto se carga el código 7 segmentos correspondiente en el puerto.*/
display:
Estructura de Computadores 6
ldi zh,high(TABLA7SEG)
ldi zl,low(TABLA7SEG)
add zl,contador // El registro Z es de 16 bits, mientras que contador es de 8
adc zh,cero // No olvidar sumar el acarreo que se genera del byte bajo a ZH
ld temp,z
out portd,temp
sbi portb,1 // Apaga el display 1
cbi portb,0 // Activa el display 0
ret
Código 3. Fichero contador_bcd.asm, plantilla de código para el contador BCD.
3.Estudio experimental
En el estudio experimental deberá probar y mostrar el funcionamiento de todos los programas solicitados en el
estudio teórico. Para ello deberá utilizar el AVRSTUDIO cuyo tutorial se muestra a continuación.
3.1.Introducción a AVR-STUDIO
Se utilizarán los programas realizados en el estudio teórico en el entorno de desarrollo AVR-STUDIO. Los pasos
para crear un proyecto nuevo y poder escribir el código del programa se detalla a continuación en esta sección.
Una vez iniciado AVR STUDIO aparece un asistente para creación o apertura de un nuevo proyecto tal y como se
muestra en la figura 1. Si no apareciera el asistente hay que acceder al menú Project y seleccionar la opción Project
Wizard.
Figura 1. Asistente para creación o apertura de un proyecto.
Se debe seleccionar un nuevo proyecto (botón New Project) y aparecerá el siguiente diálogo del asistente (figura 3)
donde, habrá que indicar el nombre del proyecto, el directorio y seleccionar la opción Atmel AVR Assembler. Antes de
pulsar el botón Next seleccione adecuadamente la opción Create initial file, tiene dos opciones, seleccionar o no
seleccionar dicha opción (observe la marca roja en la figura 2):
1.Si no selecciona esta opción, el proyecto se creará sin ningún archivo de texto asociado. Esto le permite
posteriormente utilizar un fichero de texto que tenga en si disco con el programa ya escrito. De esta forma evita tener
que teclear el programa de nuevo
2.Si lo selecciona, se creará un nuevo fichero vacío en el que deberá teclear el programa. Si ya trae el programa escrito
en otro fichero tendrá que copiar y pegar el código desde el bloc de notas a AVR-STUDIO.
Estructura de Computadores 7
Figura 2. Selección de tipo y nombre de proyecto.
Tras escoger la opción que le interese en cada caso, tras pulsar el botón Next aparecerá la última ventana de asistente.
Aquí debe seleccionar las opciones AVR Simulator y ATMega328P tal y como se muestra en la figura 3.
Figura 3. Selección de tipo y nombre de proyecto.
En caso de no haber seleccionado la opción Create initial file tendrá un proyecto vacío al que hay que añadir un
programa previamente escrito en un fichero. Para realizar esto, hay que utilizar el botón derecho del ratón en la raíz del
árbol de proyecto y aparecerá un menú flotante como el mostrado en la figura 4. Con la opción Add files to project
podemos seleccionar del disco el fichero con el programa en ensamblador que se desee.
Figura 4.Añadir ficheros al proyecto.
Tras estos pasos aparece en el árbol de proyecto el nombre del fichero ensamblador sobre el que trabajar. Pulsando
con el ratón dos veces sobre este nombre del fichero aparece una ventana en la que puede editar el código ensam-
blador del programa.
Una vez se ha terminado de escribir el programa hay que realizar el ensamblado del código. Este paso se realiza en
Estructura de Computadores 8
menú Build opción Build también puede utilizar el icono de la barra de herramientas. Si todo es correcto debe
aparecer en la parte inferior información referente al programa compilado:
AVRASM: AVR macro assembler 2.1.42 (build 1796 Sep 15 2009 10:48:36)
Copyright (C) 1995-2009 ATMEL Corporation
F:EdCtema4practicassolsuma.asm(2): Including file 'C:Archivos de programaAtmelAVR ToolsAvrAssembler2Appnotesm168def.inc'
F:EdCtema4practicassolsuma.asm(88): No EEPROM data, deleting C:Documents and SettingspdiMis documentosedcedc.eep
ATmega168 memory use summary [bytes]:
Segment Begin End Code Data Used Size Use%
---------------------------------------------------------------
[.cseg] 0x000000 0x00005e 78 16 94 16384 0.6%
[.dseg] 0x000100 0x000110 0 16 16 1024 1.6%
[.eseg] 0x000000 0x000000 0 0 0 512 0.0%
Assembly complete, 0 errors. 0 warnings
Código 4. Salida de la construcción del programa suma.
En caso de producirse errores, en la ventana inferior aparecerá el número de línea del programa donde está el error.
3.1.1.Ejecución en el simulador del programa
AVR-STUDIO incluye un simulador con el cual se puede visualizar el estado del microcontrolador durante la
ejecución de un programa. Entre las diversas opciones que ofrece el simulador nos centraremos en la posibilidad de
ejecutar instrucción a instrucción un programa y la posibilidad de ejecutar un programa hasta que llegue a una
instrucción determinada.
Para comenzar la simulación del programa hay que acceder al menú Debug y utilizar la opción Start Debugging. Tras
esto aparecen diferentes ventanas (ver figura 5) que componen el simulador:
▪Ventana del Procesador: Situada en la parte izquierda, muestra el estado interno de procesador (Frecuencia, contador
de ciclos del reloj) y el contenido de los registros: PC, SP, X, Y, Z, SREG y los 32 registros internos.
▪Ventana de dispositivos de E/S: Situada en la parte superior derecha, muestra en forma de árbol todos los dispositivos
que tiene el microcontrolador seleccionado.
▪Ventana de visualización de Memoria: Situada en la parte inferior derecha, permite ver en tiempo real el contenido de
la memoria del microcontrolador. Se puede seleccionar entre memoria de programa, memoria SRAM y EEPROM.
Principalmente interesará ver el contenido de la memoria SRAM a partir de la dirección $100. Se debe recordar que
hasta la dirección $99 están mapeados los periféricos, por lo que no se debe usar como espacio de almacenamiento
para los programas
Estructura de Computadores 9
FFigura 5. Visión global del modo de depuración de AVR-STUDIO.
El simulador permite la ejecución instrucción a instrucción del programa. El indicador situado en la parte
izquierda indica la siguiente instrucción que se ejecutará. En el menú Debug (figura 6) se pueden encontrar diversas
acciones útiles durante la simulación. En la ejecución paso a paso las funciones más utilizadas son:
▪Step Over: (icono ) Ejecuta instrucciones hasta la siguiente línea, en caso de ser una llamada a una subrutina, la
ejecuta completamente para avanzar a la siguiente línea de código.
▪Step Into: (icono ) Ejecuta una instrucción, en caso se existir una llamada
a subrutina, realiza la llamada y se sitúa en la primera instrucción de la
subrutina.
▪Step Out: (icono ) Ejecuta instrucciones hasta encontrar una instrucción de
retorno de subrutina.
▪Reset: (icono ) Reinicia la simulación y sitúa la ejecución en la primera
instrucción del programa.
▪Toogle Breakpoint: (icono ) Establece un punto de ruptura de ejecución.
Cuando se ejecute el comando Run (icono ), el programa se ejecutará hasta
encontrar algún punto de ruptura.
▪Run to Cursor: (icono ) Ejecuta instrucciones hasta la instrucción en la que
está el cursor.
Figura 6.Menú de depuración.
Estructura de Computadores 10
3.1.2.Ejecución en el simulador del programa
Se recuerda que AVR-STUDIO incluye un simulador con el cual se puede visualizar el estado del microcontrolador
durante la ejecución de un programa. Para comenzar la simulación del programa hay que acceder al menú Debug y
utilizar la opción Start Debugging. Tras esto aparecen diferentes ventanas (ver figura 7) que componen el simulador:
▪Ventana del Procesador: Situada en la parte izquierda, muestra el estado interno de procesador (Frecuencia, contador
de ciclos del reloj) y el contenido de los registros: PC, SP, X, Y, Z, SREG y los 32 registros internos.
▪Ventana de dispositivos de E/S: Situada en la parte superior derecha, muestra en forma de árbol todos los dispositivos
que tiene el microcontrolador seleccionado. En esta primera práctica de debe seleccionar el puerto C, de igual modo
que se ha seleccionado la en la figura 7. De esta forma se visualizan los tres registros que forman el puerto.
▪Ventana de visualización de Memoria: Situada en la parte inferior derecha, permite ver en tiempo real el contenido de
la memoria del microcontrolador. Se puede seleccionar entre memoria de programa, memoria SRAM y EEPROM.
Principalmente interesará ver el contenido de la memoria SRAM a partir de la dirección $100.
Para comprobar el funcionamiento del programa se debe realizar la ejecución paso a paso observando como cambian
los valores de los registros y puertos. Hay que desplegar los registros en la ventana del procesador y puertos en la
ventana de E/S para visualizar los registros del puerto.
Figura 7. Visión global del modo de depuración de AVR-STUDIO.
A continuación inicie la simulación con Start Debugging y ejecute paso a paso el programa del estudio teórico. Puede
utilizar la tecla F10 para no tener que utilizar los menús. Compruebe que su programa opera correctamente.
Estructura de Computadores 11
3.1.3.Programación del microcontrolador
El siguiente paso consiste en la programación con el programador AVR-DRAGON (figura 8a) de un microcontrolador
ATMEGA328P en una placa Arduino (figura 8b). El entorno de pruebas utilizado en esta sesión de laboratorio está
formada por tres componentes: programador AVR-DRAGON, placa de prototipo Arduino Duemilanove y placa de
expansión para Arduino con componentes E/S.
La placa de expansión mostrada en la figura 9 está conectada a la placa Arduino, quedando ocultos todos los
componentes del Arduino. En la placa de expansión están disponibles todos los puertos del microcontrolador en los
laterales de la placa, además, estos puertos también están conectados a diversos componentes como son, leds,
displays, conmutadores, etc. Estos componentes se utilizarán posteriormente para realizar programas que controlen la
entrada/salida.
En primer lugar se deben conectar ambas placas a los conectores USB. No es necesaria ninguna alimentación adicional
ya utilizan los 5V suministrados por el Bus USB. Tras la conexión USB puede aparecer en el ordenador algún cuadro de
diálogo indicando que se ha encontrado nuevo hardware. Si esto ocurriera, debe instalar los controladores, no cancele
la instalación o tendrá problemas de programación del microcontrolador.
La placa AVR-DRAGON dispone de dos leds, inicialmente se iluminan uno en verde y otro en rojo. El led de color rojo
cambiará de color indicando el estado de la comunicación con AVR-STUDIO. La tabla 3 muestra el significado de los
diferentes colores de dicho led, debemos observarlo durante los siguientes pasos para detectar posibles problemas en
la programación del microcontrolador.
Color Descripción
Rojo En reposo, no hay conexión con AVR Studio
Apagado En reposo, conectado a AVR Studio
Verde Transfiriendo datos
Amarillo Inicialización o actualización del firmware
Tabla 3. Indicaciones del led de AVR-DRAGON.
Antes de realizar la programación se debe verificar la correcta configuración de AVR-STUDIO realizando una prueba de
conexión con el microcontrolador. Accediendo al menú Tools hay que usar el submenú Program AVR y, opción Connect.
Aparecerá el diálogo mostrado en la figura 10. Alternativamente, dicho diálogo se puede obtener de manera directa
utilizando el botón de la barra de herramientas.
Estructura de Computadores 12
(a) (b)
Figura 8.a) Placa de desarrollo Arduino b) Programador/Depurador AVR-DRAGON.
(a) (b)
Figura 9.a) Placa de expansión E/S para Arduino. b) Detalle de conexión de los segmentos a los puertos.
PD6
PD0
PD7
PD5
PD4
PD3
PD2
PD1
GND
PB0
A REF
PB5
PB4
PB3
PB2
PB1
PC4
PC3
PC2
PC1
PC0
PC5
Led conectado
A PB5
Estructura de Computadores 13
En este diálogo hay que establecer la configuración indicada en la figura 10: plataforma AVR-DRAGON y puerto USB.
Tras pulsar el botón Connect, si la conexión es correcta, debe aparecer automáticamente el diálogo mostrado en la
figura 11 y el led rojo de AVR-DRAGON se apagará.
Figura 10. Selección del programador y el puerto
En caso de no aparecer automáticamente el dialogo de la figura 11 se puede utilizar el botón de la barra de herramien-
tas o, la opción de menú Tools submenú Program AVR. Tras esto finalmente aparecerá la ventana mostrada en la
figura 11.
De las múltiples pestañas que contiene sólo utilizaremos la primera y segunda: Main y Program. En primer lugar se
realizará una prueba de comunicación siguiendo estos pasos:
1.Seleccionar la pestaña Main.
2.Seleccionar el microcontrolador correcto del cuadro desplegable indicado con Device and Signature Bytes. En estas
placas disponemos del microcontrolador ATMega328P.
3.Pulsar el botón Read Signature. El programa debe responder con el texto Signature matches selected device. Si
respondiera con un error, se debe volver a desplegar el cuadro selector de microcontrolador, seleccionar el correcto, y
volver a realizar el test de comunicación.
Figura 11. Pestaña principal de la ventana de programación del microcontrolador.
El siguiente paso consiste en realizar la programación del microcontrolador con el código que se ha ensamblado, para
ello, seleccione la pestaña Program. Si el ensamblado se realizó con éxito habrá generado un fichero con extensión
Estructura de Computadores 14
.hex dentro del directorio del proyecto y con el nombre del proyecto. En la figura 12 se muestra el diálogo de
programación donde hay que seleccionar el fichero .hex. Este diálogo tiene tres cuadros donde se puede seleccionar un
fichero: Flash, EEPROM y ELF. Hay que utilizar la sección sección Flash y el botón de selección de fichero (indicado
con la flecha roja en la figura 12). Tras esto basta con pulsar el botón Program para realizar la programación del
microcontrolador.
Figura 12. Pestaña de programación de la ventana de programación del microcontrolador.
4. Ejercicio evaluable
Para optar a evaluación alternativa, los alumnos deberán obtener una calificación de APTO en la parte obligatoria de
esta práctica y demostrar en el laboratorio que se ha desarrollado el ejercicio que se detalla a continuación:
Se desea desarrollar un programa que permita contar segundos y mostrarlos en un display de 7 segmentos. Para ello el
alumno deberá utilizar el Timer1 en modo CTC para que éste genere interrupciones de forma periódica. El contenido del
TCNT1 como la selección del prescaler deberá escogerse de tal forma que se minimice el error cometido en la cuenta
de los segundos. La frecuencia del oscilador del ATMEGA328P es de 1Mhz.

Más contenido relacionado

La actualidad más candente

26176947 tutorial-v-escritura-en-lcd-usando-teclado-matricial
26176947 tutorial-v-escritura-en-lcd-usando-teclado-matricial26176947 tutorial-v-escritura-en-lcd-usando-teclado-matricial
26176947 tutorial-v-escritura-en-lcd-usando-teclado-matricial
Gabriel Bravo Rojas
 
Introduccion a la programacion en c 18
Introduccion a la programacion en c 18Introduccion a la programacion en c 18
Introduccion a la programacion en c 18
fitomaster
 
Curso de-mcu-proteus
Curso de-mcu-proteusCurso de-mcu-proteus
Curso de-mcu-proteus
Francisco Nieva Ricaldi
 
Usart 3
Usart 3Usart 3
Curso de lenguaje c para microcontroladores pic dia 1(2)(2)(2)(2)(2)(2)
Curso de lenguaje c para microcontroladores pic dia 1(2)(2)(2)(2)(2)(2)Curso de lenguaje c para microcontroladores pic dia 1(2)(2)(2)(2)(2)(2)
Curso de lenguaje c para microcontroladores pic dia 1(2)(2)(2)(2)(2)(2)
Franz Amaya
 
PROYECTOS CON PIC 16F84
PROYECTOS CON PIC 16F84PROYECTOS CON PIC 16F84
PROYECTOS CON PIC 16F84
Juan Navarrete Guzman
 
Curso de microcontroladores capitulo 04
Curso de microcontroladores capitulo 04Curso de microcontroladores capitulo 04
Curso de microcontroladores capitulo 04
Hamiltonn Casallas
 
Programacion Lenguaje Assembler 25 10 07
Programacion Lenguaje Assembler 25 10 07Programacion Lenguaje Assembler 25 10 07
Programacion Lenguaje Assembler 25 10 07
Carlos Pastorino
 
Proyecto2
Proyecto2Proyecto2
Proyecto2
georgemanson69
 
Guía rápidalcd y teclado
Guía rápidalcd y tecladoGuía rápidalcd y teclado
Guía rápidalcd y teclado
Luis Zurita
 
programacion con microcontrolador pic 16f84
programacion con microcontrolador pic 16f84programacion con microcontrolador pic 16f84
programacion con microcontrolador pic 16f84
guestf09168b
 
Ejemplos pic c
Ejemplos pic cEjemplos pic c
Ejemplos pic c
Wilmer Lizunde Damiano
 
Manejo de perifericos para microcontroladore
Manejo de perifericos para microcontroladoreManejo de perifericos para microcontroladore
Manejo de perifericos para microcontroladore
Luis Zurita
 
Assembler
AssemblerAssembler
Assembler
irana piñero
 
MANEJO DE PERIFERICOS PARA MICROCONTROLADORES EN C
MANEJO DE PERIFERICOS PARA MICROCONTROLADORES EN CMANEJO DE PERIFERICOS PARA MICROCONTROLADORES EN C
MANEJO DE PERIFERICOS PARA MICROCONTROLADORES EN C
Luis Zurita
 
PROCESAMIENTO EN PANTALLA Y TECLADO BASICO
PROCESAMIENTO EN PANTALLA Y TECLADO BASICOPROCESAMIENTO EN PANTALLA Y TECLADO BASICO
PROCESAMIENTO EN PANTALLA Y TECLADO BASICO
Yurley Xiomara Rojas Sanchez
 
Lenguajes ensambladores
Lenguajes ensambladoresLenguajes ensambladores
Lenguajes ensambladores
Rolandovonchong
 
Curso de microcontroladores capitulo 02
Curso de microcontroladores capitulo 02Curso de microcontroladores capitulo 02
Curso de microcontroladores capitulo 02
Hamiltonn Casallas
 
Interfaz puerto paralelo LPT
Interfaz puerto paralelo LPTInterfaz puerto paralelo LPT
Interfaz puerto paralelo LPT
Ángel Acaymo M. G.
 
Proyecto4
Proyecto4Proyecto4
Proyecto4
georgemanson69
 

La actualidad más candente (20)

26176947 tutorial-v-escritura-en-lcd-usando-teclado-matricial
26176947 tutorial-v-escritura-en-lcd-usando-teclado-matricial26176947 tutorial-v-escritura-en-lcd-usando-teclado-matricial
26176947 tutorial-v-escritura-en-lcd-usando-teclado-matricial
 
Introduccion a la programacion en c 18
Introduccion a la programacion en c 18Introduccion a la programacion en c 18
Introduccion a la programacion en c 18
 
Curso de-mcu-proteus
Curso de-mcu-proteusCurso de-mcu-proteus
Curso de-mcu-proteus
 
Usart 3
Usart 3Usart 3
Usart 3
 
Curso de lenguaje c para microcontroladores pic dia 1(2)(2)(2)(2)(2)(2)
Curso de lenguaje c para microcontroladores pic dia 1(2)(2)(2)(2)(2)(2)Curso de lenguaje c para microcontroladores pic dia 1(2)(2)(2)(2)(2)(2)
Curso de lenguaje c para microcontroladores pic dia 1(2)(2)(2)(2)(2)(2)
 
PROYECTOS CON PIC 16F84
PROYECTOS CON PIC 16F84PROYECTOS CON PIC 16F84
PROYECTOS CON PIC 16F84
 
Curso de microcontroladores capitulo 04
Curso de microcontroladores capitulo 04Curso de microcontroladores capitulo 04
Curso de microcontroladores capitulo 04
 
Programacion Lenguaje Assembler 25 10 07
Programacion Lenguaje Assembler 25 10 07Programacion Lenguaje Assembler 25 10 07
Programacion Lenguaje Assembler 25 10 07
 
Proyecto2
Proyecto2Proyecto2
Proyecto2
 
Guía rápidalcd y teclado
Guía rápidalcd y tecladoGuía rápidalcd y teclado
Guía rápidalcd y teclado
 
programacion con microcontrolador pic 16f84
programacion con microcontrolador pic 16f84programacion con microcontrolador pic 16f84
programacion con microcontrolador pic 16f84
 
Ejemplos pic c
Ejemplos pic cEjemplos pic c
Ejemplos pic c
 
Manejo de perifericos para microcontroladore
Manejo de perifericos para microcontroladoreManejo de perifericos para microcontroladore
Manejo de perifericos para microcontroladore
 
Assembler
AssemblerAssembler
Assembler
 
MANEJO DE PERIFERICOS PARA MICROCONTROLADORES EN C
MANEJO DE PERIFERICOS PARA MICROCONTROLADORES EN CMANEJO DE PERIFERICOS PARA MICROCONTROLADORES EN C
MANEJO DE PERIFERICOS PARA MICROCONTROLADORES EN C
 
PROCESAMIENTO EN PANTALLA Y TECLADO BASICO
PROCESAMIENTO EN PANTALLA Y TECLADO BASICOPROCESAMIENTO EN PANTALLA Y TECLADO BASICO
PROCESAMIENTO EN PANTALLA Y TECLADO BASICO
 
Lenguajes ensambladores
Lenguajes ensambladoresLenguajes ensambladores
Lenguajes ensambladores
 
Curso de microcontroladores capitulo 02
Curso de microcontroladores capitulo 02Curso de microcontroladores capitulo 02
Curso de microcontroladores capitulo 02
 
Interfaz puerto paralelo LPT
Interfaz puerto paralelo LPTInterfaz puerto paralelo LPT
Interfaz puerto paralelo LPT
 
Proyecto4
Proyecto4Proyecto4
Proyecto4
 

Similar a Microcontroladores: Introducción al AVR Studio

Microcontroladores: Programación del microcontrolador ATMega328P.pdf
Microcontroladores: Programación del microcontrolador ATMega328P.pdfMicrocontroladores: Programación del microcontrolador ATMega328P.pdf
Microcontroladores: Programación del microcontrolador ATMega328P.pdf
SANTIAGO PABLO ALBERTO
 
microprocesadores y microcontroladores
microprocesadores y microcontroladoresmicroprocesadores y microcontroladores
microprocesadores y microcontroladores
netmedical
 
Curso de programacion en c++ para microcontroladores pic 16 f87xx
Curso de programacion en c++ para microcontroladores pic 16 f87xxCurso de programacion en c++ para microcontroladores pic 16 f87xx
Curso de programacion en c++ para microcontroladores pic 16 f87xx
Jose Manuel Mansilla Carrasco
 
Curso de programacion en c++ para microcontroladores pic 16 f87xx
Curso de programacion en c++ para microcontroladores pic 16 f87xxCurso de programacion en c++ para microcontroladores pic 16 f87xx
Curso de programacion en c++ para microcontroladores pic 16 f87xx
freddymadriz
 
Curso de programacion en c++ para microcontroladores pic 16 f87xx
Curso de programacion en c++ para microcontroladores pic 16 f87xxCurso de programacion en c++ para microcontroladores pic 16 f87xx
Curso de programacion en c++ para microcontroladores pic 16 f87xx
Jose Manuel Mansilla Carrasco
 
Manual tp12
Manual tp12Manual tp12
Manual tp12
Oscar Montaño
 
Práctica #2 parcial #2 registros del banco
Práctica #2 parcial #2  registros del bancoPráctica #2 parcial #2  registros del banco
Práctica #2 parcial #2 registros del banco
Anibal Ulibarri
 
Microcontroladores: Fundamentos de microprocesadores y microcontroladores
Microcontroladores: Fundamentos de microprocesadores y microcontroladoresMicrocontroladores: Fundamentos de microprocesadores y microcontroladores
Microcontroladores: Fundamentos de microprocesadores y microcontroladores
SANTIAGO PABLO ALBERTO
 
Microcontroladores ss13
Microcontroladores ss13Microcontroladores ss13
Microcontroladores ss13
Maestros Online
 
Microcontroladores ss13
Microcontroladores ss13Microcontroladores ss13
Microcontroladores ss13
Maestros Online Mexico
 
Informe N°2-Microcontroladores
Informe N°2-MicrocontroladoresInforme N°2-Microcontroladores
Informe N°2-Microcontroladores
Omar Ruiz
 
LECTOR DE TEMPERATURA CON LM35 Y MULTIPLEXOR DE DISPLAY DE 7 SEGMENTOS CON AR...
LECTOR DE TEMPERATURA CON LM35 Y MULTIPLEXOR DE DISPLAY DE 7 SEGMENTOS CON AR...LECTOR DE TEMPERATURA CON LM35 Y MULTIPLEXOR DE DISPLAY DE 7 SEGMENTOS CON AR...
LECTOR DE TEMPERATURA CON LM35 Y MULTIPLEXOR DE DISPLAY DE 7 SEGMENTOS CON AR...
Fernando Marcos Marcos
 
Lenze configuración jm
Lenze configuración jmLenze configuración jm
Lenze configuración jm
Jose Manuel Mansilla Carrasco
 
Adc y usart pic16 f887
Adc y usart pic16 f887Adc y usart pic16 f887
Adc y usart pic16 f887
Derlis Hernandez Lara
 
Microcontroladores AVR y Arduino: Programación del microatmega328p en ensambl...
Microcontroladores AVR y Arduino: Programación del microatmega328p en ensambl...Microcontroladores AVR y Arduino: Programación del microatmega328p en ensambl...
Microcontroladores AVR y Arduino: Programación del microatmega328p en ensambl...
SANTIAGO PABLO ALBERTO
 
El AT mega8 es un microcontrolador excelente
El AT mega8 es un microcontrolador excelenteEl AT mega8 es un microcontrolador excelente
El AT mega8 es un microcontrolador excelente
Jose Alva
 
Arduino: Reporte de diseño controlador acuario con Arduino
Arduino: Reporte de diseño controlador acuario con ArduinoArduino: Reporte de diseño controlador acuario con Arduino
Arduino: Reporte de diseño controlador acuario con Arduino
SANTIAGO PABLO ALBERTO
 
Manual basico arduino
Manual basico arduinoManual basico arduino
Manual basico arduino
Ketoc2k3
 
Arduino: programación básica de Arduino
Arduino: programación básica de ArduinoArduino: programación básica de Arduino
Arduino: programación básica de Arduino
SANTIAGO PABLO ALBERTO
 
Ejercicio 05 Subrutinas
Ejercicio 05 SubrutinasEjercicio 05 Subrutinas
Ejercicio 05 Subrutinas
Jaime E. Velarde
 

Similar a Microcontroladores: Introducción al AVR Studio (20)

Microcontroladores: Programación del microcontrolador ATMega328P.pdf
Microcontroladores: Programación del microcontrolador ATMega328P.pdfMicrocontroladores: Programación del microcontrolador ATMega328P.pdf
Microcontroladores: Programación del microcontrolador ATMega328P.pdf
 
microprocesadores y microcontroladores
microprocesadores y microcontroladoresmicroprocesadores y microcontroladores
microprocesadores y microcontroladores
 
Curso de programacion en c++ para microcontroladores pic 16 f87xx
Curso de programacion en c++ para microcontroladores pic 16 f87xxCurso de programacion en c++ para microcontroladores pic 16 f87xx
Curso de programacion en c++ para microcontroladores pic 16 f87xx
 
Curso de programacion en c++ para microcontroladores pic 16 f87xx
Curso de programacion en c++ para microcontroladores pic 16 f87xxCurso de programacion en c++ para microcontroladores pic 16 f87xx
Curso de programacion en c++ para microcontroladores pic 16 f87xx
 
Curso de programacion en c++ para microcontroladores pic 16 f87xx
Curso de programacion en c++ para microcontroladores pic 16 f87xxCurso de programacion en c++ para microcontroladores pic 16 f87xx
Curso de programacion en c++ para microcontroladores pic 16 f87xx
 
Manual tp12
Manual tp12Manual tp12
Manual tp12
 
Práctica #2 parcial #2 registros del banco
Práctica #2 parcial #2  registros del bancoPráctica #2 parcial #2  registros del banco
Práctica #2 parcial #2 registros del banco
 
Microcontroladores: Fundamentos de microprocesadores y microcontroladores
Microcontroladores: Fundamentos de microprocesadores y microcontroladoresMicrocontroladores: Fundamentos de microprocesadores y microcontroladores
Microcontroladores: Fundamentos de microprocesadores y microcontroladores
 
Microcontroladores ss13
Microcontroladores ss13Microcontroladores ss13
Microcontroladores ss13
 
Microcontroladores ss13
Microcontroladores ss13Microcontroladores ss13
Microcontroladores ss13
 
Informe N°2-Microcontroladores
Informe N°2-MicrocontroladoresInforme N°2-Microcontroladores
Informe N°2-Microcontroladores
 
LECTOR DE TEMPERATURA CON LM35 Y MULTIPLEXOR DE DISPLAY DE 7 SEGMENTOS CON AR...
LECTOR DE TEMPERATURA CON LM35 Y MULTIPLEXOR DE DISPLAY DE 7 SEGMENTOS CON AR...LECTOR DE TEMPERATURA CON LM35 Y MULTIPLEXOR DE DISPLAY DE 7 SEGMENTOS CON AR...
LECTOR DE TEMPERATURA CON LM35 Y MULTIPLEXOR DE DISPLAY DE 7 SEGMENTOS CON AR...
 
Lenze configuración jm
Lenze configuración jmLenze configuración jm
Lenze configuración jm
 
Adc y usart pic16 f887
Adc y usart pic16 f887Adc y usart pic16 f887
Adc y usart pic16 f887
 
Microcontroladores AVR y Arduino: Programación del microatmega328p en ensambl...
Microcontroladores AVR y Arduino: Programación del microatmega328p en ensambl...Microcontroladores AVR y Arduino: Programación del microatmega328p en ensambl...
Microcontroladores AVR y Arduino: Programación del microatmega328p en ensambl...
 
El AT mega8 es un microcontrolador excelente
El AT mega8 es un microcontrolador excelenteEl AT mega8 es un microcontrolador excelente
El AT mega8 es un microcontrolador excelente
 
Arduino: Reporte de diseño controlador acuario con Arduino
Arduino: Reporte de diseño controlador acuario con ArduinoArduino: Reporte de diseño controlador acuario con Arduino
Arduino: Reporte de diseño controlador acuario con Arduino
 
Manual basico arduino
Manual basico arduinoManual basico arduino
Manual basico arduino
 
Arduino: programación básica de Arduino
Arduino: programación básica de ArduinoArduino: programación básica de Arduino
Arduino: programación básica de Arduino
 
Ejercicio 05 Subrutinas
Ejercicio 05 SubrutinasEjercicio 05 Subrutinas
Ejercicio 05 Subrutinas
 

Más de SANTIAGO PABLO ALBERTO

secuencia electroneumática parte 1
secuencia electroneumática parte 1secuencia electroneumática parte 1
secuencia electroneumática parte 1
SANTIAGO PABLO ALBERTO
 
secuencia electroneumática parte 2
secuencia electroneumática parte 2secuencia electroneumática parte 2
secuencia electroneumática parte 2
SANTIAGO PABLO ALBERTO
 
Manual de teoría y practica electroneumática avanzada
Manual de teoría y practica electroneumática avanzadaManual de teoría y practica electroneumática avanzada
Manual de teoría y practica electroneumática avanzada
SANTIAGO PABLO ALBERTO
 
Programacion de PLC basado en Rslogix 500 por Roni Domínguez
Programacion de PLC basado en Rslogix 500 por Roni Domínguez Programacion de PLC basado en Rslogix 500 por Roni Domínguez
Programacion de PLC basado en Rslogix 500 por Roni Domínguez
SANTIAGO PABLO ALBERTO
 
Programación de microcontroladores PIC en C con Fabio Pereira
Programación de microcontroladores PIC en  C con Fabio PereiraProgramación de microcontroladores PIC en  C con Fabio Pereira
Programación de microcontroladores PIC en C con Fabio Pereira
SANTIAGO PABLO ALBERTO
 
Análisis y Diseño de Sistemas de Control Digital por Ricardo Fernandez del Bu...
Análisis y Diseño de Sistemas de Control Digital por Ricardo Fernandez del Bu...Análisis y Diseño de Sistemas de Control Digital por Ricardo Fernandez del Bu...
Análisis y Diseño de Sistemas de Control Digital por Ricardo Fernandez del Bu...
SANTIAGO PABLO ALBERTO
 
Arduino: Arduino de cero a experto
Arduino: Arduino de cero a expertoArduino: Arduino de cero a experto
Arduino: Arduino de cero a experto
SANTIAGO PABLO ALBERTO
 
Fisica I
Fisica IFisica I
Quimica.pdf
Quimica.pdfQuimica.pdf
Manual básico PLC OMRON
Manual básico PLC OMRON Manual básico PLC OMRON
Manual básico PLC OMRON
SANTIAGO PABLO ALBERTO
 
Programación de autómatas PLC OMRON CJ/CP1
Programación de  autómatas PLC OMRON CJ/CP1Programación de  autómatas PLC OMRON CJ/CP1
Programación de autómatas PLC OMRON CJ/CP1
SANTIAGO PABLO ALBERTO
 
Manual del sistema del controlador programable S7-200 SMART
Manual del sistema del controlador programable S7-200 SMARTManual del sistema del controlador programable S7-200 SMART
Manual del sistema del controlador programable S7-200 SMART
SANTIAGO PABLO ALBERTO
 
Catálogo de PLC S7-200 SMART
Catálogo de PLC S7-200 SMART Catálogo de PLC S7-200 SMART
Catálogo de PLC S7-200 SMART
SANTIAGO PABLO ALBERTO
 
PLC: Automatismos industriales
PLC: Automatismos industrialesPLC: Automatismos industriales
PLC: Automatismos industriales
SANTIAGO PABLO ALBERTO
 
PLC: Buses industriales y de campo practicas de laboratorio por Jose Miguel R...
PLC: Buses industriales y de campo practicas de laboratorio por Jose Miguel R...PLC: Buses industriales y de campo practicas de laboratorio por Jose Miguel R...
PLC: Buses industriales y de campo practicas de laboratorio por Jose Miguel R...
SANTIAGO PABLO ALBERTO
 
PLC y Electroneumática: Electricidad y Automatismo eléctrico por Luis Miguel...
PLC y Electroneumática: Electricidad y Automatismo eléctrico por  Luis Miguel...PLC y Electroneumática: Electricidad y Automatismo eléctrico por  Luis Miguel...
PLC y Electroneumática: Electricidad y Automatismo eléctrico por Luis Miguel...
SANTIAGO PABLO ALBERTO
 
Electrónica: Diseño y desarrollo de circuitos impresos con Kicad por Miguel P...
Electrónica: Diseño y desarrollo de circuitos impresos con Kicad por Miguel P...Electrónica: Diseño y desarrollo de circuitos impresos con Kicad por Miguel P...
Electrónica: Diseño y desarrollo de circuitos impresos con Kicad por Miguel P...
SANTIAGO PABLO ALBERTO
 
PLC: Diseño, construcción y control de un motor doble Dahlander(cuatro veloci...
PLC: Diseño, construcción y control de un motor doble Dahlander(cuatro veloci...PLC: Diseño, construcción y control de un motor doble Dahlander(cuatro veloci...
PLC: Diseño, construcción y control de un motor doble Dahlander(cuatro veloci...
SANTIAGO PABLO ALBERTO
 
PLC: Motor Dahlander
PLC: Motor DahlanderPLC: Motor Dahlander
PLC: Motor Dahlander
SANTIAGO PABLO ALBERTO
 
Electrónica digital: Introducción a la Lógica Digital - Teoría, Problemas y ...
Electrónica digital:  Introducción a la Lógica Digital - Teoría, Problemas y ...Electrónica digital:  Introducción a la Lógica Digital - Teoría, Problemas y ...
Electrónica digital: Introducción a la Lógica Digital - Teoría, Problemas y ...
SANTIAGO PABLO ALBERTO
 

Más de SANTIAGO PABLO ALBERTO (20)

secuencia electroneumática parte 1
secuencia electroneumática parte 1secuencia electroneumática parte 1
secuencia electroneumática parte 1
 
secuencia electroneumática parte 2
secuencia electroneumática parte 2secuencia electroneumática parte 2
secuencia electroneumática parte 2
 
Manual de teoría y practica electroneumática avanzada
Manual de teoría y practica electroneumática avanzadaManual de teoría y practica electroneumática avanzada
Manual de teoría y practica electroneumática avanzada
 
Programacion de PLC basado en Rslogix 500 por Roni Domínguez
Programacion de PLC basado en Rslogix 500 por Roni Domínguez Programacion de PLC basado en Rslogix 500 por Roni Domínguez
Programacion de PLC basado en Rslogix 500 por Roni Domínguez
 
Programación de microcontroladores PIC en C con Fabio Pereira
Programación de microcontroladores PIC en  C con Fabio PereiraProgramación de microcontroladores PIC en  C con Fabio Pereira
Programación de microcontroladores PIC en C con Fabio Pereira
 
Análisis y Diseño de Sistemas de Control Digital por Ricardo Fernandez del Bu...
Análisis y Diseño de Sistemas de Control Digital por Ricardo Fernandez del Bu...Análisis y Diseño de Sistemas de Control Digital por Ricardo Fernandez del Bu...
Análisis y Diseño de Sistemas de Control Digital por Ricardo Fernandez del Bu...
 
Arduino: Arduino de cero a experto
Arduino: Arduino de cero a expertoArduino: Arduino de cero a experto
Arduino: Arduino de cero a experto
 
Fisica I
Fisica IFisica I
Fisica I
 
Quimica.pdf
Quimica.pdfQuimica.pdf
Quimica.pdf
 
Manual básico PLC OMRON
Manual básico PLC OMRON Manual básico PLC OMRON
Manual básico PLC OMRON
 
Programación de autómatas PLC OMRON CJ/CP1
Programación de  autómatas PLC OMRON CJ/CP1Programación de  autómatas PLC OMRON CJ/CP1
Programación de autómatas PLC OMRON CJ/CP1
 
Manual del sistema del controlador programable S7-200 SMART
Manual del sistema del controlador programable S7-200 SMARTManual del sistema del controlador programable S7-200 SMART
Manual del sistema del controlador programable S7-200 SMART
 
Catálogo de PLC S7-200 SMART
Catálogo de PLC S7-200 SMART Catálogo de PLC S7-200 SMART
Catálogo de PLC S7-200 SMART
 
PLC: Automatismos industriales
PLC: Automatismos industrialesPLC: Automatismos industriales
PLC: Automatismos industriales
 
PLC: Buses industriales y de campo practicas de laboratorio por Jose Miguel R...
PLC: Buses industriales y de campo practicas de laboratorio por Jose Miguel R...PLC: Buses industriales y de campo practicas de laboratorio por Jose Miguel R...
PLC: Buses industriales y de campo practicas de laboratorio por Jose Miguel R...
 
PLC y Electroneumática: Electricidad y Automatismo eléctrico por Luis Miguel...
PLC y Electroneumática: Electricidad y Automatismo eléctrico por  Luis Miguel...PLC y Electroneumática: Electricidad y Automatismo eléctrico por  Luis Miguel...
PLC y Electroneumática: Electricidad y Automatismo eléctrico por Luis Miguel...
 
Electrónica: Diseño y desarrollo de circuitos impresos con Kicad por Miguel P...
Electrónica: Diseño y desarrollo de circuitos impresos con Kicad por Miguel P...Electrónica: Diseño y desarrollo de circuitos impresos con Kicad por Miguel P...
Electrónica: Diseño y desarrollo de circuitos impresos con Kicad por Miguel P...
 
PLC: Diseño, construcción y control de un motor doble Dahlander(cuatro veloci...
PLC: Diseño, construcción y control de un motor doble Dahlander(cuatro veloci...PLC: Diseño, construcción y control de un motor doble Dahlander(cuatro veloci...
PLC: Diseño, construcción y control de un motor doble Dahlander(cuatro veloci...
 
PLC: Motor Dahlander
PLC: Motor DahlanderPLC: Motor Dahlander
PLC: Motor Dahlander
 
Electrónica digital: Introducción a la Lógica Digital - Teoría, Problemas y ...
Electrónica digital:  Introducción a la Lógica Digital - Teoría, Problemas y ...Electrónica digital:  Introducción a la Lógica Digital - Teoría, Problemas y ...
Electrónica digital: Introducción a la Lógica Digital - Teoría, Problemas y ...
 

Último

Infografia de operaciones basicas de la construccion.pdf
Infografia de operaciones basicas de la construccion.pdfInfografia de operaciones basicas de la construccion.pdf
Infografia de operaciones basicas de la construccion.pdf
DanielMelndez19
 
Ducto Barras para instalaciones electricas
Ducto Barras para instalaciones electricasDucto Barras para instalaciones electricas
Ducto Barras para instalaciones electricas
Edgar Najera
 
DIAPOSITIVA DE LA NORMA ISO 22000 EXPOSICI�N.pptx
DIAPOSITIVA DE LA NORMA ISO 22000 EXPOSICI�N.pptxDIAPOSITIVA DE LA NORMA ISO 22000 EXPOSICI�N.pptx
DIAPOSITIVA DE LA NORMA ISO 22000 EXPOSICI�N.pptx
KeylaArlethTorresOrt
 
Infografía de operaciones básicas....pdf
Infografía de operaciones básicas....pdfInfografía de operaciones básicas....pdf
Infografía de operaciones básicas....pdf
jahirrtorresa
 
1. Introduccion a las excavaciones subterraneas (1).pdf
1. Introduccion a las excavaciones subterraneas (1).pdf1. Introduccion a las excavaciones subterraneas (1).pdf
1. Introduccion a las excavaciones subterraneas (1).pdf
raulnilton2018
 
tipos de energias: la Energía Radiante.pdf
tipos de energias: la Energía Radiante.pdftipos de energias: la Energía Radiante.pdf
tipos de energias: la Energía Radiante.pdf
munozvanessa878
 
Infografía operaciones básicas construcción .pdf
Infografía operaciones básicas construcción .pdfInfografía operaciones básicas construcción .pdf
Infografía operaciones básicas construcción .pdf
Carlos Pulido
 
FICHA TECNICA PRODUCTOS CONGELADOS EMBALAJE.pdf
FICHA TECNICA PRODUCTOS CONGELADOS EMBALAJE.pdfFICHA TECNICA PRODUCTOS CONGELADOS EMBALAJE.pdf
FICHA TECNICA PRODUCTOS CONGELADOS EMBALAJE.pdf
jesus869159
 
muros de contencion, diseño y generalidades
muros de contencion, diseño y generalidadesmuros de contencion, diseño y generalidades
muros de contencion, diseño y generalidades
AlejandroArturoGutie1
 
METODOLOGIA DE TRAZO Y REPLANTEO EN TOPOGRAFIA
METODOLOGIA DE TRAZO Y REPLANTEO EN TOPOGRAFIAMETODOLOGIA DE TRAZO Y REPLANTEO EN TOPOGRAFIA
METODOLOGIA DE TRAZO Y REPLANTEO EN TOPOGRAFIA
LuisCiriacoMolina
 
DIAGRAMA ELECTRICOS y circuito electrónicos
DIAGRAMA ELECTRICOS y circuito electrónicosDIAGRAMA ELECTRICOS y circuito electrónicos
DIAGRAMA ELECTRICOS y circuito electrónicos
LuisAngelGuarnizoBet
 
chancadoras.............................
chancadoras.............................chancadoras.............................
chancadoras.............................
ssuser8827cb1
 
Dosificacion de hormigon NCH 170 actualizada
Dosificacion de hormigon NCH 170 actualizadaDosificacion de hormigon NCH 170 actualizada
Dosificacion de hormigon NCH 170 actualizada
pipex55
 
Focos SSO Fin de Semana del 31 MAYO A al 02 de JUNIO de 2024.pdf
Focos SSO Fin de Semana del 31 MAYO A  al 02 de JUNIO  de 2024.pdfFocos SSO Fin de Semana del 31 MAYO A  al 02 de JUNIO  de 2024.pdf
Focos SSO Fin de Semana del 31 MAYO A al 02 de JUNIO de 2024.pdf
PatoLokooGuevara
 
PPT suelos ensayo Proctor - laboratorio 4.pdf
PPT suelos ensayo Proctor - laboratorio 4.pdfPPT suelos ensayo Proctor - laboratorio 4.pdf
PPT suelos ensayo Proctor - laboratorio 4.pdf
EgorRamos1
 
Rinitis alérgica-1.pdfuhycrbibxgvyvyjimomom
Rinitis alérgica-1.pdfuhycrbibxgvyvyjimomomRinitis alérgica-1.pdfuhycrbibxgvyvyjimomom
Rinitis alérgica-1.pdfuhycrbibxgvyvyjimomom
DanielaLoaeza5
 
Las operaciones básicas en la construcción.
Las operaciones básicas en la construcción.Las operaciones básicas en la construcción.
Las operaciones básicas en la construcción.
MaraManuelaUrribarri
 
Cálculo del espesor del conducto forzado
Cálculo del espesor del conducto forzadoCálculo del espesor del conducto forzado
Cálculo del espesor del conducto forzado
KristianSaavedra
 
Informe Municipal provincial de la ciudad de Tacna
Informe Municipal provincial de la ciudad de TacnaInforme Municipal provincial de la ciudad de Tacna
Informe Municipal provincial de la ciudad de Tacna
BrusCiriloPintoApaza
 
380378757-velocidades-maximas-y-minimas-en-los-canales.pdf
380378757-velocidades-maximas-y-minimas-en-los-canales.pdf380378757-velocidades-maximas-y-minimas-en-los-canales.pdf
380378757-velocidades-maximas-y-minimas-en-los-canales.pdf
DiegoAlexanderChecaG
 

Último (20)

Infografia de operaciones basicas de la construccion.pdf
Infografia de operaciones basicas de la construccion.pdfInfografia de operaciones basicas de la construccion.pdf
Infografia de operaciones basicas de la construccion.pdf
 
Ducto Barras para instalaciones electricas
Ducto Barras para instalaciones electricasDucto Barras para instalaciones electricas
Ducto Barras para instalaciones electricas
 
DIAPOSITIVA DE LA NORMA ISO 22000 EXPOSICI�N.pptx
DIAPOSITIVA DE LA NORMA ISO 22000 EXPOSICI�N.pptxDIAPOSITIVA DE LA NORMA ISO 22000 EXPOSICI�N.pptx
DIAPOSITIVA DE LA NORMA ISO 22000 EXPOSICI�N.pptx
 
Infografía de operaciones básicas....pdf
Infografía de operaciones básicas....pdfInfografía de operaciones básicas....pdf
Infografía de operaciones básicas....pdf
 
1. Introduccion a las excavaciones subterraneas (1).pdf
1. Introduccion a las excavaciones subterraneas (1).pdf1. Introduccion a las excavaciones subterraneas (1).pdf
1. Introduccion a las excavaciones subterraneas (1).pdf
 
tipos de energias: la Energía Radiante.pdf
tipos de energias: la Energía Radiante.pdftipos de energias: la Energía Radiante.pdf
tipos de energias: la Energía Radiante.pdf
 
Infografía operaciones básicas construcción .pdf
Infografía operaciones básicas construcción .pdfInfografía operaciones básicas construcción .pdf
Infografía operaciones básicas construcción .pdf
 
FICHA TECNICA PRODUCTOS CONGELADOS EMBALAJE.pdf
FICHA TECNICA PRODUCTOS CONGELADOS EMBALAJE.pdfFICHA TECNICA PRODUCTOS CONGELADOS EMBALAJE.pdf
FICHA TECNICA PRODUCTOS CONGELADOS EMBALAJE.pdf
 
muros de contencion, diseño y generalidades
muros de contencion, diseño y generalidadesmuros de contencion, diseño y generalidades
muros de contencion, diseño y generalidades
 
METODOLOGIA DE TRAZO Y REPLANTEO EN TOPOGRAFIA
METODOLOGIA DE TRAZO Y REPLANTEO EN TOPOGRAFIAMETODOLOGIA DE TRAZO Y REPLANTEO EN TOPOGRAFIA
METODOLOGIA DE TRAZO Y REPLANTEO EN TOPOGRAFIA
 
DIAGRAMA ELECTRICOS y circuito electrónicos
DIAGRAMA ELECTRICOS y circuito electrónicosDIAGRAMA ELECTRICOS y circuito electrónicos
DIAGRAMA ELECTRICOS y circuito electrónicos
 
chancadoras.............................
chancadoras.............................chancadoras.............................
chancadoras.............................
 
Dosificacion de hormigon NCH 170 actualizada
Dosificacion de hormigon NCH 170 actualizadaDosificacion de hormigon NCH 170 actualizada
Dosificacion de hormigon NCH 170 actualizada
 
Focos SSO Fin de Semana del 31 MAYO A al 02 de JUNIO de 2024.pdf
Focos SSO Fin de Semana del 31 MAYO A  al 02 de JUNIO  de 2024.pdfFocos SSO Fin de Semana del 31 MAYO A  al 02 de JUNIO  de 2024.pdf
Focos SSO Fin de Semana del 31 MAYO A al 02 de JUNIO de 2024.pdf
 
PPT suelos ensayo Proctor - laboratorio 4.pdf
PPT suelos ensayo Proctor - laboratorio 4.pdfPPT suelos ensayo Proctor - laboratorio 4.pdf
PPT suelos ensayo Proctor - laboratorio 4.pdf
 
Rinitis alérgica-1.pdfuhycrbibxgvyvyjimomom
Rinitis alérgica-1.pdfuhycrbibxgvyvyjimomomRinitis alérgica-1.pdfuhycrbibxgvyvyjimomom
Rinitis alérgica-1.pdfuhycrbibxgvyvyjimomom
 
Las operaciones básicas en la construcción.
Las operaciones básicas en la construcción.Las operaciones básicas en la construcción.
Las operaciones básicas en la construcción.
 
Cálculo del espesor del conducto forzado
Cálculo del espesor del conducto forzadoCálculo del espesor del conducto forzado
Cálculo del espesor del conducto forzado
 
Informe Municipal provincial de la ciudad de Tacna
Informe Municipal provincial de la ciudad de TacnaInforme Municipal provincial de la ciudad de Tacna
Informe Municipal provincial de la ciudad de Tacna
 
380378757-velocidades-maximas-y-minimas-en-los-canales.pdf
380378757-velocidades-maximas-y-minimas-en-los-canales.pdf380378757-velocidades-maximas-y-minimas-en-los-canales.pdf
380378757-velocidades-maximas-y-minimas-en-los-canales.pdf
 

Microcontroladores: Introducción al AVR Studio

  • 1. DEPARTAMENTO DE TECNOLOGÍA ELECTRÓNICA ESCUELA TÉCNICA SUPERIOR DE INGENIERÍA INFORMÁTICA Introducción a AVR-STUDIO Microprocesadores 1.Introducción y objetivos Los objetivos de la sesión de laboratorio son los siguientes: ▪Introducir el entorno de programación y depuración de microcontroladores de ATMEL1 llamado AVR-STUDIO. ▪Realizar la simulaciones de programas escritos en lenguaje ensamblador para el microcontrolador ATMEGA328P. ▪Depuración de programas con el AVR Simulator. ▪Estudiar los procesos para la programación del microcontrolador del Arduino Duemilanove usando la plataforma AVR-DRAGON. ▪Realizar la programación, depuración de programas y control del microcontrolador desde AVR-STUDIO. AVR-STUDIO puede descargarse gratuitamente de desde las páginas del fabricante de ATMEL en http://www.atmel.com. 2.Estudio teórico Se deben realizar tres programas en lenguaje ensamblador. En el primero se pide desarrollar un programa que permita el cálculo sobre un conjunto de elementos almacenados en la SRAM. Los dos restantes requieren el manejo de la entrada-salida y se detallarán a continuación. 1.Programa MEDIANA: Realizar un programa en ensamblador que permita calcular la MEDIANA a una tabla de bytes con signo que se ubica a partir de la dirección tabla de la SRAM. El resultado se guarda en la SRAM a continuación de la tabla. Para la realización de este programa el alumno deberá, primero, desarrollar una subrutina que permita ordenar la tabla siguiendo el algoritmo que se muestra a continuación. 1 Fabricante de microcontroladores, más información en http:/ /www.atmel.com
  • 2. Estructura de Computadores 2 Código 1. Pseudocódigo del programa ordena La mediana se calcula busca el elemento central de la tabla ordenada. Si el número de elementos de la tabla es impar, la mediana es el valor que se encuentra en la mitad de la tabla, pero si el número de elementos es par, la mediana se obtiene como el valor medio de los dos valores centrales de la tabla. Complete la plantilla que se muestra a continuación. .include "m168def.inc" .equ TAMTABLA=..... //Tamaño de la tabla. .def Temp=r16 .cseg .org 0 call IniciaTabla //Esta llamada carga la tabla de la EEPROM a la SRAM call Mediana fin: jmp fin //Para terminar Mediana: call Ordena /* Aquí va el programa Mediana */ Ordena: /*Aquí va el programa de ordenación */ ........ IniciaTabla: push r0 push temp push yl push yh push zl push zh ldi zl, low(2*TablaEeprom) Num_Rep ←TamTabla Repetir X ← DirecciónTabla Y ← DirecciónTabla+1 Num_Rep ← Num_Rep -1 Cont ← Num_Rep Ordenado ← 0 Repetir a ← (X) b ← (Y) si (a < b) (X) ← b (Y) ← a Ordenado ← 1 fsi X ← X +1 Y ← Y +1 Cont ← Cont -1 Mientras ( Cont > 0) Mientras (Ordenado == 1)
  • 3. Estructura de Computadores 3 ldi zh, high(2*TablaEeprom) ldi yl, low(Tabla) ldi yh, high(Tabla) ldi temp,TAMTABLA loop: lpm r0,Z+ st Y+,r0 subi temp,1 brne loop pop zh pop zl pop yh pop yl pop temp pop r0 ret TablaEeprom: .db 10, 4, -1, 0 , 0, 6, 3, 10, 100, -100, 24, 23, -56, 4, 15, 16 ;Modifique los datos .dseg .org $100 Tabla: .byte TamTabla //Reservamos 10 bytes para los datos. . Código 2. Código del programa Mediana. 2. Conmutadores. Se pretende realizar un programa que permita manejar los puertos de entrada salida. En concreto, se trata de activar los leds cuando se pulsa un conmutador. En el esquema de la figura 9 aparecen dos leds y dos conmutadores que debe operar de la siguiente forma: cuando se pulse el conmutador conectado a PC5 debe encenderse el led conectado a PC2 y mantenerse encendido hasta que se vuelva a pulsar el conmutador. Además, al pulsar el conmutador conectado a PC4 se encenderá el led conectado a PC3 y permanecerá encendido hasta que se pulse nuevamente el conmutador. La tabla 1 muestra los puertos y los bits asociados a los componentes así como la configuración necesaria para que operen correctamente. Puerto Bit Componente Configuración Funcionamiento PORTC 2 Led Como salida DDRC2=1 PC2=0 ⇒ apagado PC2=1 ⇒ encendido PORTC 3 Led Como salida DDRC3=1 PC3=0 ⇒ apagado PC3=1 ⇒ encendido PORTC 4 Conmutador Como entrada DDRC4=0 PC4=1 ⇒ no pulsado PC4=0 ⇒ pulsado PORTC 5 Conmutador Como entrada DDRC5=0 PC5=1 ⇒ no pulsado PC5=0 ⇒ pulsado Tabla 1. Configuración de los puertos e/s de los leds y conmutadores Utilizando el la plantilla de código (fichero conmutadores.asm) debe realizar la siguientes tareas: 1.Cree un nuevo proyecto utilizando el código suministrado en el fichero conmutadores.asm y complete el programa. 2.Utilice el simulador para comprobar que funciona correctamente. Debe conmutar manualmente los pines PC4 y PC5
  • 4. Estructura de Computadores 4 desde el simulador. Esto se consigue desplegando el puerto C en árbol de dispositivos que muestra el AVR-STUDIO en la parte derecha durante la simulación y pulsando el botón del ratón sobre el cuadro que representa el bit correspondiente. Cuando el cuadro está relleno de color negro significara que el bit está a 1, si está en blanco es 0. 3.Una vez comprobado en el simulador el correcto funcionamiento, repita los pasos realizados en la sección 11 para programar el microcontrolador con este nuevo programa. Compruebe que funciona correctamente pulsando los conmutadores. 3. Programa contador de pulsaciones. El nuevo programa a completar debe contar el número de pulsaciones de un conmutador y mostrarlo en el display 7 segmentos. Habrá que completar tres fragmentos de código; el primero es la inicialización correcta de los puertos, el segundo es una subrutina que crea una tabla en memoria con el código 7 segmentos y, el tercero es el programa principal. La tabla 2 muestra la información de los componentes de entrada/salida que se usarán. Se incluyen los puertos, los bits asociados a los componentes así como la configuración necesaria para que operen correctamente. Puerto Bit Componente Configuración Funcionamiento PORTD 0-7 Segmentos de los displays Como salida DDRD=0xFF; PORTDX=0 ⇒ apagado PORTDX=1 ⇒ encendido PORTB 0 Display 0 Como salida DDRB0=1 PORTB0=1 ⇒ apagado PORTB0=0 ⇒ encendido PORTB 1 Display 1 Como salida DDRB1=1 PORTB1=1 ⇒ apagado PORTB1=0 ⇒ encendido Tabla 2. Configuración de los puertos e/s de los displays 7 segmentos. Utilizando el fichero contador_bcd.asm mostrado en el listado de código 3 debe realizar las siguientes tareas: 1.Completar la subrutina de inicialización de puertos llamada inicializa_puertos. Puede utilizar como ejemplo de inicialización la utilizada en el programa de la sección anterior (listado de código ). Debe inicializar los puertos con la siguiente configuración: 1.1.En el puerto C los pines 3 y 2 deben ser salidas, el resto deben ser entradas 1.2.El puerto D está conectado a los segmentos del display, deben ser todos salida. 1.3.El puerto B controla el encendido o apagado completo de cada uno de los dos displays. Debe configurarlo como salida, así, poniendo un 1 en PORTB0 se activará el display 0 y poniendo un 1 en PORTB1 se activará el display 1. 2.Completar la subrutina que crea una tabla para el convertidor de 7 segmentos llamada inicializa_tabla7seg. Esta tabla contiene los códigos 7 segmentos de los dígitos 0 – 9. Al escribir un elemento de esta tabla en el puerto D aparecerá un número BCD en los displays. Como ejemplo se muestran 2 números, donde se puede observar la correspondencia de los bits a uno con la activación de los segmentos mostrados en la figura 12. Complete los números que faltan, del 2 al 9. 3.El bucle principal del programa comienza a partir de la etiqueta bucle. Aquí debe escribir el programa que cuente las pulsaciones detectadas en un conmutador. El programa se puede realizar siguiendo estos pasos: 3.1.Escribir un bucle que espere hasta detectar que el conmutador se ha pulsado. Un valor 1 en el p correspondiente al conmutador indica que se ha pulsado. 3.2.Tras detectar la pulsación hay que incrementar el contador en 1 3.3.Comprobar si el contador ha llegado a 10 para ponerlo de nuevo a cero.
  • 5. Estructura de Computadores 5 3.4.Esperar en un bucle hasta que se suelte en botón, fíjese que este fragmento de código ya está hecho y corresponde a la etiqueta espera. 4.Construya el programa y programe el microcontrolador para comprobar si funciona. Si no opera correctamente puede utilizar el simulador para detectar los errores. Tenga en cuenta que a veces existen problemas de rebotes en los conmutadores, esto significa que, al pulsar una vez el conmutador se detectan varias pulsaciones y el valor mostrado en el display se incrementa en más de una unidad. .include "m328pdef.inc" .def temp = r16 /* Define un registro para uso temporal se ha utilizado el r16 para poder emplear los modos con direccionamiento indirecto.*/ .def contador = r17 // Cuenta el número de pulsaciones .def cero= r18 .dseg .org $100 TABLA7SEG: .byte 10 // Se reservan 10 bytes para una tabla de valores del convertidor bin7seg .cseg .org $0 rcall inicializa_puertos // Rutina que inicializa los puertos rcall inicializa_tabla7seg // Rutina que inicializa la tabla del convertidor bucle: // Programa principal rcall display // Representamos el valor de contador en el display /* Aquí debe escribir el programa que haga lo siguiente: 1. Esperar hasta que se pulse un pulsador 2. Si se pulsa el pulsador incrementar el contador 3. Si el contador llega a 10 hay que ponerlo a cero */ inicializa_puertos: // Aquí debe configurar portc[3:2] como salidas y el resto como entradas ... // Aquí debe configurar puerto D y el puerto B completo como salida out portc,temp // Se Activan las resistencias de pull-up del portc[1:0] y apaga leds ldi temp,$ff ret /* La siguiente rutina inicializa la tabla de 7 segmentos. Esta rutina sería innecesaria si se hubiera utilizado la memoria de programa para almacenarla */ inicializa_tabla7seg: ldi zh,high(TABLA7SEG) // Utilizamos Z para apuntar a la tabla ldi zl,low(TABLA7SEG) // low() high() son directivas que devuelven el byte bajo o // el byte alto de la dirección que se le pasa como // argumento respectivamente ldi temp,0b01111110 //Código 7 segmentos del 0 st z+,temp ldi temp,0b00110000 //Código 7 segmentos del 1 st z+,temp /* Aquí debe completar los códigos de los dígitos que faltan: del 2 al 9 */ ... ret /* La siguiente rutina permite representar un número en el display de 7 segmentos. Utiliza para ello el registro Z, que inicialmente apunta a la tabla de 7 segmentos. A este registro se le suma Cont que es una variable entre 0 y 9 y, después, mediante acceso indirecto se carga el código 7 segmentos correspondiente en el puerto.*/ display:
  • 6. Estructura de Computadores 6 ldi zh,high(TABLA7SEG) ldi zl,low(TABLA7SEG) add zl,contador // El registro Z es de 16 bits, mientras que contador es de 8 adc zh,cero // No olvidar sumar el acarreo que se genera del byte bajo a ZH ld temp,z out portd,temp sbi portb,1 // Apaga el display 1 cbi portb,0 // Activa el display 0 ret Código 3. Fichero contador_bcd.asm, plantilla de código para el contador BCD. 3.Estudio experimental En el estudio experimental deberá probar y mostrar el funcionamiento de todos los programas solicitados en el estudio teórico. Para ello deberá utilizar el AVRSTUDIO cuyo tutorial se muestra a continuación. 3.1.Introducción a AVR-STUDIO Se utilizarán los programas realizados en el estudio teórico en el entorno de desarrollo AVR-STUDIO. Los pasos para crear un proyecto nuevo y poder escribir el código del programa se detalla a continuación en esta sección. Una vez iniciado AVR STUDIO aparece un asistente para creación o apertura de un nuevo proyecto tal y como se muestra en la figura 1. Si no apareciera el asistente hay que acceder al menú Project y seleccionar la opción Project Wizard. Figura 1. Asistente para creación o apertura de un proyecto. Se debe seleccionar un nuevo proyecto (botón New Project) y aparecerá el siguiente diálogo del asistente (figura 3) donde, habrá que indicar el nombre del proyecto, el directorio y seleccionar la opción Atmel AVR Assembler. Antes de pulsar el botón Next seleccione adecuadamente la opción Create initial file, tiene dos opciones, seleccionar o no seleccionar dicha opción (observe la marca roja en la figura 2): 1.Si no selecciona esta opción, el proyecto se creará sin ningún archivo de texto asociado. Esto le permite posteriormente utilizar un fichero de texto que tenga en si disco con el programa ya escrito. De esta forma evita tener que teclear el programa de nuevo 2.Si lo selecciona, se creará un nuevo fichero vacío en el que deberá teclear el programa. Si ya trae el programa escrito en otro fichero tendrá que copiar y pegar el código desde el bloc de notas a AVR-STUDIO.
  • 7. Estructura de Computadores 7 Figura 2. Selección de tipo y nombre de proyecto. Tras escoger la opción que le interese en cada caso, tras pulsar el botón Next aparecerá la última ventana de asistente. Aquí debe seleccionar las opciones AVR Simulator y ATMega328P tal y como se muestra en la figura 3. Figura 3. Selección de tipo y nombre de proyecto. En caso de no haber seleccionado la opción Create initial file tendrá un proyecto vacío al que hay que añadir un programa previamente escrito en un fichero. Para realizar esto, hay que utilizar el botón derecho del ratón en la raíz del árbol de proyecto y aparecerá un menú flotante como el mostrado en la figura 4. Con la opción Add files to project podemos seleccionar del disco el fichero con el programa en ensamblador que se desee. Figura 4.Añadir ficheros al proyecto. Tras estos pasos aparece en el árbol de proyecto el nombre del fichero ensamblador sobre el que trabajar. Pulsando con el ratón dos veces sobre este nombre del fichero aparece una ventana en la que puede editar el código ensam- blador del programa. Una vez se ha terminado de escribir el programa hay que realizar el ensamblado del código. Este paso se realiza en
  • 8. Estructura de Computadores 8 menú Build opción Build también puede utilizar el icono de la barra de herramientas. Si todo es correcto debe aparecer en la parte inferior información referente al programa compilado: AVRASM: AVR macro assembler 2.1.42 (build 1796 Sep 15 2009 10:48:36) Copyright (C) 1995-2009 ATMEL Corporation F:EdCtema4practicassolsuma.asm(2): Including file 'C:Archivos de programaAtmelAVR ToolsAvrAssembler2Appnotesm168def.inc' F:EdCtema4practicassolsuma.asm(88): No EEPROM data, deleting C:Documents and SettingspdiMis documentosedcedc.eep ATmega168 memory use summary [bytes]: Segment Begin End Code Data Used Size Use% --------------------------------------------------------------- [.cseg] 0x000000 0x00005e 78 16 94 16384 0.6% [.dseg] 0x000100 0x000110 0 16 16 1024 1.6% [.eseg] 0x000000 0x000000 0 0 0 512 0.0% Assembly complete, 0 errors. 0 warnings Código 4. Salida de la construcción del programa suma. En caso de producirse errores, en la ventana inferior aparecerá el número de línea del programa donde está el error. 3.1.1.Ejecución en el simulador del programa AVR-STUDIO incluye un simulador con el cual se puede visualizar el estado del microcontrolador durante la ejecución de un programa. Entre las diversas opciones que ofrece el simulador nos centraremos en la posibilidad de ejecutar instrucción a instrucción un programa y la posibilidad de ejecutar un programa hasta que llegue a una instrucción determinada. Para comenzar la simulación del programa hay que acceder al menú Debug y utilizar la opción Start Debugging. Tras esto aparecen diferentes ventanas (ver figura 5) que componen el simulador: ▪Ventana del Procesador: Situada en la parte izquierda, muestra el estado interno de procesador (Frecuencia, contador de ciclos del reloj) y el contenido de los registros: PC, SP, X, Y, Z, SREG y los 32 registros internos. ▪Ventana de dispositivos de E/S: Situada en la parte superior derecha, muestra en forma de árbol todos los dispositivos que tiene el microcontrolador seleccionado. ▪Ventana de visualización de Memoria: Situada en la parte inferior derecha, permite ver en tiempo real el contenido de la memoria del microcontrolador. Se puede seleccionar entre memoria de programa, memoria SRAM y EEPROM. Principalmente interesará ver el contenido de la memoria SRAM a partir de la dirección $100. Se debe recordar que hasta la dirección $99 están mapeados los periféricos, por lo que no se debe usar como espacio de almacenamiento para los programas
  • 9. Estructura de Computadores 9 FFigura 5. Visión global del modo de depuración de AVR-STUDIO. El simulador permite la ejecución instrucción a instrucción del programa. El indicador situado en la parte izquierda indica la siguiente instrucción que se ejecutará. En el menú Debug (figura 6) se pueden encontrar diversas acciones útiles durante la simulación. En la ejecución paso a paso las funciones más utilizadas son: ▪Step Over: (icono ) Ejecuta instrucciones hasta la siguiente línea, en caso de ser una llamada a una subrutina, la ejecuta completamente para avanzar a la siguiente línea de código. ▪Step Into: (icono ) Ejecuta una instrucción, en caso se existir una llamada a subrutina, realiza la llamada y se sitúa en la primera instrucción de la subrutina. ▪Step Out: (icono ) Ejecuta instrucciones hasta encontrar una instrucción de retorno de subrutina. ▪Reset: (icono ) Reinicia la simulación y sitúa la ejecución en la primera instrucción del programa. ▪Toogle Breakpoint: (icono ) Establece un punto de ruptura de ejecución. Cuando se ejecute el comando Run (icono ), el programa se ejecutará hasta encontrar algún punto de ruptura. ▪Run to Cursor: (icono ) Ejecuta instrucciones hasta la instrucción en la que está el cursor. Figura 6.Menú de depuración.
  • 10. Estructura de Computadores 10 3.1.2.Ejecución en el simulador del programa Se recuerda que AVR-STUDIO incluye un simulador con el cual se puede visualizar el estado del microcontrolador durante la ejecución de un programa. Para comenzar la simulación del programa hay que acceder al menú Debug y utilizar la opción Start Debugging. Tras esto aparecen diferentes ventanas (ver figura 7) que componen el simulador: ▪Ventana del Procesador: Situada en la parte izquierda, muestra el estado interno de procesador (Frecuencia, contador de ciclos del reloj) y el contenido de los registros: PC, SP, X, Y, Z, SREG y los 32 registros internos. ▪Ventana de dispositivos de E/S: Situada en la parte superior derecha, muestra en forma de árbol todos los dispositivos que tiene el microcontrolador seleccionado. En esta primera práctica de debe seleccionar el puerto C, de igual modo que se ha seleccionado la en la figura 7. De esta forma se visualizan los tres registros que forman el puerto. ▪Ventana de visualización de Memoria: Situada en la parte inferior derecha, permite ver en tiempo real el contenido de la memoria del microcontrolador. Se puede seleccionar entre memoria de programa, memoria SRAM y EEPROM. Principalmente interesará ver el contenido de la memoria SRAM a partir de la dirección $100. Para comprobar el funcionamiento del programa se debe realizar la ejecución paso a paso observando como cambian los valores de los registros y puertos. Hay que desplegar los registros en la ventana del procesador y puertos en la ventana de E/S para visualizar los registros del puerto. Figura 7. Visión global del modo de depuración de AVR-STUDIO. A continuación inicie la simulación con Start Debugging y ejecute paso a paso el programa del estudio teórico. Puede utilizar la tecla F10 para no tener que utilizar los menús. Compruebe que su programa opera correctamente.
  • 11. Estructura de Computadores 11 3.1.3.Programación del microcontrolador El siguiente paso consiste en la programación con el programador AVR-DRAGON (figura 8a) de un microcontrolador ATMEGA328P en una placa Arduino (figura 8b). El entorno de pruebas utilizado en esta sesión de laboratorio está formada por tres componentes: programador AVR-DRAGON, placa de prototipo Arduino Duemilanove y placa de expansión para Arduino con componentes E/S. La placa de expansión mostrada en la figura 9 está conectada a la placa Arduino, quedando ocultos todos los componentes del Arduino. En la placa de expansión están disponibles todos los puertos del microcontrolador en los laterales de la placa, además, estos puertos también están conectados a diversos componentes como son, leds, displays, conmutadores, etc. Estos componentes se utilizarán posteriormente para realizar programas que controlen la entrada/salida. En primer lugar se deben conectar ambas placas a los conectores USB. No es necesaria ninguna alimentación adicional ya utilizan los 5V suministrados por el Bus USB. Tras la conexión USB puede aparecer en el ordenador algún cuadro de diálogo indicando que se ha encontrado nuevo hardware. Si esto ocurriera, debe instalar los controladores, no cancele la instalación o tendrá problemas de programación del microcontrolador. La placa AVR-DRAGON dispone de dos leds, inicialmente se iluminan uno en verde y otro en rojo. El led de color rojo cambiará de color indicando el estado de la comunicación con AVR-STUDIO. La tabla 3 muestra el significado de los diferentes colores de dicho led, debemos observarlo durante los siguientes pasos para detectar posibles problemas en la programación del microcontrolador. Color Descripción Rojo En reposo, no hay conexión con AVR Studio Apagado En reposo, conectado a AVR Studio Verde Transfiriendo datos Amarillo Inicialización o actualización del firmware Tabla 3. Indicaciones del led de AVR-DRAGON. Antes de realizar la programación se debe verificar la correcta configuración de AVR-STUDIO realizando una prueba de conexión con el microcontrolador. Accediendo al menú Tools hay que usar el submenú Program AVR y, opción Connect. Aparecerá el diálogo mostrado en la figura 10. Alternativamente, dicho diálogo se puede obtener de manera directa utilizando el botón de la barra de herramientas.
  • 12. Estructura de Computadores 12 (a) (b) Figura 8.a) Placa de desarrollo Arduino b) Programador/Depurador AVR-DRAGON. (a) (b) Figura 9.a) Placa de expansión E/S para Arduino. b) Detalle de conexión de los segmentos a los puertos. PD6 PD0 PD7 PD5 PD4 PD3 PD2 PD1 GND PB0 A REF PB5 PB4 PB3 PB2 PB1 PC4 PC3 PC2 PC1 PC0 PC5 Led conectado A PB5
  • 13. Estructura de Computadores 13 En este diálogo hay que establecer la configuración indicada en la figura 10: plataforma AVR-DRAGON y puerto USB. Tras pulsar el botón Connect, si la conexión es correcta, debe aparecer automáticamente el diálogo mostrado en la figura 11 y el led rojo de AVR-DRAGON se apagará. Figura 10. Selección del programador y el puerto En caso de no aparecer automáticamente el dialogo de la figura 11 se puede utilizar el botón de la barra de herramien- tas o, la opción de menú Tools submenú Program AVR. Tras esto finalmente aparecerá la ventana mostrada en la figura 11. De las múltiples pestañas que contiene sólo utilizaremos la primera y segunda: Main y Program. En primer lugar se realizará una prueba de comunicación siguiendo estos pasos: 1.Seleccionar la pestaña Main. 2.Seleccionar el microcontrolador correcto del cuadro desplegable indicado con Device and Signature Bytes. En estas placas disponemos del microcontrolador ATMega328P. 3.Pulsar el botón Read Signature. El programa debe responder con el texto Signature matches selected device. Si respondiera con un error, se debe volver a desplegar el cuadro selector de microcontrolador, seleccionar el correcto, y volver a realizar el test de comunicación. Figura 11. Pestaña principal de la ventana de programación del microcontrolador. El siguiente paso consiste en realizar la programación del microcontrolador con el código que se ha ensamblado, para ello, seleccione la pestaña Program. Si el ensamblado se realizó con éxito habrá generado un fichero con extensión
  • 14. Estructura de Computadores 14 .hex dentro del directorio del proyecto y con el nombre del proyecto. En la figura 12 se muestra el diálogo de programación donde hay que seleccionar el fichero .hex. Este diálogo tiene tres cuadros donde se puede seleccionar un fichero: Flash, EEPROM y ELF. Hay que utilizar la sección sección Flash y el botón de selección de fichero (indicado con la flecha roja en la figura 12). Tras esto basta con pulsar el botón Program para realizar la programación del microcontrolador. Figura 12. Pestaña de programación de la ventana de programación del microcontrolador. 4. Ejercicio evaluable Para optar a evaluación alternativa, los alumnos deberán obtener una calificación de APTO en la parte obligatoria de esta práctica y demostrar en el laboratorio que se ha desarrollado el ejercicio que se detalla a continuación: Se desea desarrollar un programa que permita contar segundos y mostrarlos en un display de 7 segmentos. Para ello el alumno deberá utilizar el Timer1 en modo CTC para que éste genere interrupciones de forma periódica. El contenido del TCNT1 como la selección del prescaler deberá escogerse de tal forma que se minimice el error cometido en la cuenta de los segundos. La frecuencia del oscilador del ATMEGA328P es de 1Mhz.