Está en la página 1de 14

DEPARTA M ENTO DE TE CNOLOG A EL E CTRNICA

ESCUEL A TCNICA SUPERIOR DE INGENIER A INFOR M TICA

Introduccin a AVR-STUDIO
Microprocesadores

1.Introduccin y objetivos
Los objetivos de la sesin de laboratorio son los siguientes: Introducir el entorno de programacin y depuracin de microcontroladores de ATMEL1 llamado AVR-STUDIO. Realizar la simulaciones de programas escritos en lenguaje ensamblador para el microcontrolador ATMEGA328P. Depuracin de programas con el AVR Simulator. Estudiar los procesos para la programacin del microcontrolador del Arduino Duemilanove usando la plataforma AVR-DRAGON. Realizar la programacin, depuracin de programas y control del microcontrolador desde AVR-STUDIO. AVR-STUDIO puede descargarse gratuitamente de desde las pginas del fabricante de ATMEL en

http://www.atmel.com.

2.Estudio terico
Se deben realizar tres programas en lenguaje ensamblador. En el primero se pide desarrollar un programa que permita el clculo sobre un conjunto de elementos almacenados en la SRAM. Los dos restantes requieren el manejo de la entrada-salida y se detallarn a continuacin. 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 direccin tabla de la SRAM. El resultado se guarda en la SRAM a continuacin de la tabla. Para la realizacin de este programa el alumno deber, primero, desarrollar una subrutina que permita ordenar la tabla siguiendo el algoritmo que se muestra a continuacin.

Fabricante de microcontroladores, ms informacin en http:/ /www.atmel.com

Estructura de Computadores

Num_Rep TamTabla Repetir X DireccinTabla Y DireccinTabla+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)

Cdigo 1. Pseudocdigo del programa ordena

La mediana se calcula busca el elemento central de la tabla ordenada. Si el nmero de elementos de la tabla es impar, la mediana es el valor que se encuentra en la mitad de la tabla, pero si el nmero 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 continuacin.

.include "m168def.inc" .equ TAMTABLA=..... .def Temp=r16 .cseg .org 0 call call fin: jmp fin Ordena IniciaTabla Mediana //Para terminar //Esta llamada carga la tabla de la EEPROM a la SRAM //Tamao de la tabla.

Mediana: call

/* Aqu va el programa Mediana */ Ordena: /*Aqu va el programa de ordenacin */ ........ IniciaTabla: push r0 push temp push yl push yh push zl push zh ldi zl, low(2*TablaEeprom)

Estructura de Computadores

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.

Cdigo 2. Cdigo 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. Adems, 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 configuracin necesaria para que operen correctamente.

Puerto PORTC PORTC PORTC PORTC

Bit 2 3 4 5

Componente Led Led Conmutador Conmutador

Configuracin Como salida DDRC2=1 Como salida DDRC3=1 Como entrada DDRC4=0 Como entrada DDRC5=0

Funcionamiento PC2=0 apagado PC2=1 encendido PC3=0 apagado PC3=1 encendido PC4=1 no pulsado PC4=0 pulsado PC5=1 no pulsado PC5=0 pulsado

Tabla 1. Configuracin de los puertos e/s de los leds y conmutadores

Utilizando el la plantilla de cdigo (fichero conmutadores.asm) debe realizar la siguientes tareas: 1.Cree un nuevo proyecto utilizando el cdigo 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

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 simulacin y pulsando el botn del ratn 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 seccin 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 nmero de pulsaciones de un conmutador y mostrarlo en el display 7 segmentos. Habr que completar tres fragmentos de cdigo; el primero es la inicializacin correcta de los puertos, el segundo es una subrutina que crea una tabla en memoria con el cdigo 7 segmentos y, el tercero es el programa principal. La tabla 2 muestra la informacin de los componentes de entrada/salida que se usarn. Se incluyen los puertos, los bits asociados a los componentes as como la configuracin necesaria para que operen correctamente.

Puerto PORTD PORTB PORTB

Bit 0-7 0 1

Componente Segmentos de los displays Display 0 Display 1

Configuracin Como salida DDRD=0xFF; Como salida DDRB0=1 Como salida DDRB1=1

Funcionamiento PORTDX=0 apagado PORTDX=1 encendido PORTB0=1 apagado PORTB0=0 encendido PORTB1=1 apagado PORTB1=0 encendido

Tabla 2. Configuracin de los puertos e/s de los displays 7 segmentos.

Utilizando el fichero contador_bcd.asm mostrado en el listado de cdigo 3 debe realizar las siguientes tareas: 1.Completar la subrutina de inicializacin de puertos llamada inicializa_puertos. Puede utilizar como ejemplo de inicializacin la utilizada en el programa de la seccin anterior (listado de cdigo ). Debe inicializar los puertos con la siguiente configuracin: 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 cdigos 7 segmentos de los dgitos 0 9. Al escribir un elemento de esta tabla en el puerto D aparecer un nmero BCD en los displays. Como ejemplo se muestran 2 nmeros, donde se puede observar la correspondencia de los bits a uno con la activacin de los segmentos mostrados en la figura 12. Complete los nmeros 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 pulsacin 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

3.4.Esperar en un bucle hasta que se suelte en botn, fjese que este fragmento de cdigo 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 ms 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 nmero 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: rcall display // Programa principal // 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 ldi ret portc,temp // Se Activan las resistencias de pull-up del portc[1:0] y apaga leds temp,$ff

/* La siguiente rutina inicializa la tabla de 7 segmentos. Esta rutina sera 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 direccin que se le pasa como // argumento respectivamente ldi temp,0b01111110 //Cdigo 7 segmentos del 0 st z+,temp ldi temp,0b00110000 //Cdigo 7 segmentos del 1 st z+,temp /* Aqu debe completar los cdigos de los dgitos que faltan: del 2 al 9 */ ... ret /* La siguiente rutina permite representar un nmero 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, despus, mediante acceso indirecto se carga el cdigo 7 segmentos correspondiente en el puerto.*/ display:

Estructura de Computadores

ldi ldi add adc ld out sbi cbi ret

zh,high(TABLA7SEG) zl,low(TABLA7SEG) zl,contador // El registro Z es de 16 bits, mientras que contador es de 8 zh,cero // No olvidar sumar el acarreo que se genera del byte bajo a ZH temp,z portd,temp portb,1 // Apaga el display 1 portb,0 // Activa el display 0

Cdigo 3. Fichero contador_bcd.asm, plantilla de cdigo 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 terico. Para ello deber utilizar el AVRSTUDIO cuyo tutorial se muestra a continuacin.

3.1.Introduccin a AVR-STUDIO
Se utilizarn los programas realizados en el estudio terico en el entorno de desarrollo AVR-STUDIO. Los pasos para crear un proyecto nuevo y poder escribir el cdigo del programa se detalla a continuacin en esta seccin. Una vez iniciado AVR STUDIO aparece un asistente para creacin 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 opcin Project Wizard.

Figura 1. Asistente para creacin o apertura de un proyecto.

Se debe seleccionar un nuevo proyecto (botn New Project) y aparecer el siguiente dilogo del asistente (figura 3) donde, habr que indicar el nombre del proyecto, el directorio y seleccionar la opcin Atmel AVR Assembler. Antes de pulsar el botn Next seleccione adecuadamente la opcin Create initial file, tiene dos opciones, seleccionar o no seleccionar dicha opcin (observe la marca roja en la figura 2): 1.Si no selecciona esta opcin, el proyecto se crear sin ningn 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 vaco en el que deber teclear el programa. Si ya trae el programa escrito en otro fichero tendr que copiar y pegar el cdigo desde el bloc de notas a AVR-STUDIO.

Estructura de Computadores

Figura 2. Seleccin de tipo y nombre de proyecto.

Tras escoger la opcin que le interese en cada caso, tras pulsar el botn 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. Seleccin de tipo y nombre de proyecto.

En caso de no haber seleccionado la opcin Create initial file tendr un proyecto vaco al que hay que aadir un programa previamente escrito en un fichero. Para realizar esto, hay que utilizar el botn derecho del ratn en la raz del rbol de proyecto y aparecer un men flotante como el mostrado en la figura 4. Con la opcin Add files to project podemos seleccionar del disco el fichero con el programa en ensamblador que se desee.

Figura 4. Aadir ficheros al proyecto.

Tras estos pasos aparece en el rbol de proyecto el nombre del fichero ensamblador sobre el que trabajar. Pulsando con el ratn dos veces sobre este nombre del fichero aparece una ventana en la que puede editar el cdigo ensamblador del programa. Una vez se ha terminado de escribir el programa hay que realizar el ensamblado del cdigo. Este paso se realiza en

Estructura de Computadores men Build opcin Build tambin puede utilizar el icono

8 de la barra de herramientas. Si todo es correcto debe

aparecer en la parte inferior informacin 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:\EdC\tema4\practicas\solsuma.asm(2): Including file 'C:\Archivos de programa\Atmel\AVR Tools\AvrAssembler2\Appnotes\m168def.inc' F:\EdC\tema4\practicas\solsuma.asm(88): No EEPROM data, deleting C:\Documents and Settings\pdi\Mis documentos\edc\edc.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

Cdigo 4. Salida de la construccin del programa suma.

En caso de producirse errores, en la ventana inferior aparecer el nmero de lnea del programa donde est el error.

3.1.1.Ejecucin en el simulador del programa


AVR-STUDIO incluye un simulador con el cual se puede visualizar el estado del microcontrolador durante la ejecucin de un programa. Entre las diversas opciones que ofrece el simulador nos centraremos en la posibilidad de ejecutar instruccin a instruccin un programa y la posibilidad de ejecutar un programa hasta que llegue a una instruccin determinada. Para comenzar la simulacin del programa hay que acceder al men Debug y utilizar la opcin 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 visualizacin 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 direccin $100. Se debe recordar que hasta la direccin $99 estn mapeados los perifricos, por lo que no se debe usar como espacio de almacenamiento para los programas

Estructura de Computadores

FFigura 5. Visin global del modo de depuracin de AVR-STUDIO. El simulador permite la ejecucin instruccin a instruccin del programa. El indicador acciones tiles durante la simulacin. En la ejecucin paso a paso las funciones ms utilizadas son: Step Over: (icono ) Ejecuta instrucciones hasta la siguiente lnea, en caso de ser una llamada a una subrutina, la situado en la parte

izquierda indica la siguiente instruccin que se ejecutar. En el men Debug (figura 6) se pueden encontrar diversas

ejecuta completamente para avanzar a la siguiente lnea de cdigo. Step Into: (icono ) Ejecuta una instruccin, en caso se existir una llamada

a subrutina, realiza la llamada y se sita en la primera instruccin de la subrutina. Step Out: (icono retorno de subrutina. Reset: (icono ) Reinicia la simulacin y sita la ejecucin en la primera ) Ejecuta instrucciones hasta encontrar una instruccin de

instruccin del programa. Toogle Breakpoint: (icono ) Establece un punto de ruptura de ejecucin. ), el programa se ejecutar hasta

Cuando se ejecute el comando Run (icono encontrar algn punto de ruptura. Run to Cursor: (icono est el cursor.

) Ejecuta instrucciones hasta la instruccin en la que


Figura 6. Men de depuracin.

Estructura de Computadores

10

3.1.2.Ejecucin 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 ejecucin de un programa. Para comenzar la simulacin del programa hay que acceder al men Debug y utilizar la opcin 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 prctica 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 visualizacin 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 direccin $100. Para comprobar el funcionamiento del programa se debe realizar la ejecucin 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. Visin global del modo de depuracin de AVR-STUDIO.

A continuacin inicie la simulacin con Start Debugging y ejecute paso a paso el programa del estudio terico. Puede utilizar la tecla F10 para no tener que utilizar los mens. Compruebe que su programa opera correctamente.

Estructura de Computadores

11

3.1.3.Programacin del microcontrolador


El siguiente paso consiste en la programacin con el programador AVR-DRAGON (figura 8a) de un microcontrolador ATMEGA328P en una placa Arduino (figura 8b). El entorno de pruebas utilizado en esta sesin de laboratorio est formada por tres componentes: programador AVR-DRAGON, placa de prototipo Arduino Duemilanove y placa de expansin para Arduino con componentes E/S. La placa de expansin mostrada en la figura 9 est conectada a la placa Arduino, quedando ocultos todos los

componentes del Arduino. En la placa de expansin estn disponibles todos los puertos del microcontrolador en los laterales de la placa, adems, estos puertos tambin estn conectados a diversos componentes como son, leds, displays, conmutadores, etc. Estos componentes se utilizarn 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 alimentacin adicional ya utilizan los 5V suministrados por el Bus USB. Tras la conexin USB puede aparecer en el ordenador algn cuadro de dilogo indicando que se ha encontrado nuevo hardware. Si esto ocurriera, debe instalar los controladores, no cancele la instalacin o tendr problemas de programacin 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 comunicacin 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 programacin del microcontrolador.

Color Rojo Apagado Verde Amarillo

Descripcin En reposo, no hay conexin con AVR Studio En reposo, conectado a AVR Studio Transfiriendo datos Inicializacin o actualizacin del firmware
Tabla 3. Indicaciones del led de AVR-DRAGON.

Antes de realizar la programacin se debe verificar la correcta configuracin de AVR-STUDIO realizando una prueba de conexin con el microcontrolador. Accediendo al men Tools hay que usar el submen Program AVR y, opcin Connect. Aparecer el dilogo mostrado en la figura 10. Alternativamente, dicho dilogo se puede obtener de manera directa utilizando el botn de la barra de herramientas.

Estructura de Computadores

12

Led conectado A PB 5

A REF GN D PB5 PB4 PB3 PB2 PB1 PB0 PC0 PC1 PC2 PC3 PC4 PC5 PD 7 PD 6 PD 5 PD 4 PD 3 PD 2 PD 1 PD 0

(a)

(b)

Figura 8. a) Placa de desarrollo Arduino b) Programador/Depurador AVR-DRAGON.

(a)

(b)

Figura 9. a) Placa de expansin E/S para Arduino. b) Detalle de conexin de los segmentos a los puertos.

Estructura de Computadores

13

En este dilogo hay que establecer la configuracin indicada en la figura 10: plataforma AVR-DRAGON y puerto USB. Tras pulsar el botn Connect, si la conexin es correcta, debe aparecer automticamente el dilogo mostrado en la figura 11 y el led rojo de AVR-DRAGON se apagar.

Figura 10. Seleccin del programador y el puerto

En caso de no aparecer automticamente el dialogo de la figura 11 se puede utilizar el botn de la barra de herramientas o, la opcin de men Tools submen Program AVR. Tras esto finalmente aparecer la ventana mostrada en la

figura 11. De las mltiples pestaas que contiene slo utilizaremos la primera y segunda: Main y Program. En primer lugar se realizar una prueba de comunicacin siguiendo estos pasos: 1.Seleccionar la pestaa 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 botn 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 comunicacin.

Figura 11. Pestaa principal de la ventana de programacin del microcontrolador.

El siguiente paso consiste en realizar la programacin del microcontrolador con el cdigo que se ha ensamblado, para ello, seleccione la pestaa Program. Si el ensamblado se realiz con xito habr generado un fichero con extensin

Estructura de Computadores

14

.hex dentro del directorio del proyecto y con el nombre del proyecto. En la figura 12 se muestra el dilogo de programacin donde hay que seleccionar el fichero .hex. Este dilogo tiene tres cuadros donde se puede seleccionar un fichero: Flash, EEPROM y ELF. Hay que utilizar la seccin seccin Flash y el botn de seleccin de fichero (indicado con la flecha roja en la figura 12). Tras esto basta con pulsar el botn Program para realizar la programacin del microcontrolador.

Figura 12. Pestaa de programacin de la ventana de programacin del microcontrolador.

4. Ejercicio evaluable
Para optar a evaluacin alternativa, los alumnos debern obtener una calificacin de APTO en la parte obligatoria de esta prctica y demostrar en el laboratorio que se ha desarrollado el ejercicio que se detalla a continuacin: 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 peridica. El contenido del TCNT1 como la seleccin 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.