preparatorio_6

May 4, 2018 | Author: Anonymous | Category: Documents
Report this link


Description

ESCUELA POLITÉCNICA NACIONAL FACULTAD DE INGENIERIA ELÉCTRICA Y ELECTRÓNICA LABORATORIO DE SISTEMAS MICROPROCESADOS PREPARATORIO Práctica #: 6 Tema: Programación de los microcontroladores ATMEL 164p. Fecha de Realización: 2013 / 09 / 15 año mes día Realizado por: Alumno (s): Francisco Lema Grupo: (Espacio Reservado) Fecha de entrega: f. ______________________ año mes día Recibido por: Sanción: ________________________________________________ Período: 2013 B Lunes 16-18 PRÁCTICA No. 6 TEMA: PROGRAMACIÓN DE LOS MICROCONTROLADORES ATMEL MEGA 164p OBJETIVO: Aprender a usar correctamente el programador para el Microcontrolador ATMega164p. Implementar un circuito que permita sumar , o restar 2 números de 8 bits utilizando el microcontrolador ATmega164p. PREPARATORIO: Consultar: Consultar las características generales del microcontrolador ATMEL MEGA 164p, especialmente en la parte referente a la disposición de terminales (pines) generales de entrada/salida, los de alimentación, el RESET y los usados para la programación del mismo. Microcontrolador AVR de 8 bits de alto rendimiento y bajo consumo. Arquitectura Avanzada RISC 131 instrucciones. La mayoría de un solo ciclo de reloj de ejecución. 32 registros de trabajo de 8 bits para propósito general. Funcionamiento estático total. Capacidad de procesamiento de unos 20 MIPS a 20 MHz. Multiplicador por hardware de 2 ciclos Memorias de programa y de datos no volátiles de alta duración 16/32/44 K bytes de FLASH auto programable en sistema 512B/1K/2K bytes de EEPROM 1/2/4K bytes de SRAM Interna Retención de Datos: 20 años a 85ºC / 100 años a 25ºC Sección opcional de código Boot con bits de bloqueo independientes. Programación en sistema del programa Boot que se encuentra dentro del mismo chip. Operación de lectura durante la escritura. Bloqueo programable para la seguridad del software. Interfase JTAG Capacidades de Boundary Scan de acuerdo con el estándar JTAG Soporte Extendido Debug dentro del chip Programación de FLASH, EEPROM, fusibles y bits de bloqueo a través de la interface JTAG. Características de los periféricos Dos Timer/Contadores de 8 bits con prescalamiento separado y modo comparación. Un Timer/Contador de 16 bits con prescalamiento separado, modo comparación y modo de captura. Contador en Tiempo Real con Oscilador separado 6 Canales para PWM ADC de 10 bits y 8 canales Modo Diferencial con ganancia seleccionable a x1, x10 o x200. Interfase serie de dos hilos con byte orientado. Dos puertos Seriales USART Programables Interfaz Serial SPI maestro-esclavo Watchdog Timer programable con oscilador independiente, dentro del mismo chip. Comparador Analógico dentro del mismo Chip Interrupt and Wake-up on Pin Change Características especiales del microcontrolador Power-on Reset (en el encendido) y detección de Brown-out (pérdida de polarización) programable. Oscilador RC interno calibrado. Fuentes de interrupción externas e internas. 6 modos de descanso: Idle, Reducción de Ruido ADC, Power-save, Power-down, Standby y Standby extendido. _ Encapsulados para Entradas/Salidas (E/S) 32 líneas de E/S programables. PDIP de 40 pines, TQFP y QFN/MLF de 44 pines. _ Voltajes de Operación 1.8 – 5.5V para el ATMEGA 164P/324P/644PV 2.7 – 5.5V para el ATMEGA 164P/324P/644P Ciclos de escritura/borrado: 10.000 en Flash / 100.000 en EEPROM Velocidad de Funcionamiento ATMEGA 164P/324P/644PV: 0 – 4MHz @ 1.8 – 5.5V - 10MHz @ 2.7 – 5.5V ATMEGA 164P/324P/644PV: 0 – 10MHz @ 2.7 – 5.5V - 20MHz @ 4.5 5.5V Consumo de energía a 1MHz, 1.8V, 25ºC para el ATMEGA 164P/324P/644P Activo: 0.4mA Modo Power-down: 0.1uA Modo Power-Save: 0.6uA (Incluye RTC de 32 Khz 1. CONFIGURACIÓN DE PINES Figura 1-1. Pines de Salida del ATmega164P/324P/644P Revisar el manejo de tablas en el AVR Atmega164p (uso de la instrucción LPM). Esta instrucción se usará para realizar la conversión de binario a hexadecimal . Se da como referencia un programa de ejemplo al final. Instrucción: LPM Función: Carga la memoria de programa Sintaxis: LPM Operación: R0  (Z) Words: 1 (2 bytes) Ciclos: 3 Flags: ninguno Program Counter: PC  PC + 1 Descripción: LPM carga un byte apuntado por el registro Z en el registro R0. La memoria de programa está organizada en words de 16 bit y el bit menos significativo del puntero Z selecciona el byte bajo (0) o el byte alto (1). Esta instrucción puede dirigirse a los primeros 64K bytes (32K words) de memoria de programa. El registro puntero Z queda inalterado por el funcionamiento. Ejemplo: CLR r31 ; Borrar el byte alto de Z LDI r30,$F0 ; Poner a set el byte bajo de Z LPM ; Cargar constante de la memoria ; de programa apuntada por Z (r31:r30) Revisar en el manual del Atmega164p la manera de configurar y usar los puertos de entrada/salida. El microcontrolador ATMega164p dispone de 4 puertos de entrada/salida de uso general, de 8 bits cada uno llamados PORTA, PORTB, PORTC, y PORTD. Esto da un total de 32 líneas generales de E/S. Cada una de las líneas de los puertos puede ser configurada individualmente como entrada o salida. Cabe indicar también que estos pines pueden tener funciones alternativas y pueden ser asignados a otros periféricos, en cuyo caso ya no pueden ser usados como línea de E/S. Para el manejo cada uno de los puertos se usan tres registros: • DDRx, de ocho bits, cada uno de los cuales está asignado a uno de los pines del puerto. Cada bit permite configurar en forma individual si el pin va a ser entrada o salida de la siguiente manera: Si el bit se pone a 0, ese pin será una entrada, y si se pone 1, ese pin será salida. • PORTx de ocho bits. Cada bit está signado también a un pin. Para poner un valor lógico en un pin, se debe colocar ese valor en el bit correspondiente en este registro, y si ese pin está configurado como salida ese valor aparece físicamente en esa patita. Si la patita está definida como entrada y se escribe un valor en ella, simplemente este valor no es mostrado en ese pin. • PINx de ocho bits. Si se desea leer un pin que ha sido definido como entrada se debe leer este registro. Si se lee el registro PORTx, no se lee lo que físicamente está en los pines, si no lo que haya escrito con anterioridad en el registro PORTx. Consultar las características de un display de 7 segmentos. El display de 7 segmentos o visualizador de 7 segmentos es un componente que se utiliza para la representación de números en muchos dispositivos electrónicos debido en gran medida a su simplicidad. Aunque externamente su forma difiere considerablemente de un diodo LED (diodos emisores de luz) típico, internamente están constituidos por una serie de diodos LED con unas determinadas conexiones internas, estratégicamente ubicados de tal forma que forme un número 8. A cada uno de los segmentos que forman el display se les denomina a, b, c, d, e, f y g y están ensamblados de forma que se permita activar cada segmento por separado consiguiendo formar cualquier dígito numérico. A continuación se muestran algunos ejemplos: • Si se activan o encienden todos los segmentos se forma el número "8". • Si se activan sólo los segmentos: "a, b, c, d, e, f," se forma el número "0". • Si se activan sólo los segmentos: "a, b, g, e, d," se forma el número "2". • Si se activan sólo los segmentos: "b, c, f, g," se forma el número "4". Muchas veces aparece un octavo segmento denominado p.d. (punto decimal). Los diodos led trabajan a baja tensión y con pequeña potencia, por tanto, podrán excitarse directamente con puertas lógicas. Normalmente se utiliza un codificador (en nuestro caso decimal/BCD) que activando un solo pins de la entrada del codificador, activa las salidas correspondientes mostrando el número deseado. Recordar también que existen display alfanuméricos de 16 segmentos e incluso de una matriz de 7*5 (35 bits). Los hay de dos tipos: ánodo común y cátodo común. En los de tipo de ánodo común, todos los ánodos de los leds o segmentos están unidos internamente a una patilla común que debe ser conectada a potencial positivo (nivel “1”). El encendido de cada segmento individual se realiza aplicando potencial negativo (nivel “0”) por la patilla correspondiente a través de una resistencia que limite el paso de la corriente. En los de tipo de cátodo común, todos los cátodos de los leds o segmentos están unidos internamente a una patilla común que debe ser conectada a potencial negativo (nivel “0”). El encendido de cada segmento individual se realiza aplicando potencial positivo (nivel “1”) por la patilla correspondiente a través de una resistencia que limite el paso de la corriente. Los segmentos pueden ser de diversos colores, aunque el display más comúnmente utilizado es el de color rojo, por su facilidad de visualización. Diseñar un circuito que permita ingresar 2 números en binario mediante 2 dip switch de 8 bits cada uno que serán conectados a los puertos PORTA y PORTB respectivamente. Se manejará un par de displays de 7 segmentos que serán conectados a los otros dos puertos disponibles. No olvidar que los display de 7 segmentos deben conectarse usando resistencias limitadoras de corriente, revisar las características eléctricas en cuanto a la capacidad de manejo de corriente del microcontrolador para el diseño de las mismas. (sección Características Eléctricas del manual). En uno de los dos pines sobrantes en los puertos de los display conectar un interruptor para poder determinar si la operación a realizar es una suma o una resta(será una entrada); en el otro pin sobrante conectar un LED al que se enviará directamente el CARRY resultante de la operación(será una salida). Escribir un programa en Assembler de AVR Studio que permita sumar o restar ( de acuerdo al switch de selección) los dos números que se ingresan en los dip switch y mostrar el resultado en los dos display de 7 segmentos en hexadecimal. La decodificación de binario a hexadecimal se realizará por software dentro del microcontrolador.El CARRY resultante de la operación debe ser enviado directamente al LED. - directamente al LED. .include "m164pdef.inc" .org 0x00 .cseg clr r0 clr r20 clr r21 ldi r22,$80 ldi r18,$7f ser r19 out ddra,r0 PC6/TOSC1/PCINT22 25 PC5/TDI/PCINT21 24 PC4/TDO/PCINT20 23 PC3/TMS/PCINT19 22 PC2/TCK/PCINT18 21 PC1/SDA/PCINT17 20 PC0/SCL/PCINT16 19 AVCC27 AREF29 PC7/TOSC2/PCINT23 26 PA6/ADC6/PCINT6 31 PA5/ADC5/PCINT5 32 PA4/ADC4/PCINT4 33 PA3/ADC3/PCINT3 34 PA2/ADC2/PCINT2 35 PA1/ADC1/PCINT1 36 PA0/ADC0/PCINT0 37 PA7/ADC7/PCINT7 30 PB6/MISO/PCINT142 PB5/MOSI/PCINT131 PB4/SS/OC0B/PCINT1244 PB3/AIN1/OC0A/PCINT1143 PB2/AIN0/INT2/PCINT1042 PB1/T1/CLKO/PCINT941 PB0/T0/XCK0/PCINT840 PB7/SCK/PCINT153 PD6/ICP/OC2B/PCINT3015 PD5/OC1A/PCINT2914 PD4/OC1B/XCK1/PCINT2813 PD3/INT1/TXD1/PCINT2712 PD2/INT0/RXD1/PCINT2611 PD1/TXD0/PCINT2510 PD0/RXD0/PCINT249 PD7/OC2A/PCINT3116 RESET4 XTAL1 7 XTAL2 8 U1 ATMEGA164P R1 4k7 R2 4k7 R3 4k7 R4 4k7 R5 4k7 R6 4k7 R7 4k7 R8 4k7 R9 4k7 R10 4k7 R11 4k7 R12 4k7 R13 4k7 R14 4k7 R15 4k7 R16 4k7 OFF ON 1 2 3 4 5 6 7 8 16 15 14 13 12 11 10 9 DSW1 DIPSW_8 OFFON1 2 3 4 5 6 7 8 16 15 14 13 12 11 10 9 DSW2 DIPSW_8 R8(1) R16(1) R17 390R R18 390R R19 390R R20 390R R21 390R R22 390R R23 390R R24 390R R25 390R R26 390R R27 390R R28 390R R29 390R R30 390R R31 390R R32 390R D1 LED-RED OFF ON 1 2 4 3 DSW3 DIPSW_2 out ddrb,r0 out ddrc,r18 out ddrd,r19 ingreso: in r16,pina in r17,pinb sbic pinc,7 rjmp resta suma: add r16,r17 decodificador: adc r20,r20 mov r19,r16 andi r19,$0f ldi r30, low(tabla BIBLIOGRAFIA: Hojas guías de la práctica 6;Disponible en World Wide Web: ATMEL; 8-bit AVR; Instruction Set


Comments

Copyright © 2025 UPDOCS Inc.