introducción a avr-studio - dte.us.es · pdf fileestudiar los procesos para la...

Download Introducción a AVR-STUDIO - dte.us.es · PDF fileEstudiar los procesos para la programación del microcontrolador del Arduino ... 1.3.El puerto B controla el encendido o apagado completo

If you can't read please download the document

Upload: truongliem

Post on 06-Feb-2018

220 views

Category:

Documents


0 download

TRANSCRIPT

  • DEPARTAMENTO DE TECNOLOGA ELECTRNICAESCUELA TCNICA SUPERIOR DE INGENIERA INFORMTICA

    Introduccin a AVR-STUDIO

    Microprocesadores

    1.Introduccin y objetivosLos 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 tericoSe 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.

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

    http://www.dte.us.es/http://www.atmel.com/http://www.atmel.com/

  • Estructura de Computadores 2

    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=..... //Tamao 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 ordenacin */

    ........IniciaTabla:

    push r0 push temppush ylpush yhpush zlpush zh

    ldi zl, low(2*TablaEeprom)

    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)

  • 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+,r0subi temp,1brne loop

    pop zhpop zlpop yhpop ylpop temppop 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 $100Tabla: .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 Bit Componente Configuracin Funcionamiento

    PORTC 2 Led Como salida DDRC2=1 PC2=0 apagadoPC2=1 encendido

    PORTC 3 Led Como salida DDRC3=1 PC3=0 apagadoPC3=1 encendido

    PORTC 4 Conmutador Como entrada DDRC4=0 PC4=1 no pulsadoPC4=0 pulsado

    PORTC 5 Conmutador Como entrada DDRC5=0 PC5=1 no pulsadoPC5=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 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 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 Bit Componente Configuracin Funcionamiento

    PORTD 0-7 Segmentos de los displays Como salida DDRD=0xFF; PORTDX=0 apagadoPORTDX=1 encendido

    PORTB 0 Display 0 Como salida DDRB0=1 PORTB0=1 apagadoPORTB0=0 encendido

    PORTB 1 Display 1 Como salida DDRB1=1 PORTB1=1 apagadoPORTB1=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 5

    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

    bu