Docsity
Docsity

Prepara tus exámenes
Prepara tus exámenes

Prepara tus exámenes y mejora tus resultados gracias a la gran cantidad de recursos disponibles en Docsity


Consigue puntos base para descargar
Consigue puntos base para descargar

Gana puntos ayudando a otros estudiantes o consíguelos activando un Plan Premium


Orientación Universidad
Orientación Universidad

Laborartorio Generador de Señales ATMEGA 2560, Ejercicios de Microprocesadores

laboratorio de microprocesadores

Tipo: Ejercicios

2021/2022

Subido el 27/10/2022

daniel-esteban-yepes-morales
daniel-esteban-yepes-morales 🇨🇴

5

(1)

2 documentos

1 / 6

Toggle sidebar

Esta página no es visible en la vista previa

¡No te pierdas las partes importantes!

bg1
LABORATORIO 1-GENERADOR DE SEÑALES
Daniel Esteban Yepes (2195386)
Laura Yusunguaira (2195994)
Asignatura: Microprocesadores
Diego Martinez
Facultad de Ingeniería, Universidad Autónoma de Occidente.
Santiago de Cali, Octubre de 2022.
daniel.yepes@uao.edu.co,laura.yusunguaira@uao.edu.co
Resumen Este laboratorio busca diseñar una
aplicación generadora de señales, la cual por medio
de dos pulsadores controla primeramente el cambio
de onda a generar siendo esta cuadrada, triangular,
diente de sierra o sinusoidal y los periodos de la
misma siendo estos de 1ms, 5ms, 10ms y 15ms,
Acompañado con interrupciones de temporizadores
priorizando el cambio de onda, este laboratorio
tendra dos versiones de solucion, una por medio de
puertos paralelos y la otra por medio de buses de
datos, direcciones y control. Se realizara a través del
microcontrolador ATMEGA2560.
Abstract This laboratory seeks to design a signal
generating application, which, by means of two
buttons, firstly controls the change of the wave to be
generated, being it square, triangular, sawtooth or
sinusoidal, and its periods, these being 1ms, 5ms,
10ms. and 15ms, Accompanied with timer interrupts
prioritizing the wave change, this laboratory will have
two versions of the solution, one through parallel
ports and the other through data buses, directions
and control.. It was done through the ATMEGA2560
microcontroller.
I. ANALISIS Y CALCULOS
El microcontrolador trabaja con un cristal de
frecuencia de 16MHz
𝐹= 1
16000000 = 0. 0000000625
Se define trabajar con interrupciones de 16 bits
es decir que: 216=65526
Para los temporizadores abra solo para cada
cambio de periodo que se trabaja con 1 ms, 5
ms, 10 ms, 15 ms.
Por lo que se debe calcular si es necesario un
divisor de frecuencia y se es de saber que para
esto se multiplica el periodo del
microcontrolador por el valor obtenido de los
16 bis lo que da como resultado que su
maximo para ofrecer es de 4ms, debido a esto
se realizan cálculos para la utilización de un
prescaler para los diferentes periodos
0. 0000000625 ·65536 4𝑚𝑠
Se utilizó un prescaler de 1 por lo que :
Periodo 1ms:
𝑇𝐶𝑁𝑇1=65536 (𝑡𝑖𝑒𝑚𝑝𝑜 𝑟𝑒𝑞𝑢𝑒𝑟𝑖𝑑𝑜)
# 𝑚𝑢𝑒𝑠𝑡𝑟𝑎𝑠
𝑝𝑟𝑒𝑠𝑐𝑎𝑙𝑒𝑟·𝑓.𝑐𝑟𝑖𝑠𝑡𝑎𝑙
𝑇𝐶𝑁𝑇1=65536 1
1000
20
1
16000000 =64736
FC=TCNT1H Parte más significativa
E0=TCNT1L Parte menos significativa
Periodo 5ms:
F0=TCNT1H Parte más significativa
60=TCNT1L Parte menos significativa
Periodo 10ms:
E0=TCNT1H Parte más significativa
C0=TCNT1L Parte menos significativa
Periodo 15ms:
D1=TCNT1H Parte más significativa
20=TCNT1L Parte menos significativa
II. DIAGRAMA DE FLUJO
Lógica version puertos paralelos
pf3
pf4
pf5

Vista previa parcial del texto

¡Descarga Laborartorio Generador de Señales ATMEGA 2560 y más Ejercicios en PDF de Microprocesadores solo en Docsity!

LABORATORIO 1-GENERADOR DE SEÑALES

Daniel Esteban Yepes (2195386) Laura Yusunguaira (2195994) Asignatura: Microprocesadores Diego Martinez Facultad de Ingeniería, Universidad Autónoma de Occidente. Santiago de Cali, Octubre de 2022. daniel.yepes@uao.edu.co,laura.yusunguaira@uao.edu.co Resumen — Este laboratorio busca diseñar una aplicación generadora de señales, la cual por medio de dos pulsadores controla primeramente el cambio de onda a generar siendo esta cuadrada, triangular, diente de sierra o sinusoidal y los periodos de la misma siendo estos de 1ms, 5ms, 10ms y 15ms, Acompañado con interrupciones de temporizadores priorizando el cambio de onda, este laboratorio tendra dos versiones de solucion, una por medio de puertos paralelos y la otra por medio de buses de datos, direcciones y control. Se realizara a través del microcontrolador ATMEGA2560. Abstract — This laboratory seeks to design a signal generating application, which, by means of two buttons, firstly controls the change of the wave to be generated, being it square, triangular, sawtooth or sinusoidal, and its periods, these being 1ms, 5ms, 10ms. and 15ms, Accompanied with timer interrupts prioritizing the wave change, this laboratory will have two versions of the solution, one through parallel ports and the other through data buses, directions and control.. It was done through the ATMEGA microcontroller. I. ANALISIS Y CALCULOS El microcontrolador trabaja con un cristal de frecuencia de 16MHz 𝐹 = 1 16000000 =^ 0. 0000000625 Se define trabajar con interrupciones de 16 bits es decir que: 2 16 = 65526 Para los temporizadores abra solo para cada cambio de periodo que se trabaja con 1 ms, 5 ms, 10 ms, 15 ms. Por lo que se debe calcular si es necesario un divisor de frecuencia y se es de saber que para esto se multiplica el periodo del microcontrolador por el valor obtenido de los 16 bis lo que da como resultado que su maximo para ofrecer es de 4ms, debido a esto se realizan cálculos para la utilización de un prescaler para los diferentes periodos

  1. 0000000625 · 65536 ≃ 4𝑚𝑠 Se utilizó un prescaler de 1 por lo que : Periodo 1ms: 𝑇𝐶𝑁𝑇1 = 65536 − (𝑡𝑖𝑒𝑚𝑝𝑜 𝑟𝑒𝑞𝑢𝑒𝑟𝑖𝑑𝑜)

𝑚𝑢𝑒𝑠𝑡𝑟𝑎𝑠

𝑝𝑟𝑒𝑠𝑐𝑎𝑙𝑒𝑟·𝑓.𝑐𝑟𝑖𝑠𝑡𝑎𝑙

1 1000 20 1· 160000001

FC=TCNT1H Parte más significativa E0=TCNT1L Parte menos significativa Periodo 5ms: F0=TCNT1H Parte más significativa 60=TCNT1L Parte menos significativa Periodo 10ms: E0=TCNT1H Parte más significativa C0=TCNT1L Parte menos significativa Periodo 15ms: D1=TCNT1H Parte más significativa 20=TCNT1L Parte menos significativa II. DIAGRAMA DE FLUJO Lógica version puertos paralelos

Lógica version buses de datos III. SOLUCION VERSION PUERTOS PARALELOS Para el desarrollo de esta solución, se define que la comunicación entre el microcontrolador y el DAC se realiza a través de los puertos paralelos, por lo que se puede observar que se hizo uso del puerto B para la correspondencia de información y el puerto D para las interrupciones accionadas por pulsadores. Estas interrupciones están establecidas primeramente con el cambio en la forma de la onda como lo puede ser cuadrada, triangular, diente de sierra o sinusoidal por medio de INT0 y el cambio del periodo con valores de 1 ms, 5 ms, 10 ms o 15 ms por medio de INT1, además, se implemento un pulsador asociado con el reset para reiniciar tanto la señal como el periodo, y por último en el esquemático se puede apreciar un pequeño circuito para convertir una señal digital a una analogica para esta ser observada en el generador de señales. Esquemático de Circuito, Puertos Paralelos Para la realización de esta práctica se realizo el codigo en assembler en la aplicación Microchip studio donde se dio inicio con una definición de registros a utilizar donde de R a R18 son registros temporales para uso de carga de datos, R19 y R20 como registros de precarga High y Low para mayor orden, R como uso de contador de datos de los vectores, R22 como uso de contador para el cambio de señal y el R23 como uso de contador para el cambio de periodo. Se definen las direcciones ya previamente establecidas en la tabla de direcciones de vectores, y los saltos para ejecutar el inicio y las interrupciones, las cuales son dos (INT0-INT1) y por último el timer (Interrupción T1) que trabajara en desbordamiento (OVF) y es de 16 bits Para la obtención del tipo de onda se generaron 20 muestras para cada vector con ayuda de la herramienta MATLAB, por lo que este código nos permite guardar un arreglo en una posición de memoria interna, donde Vector 1 es la cuadrada, Vector 2 es triangular, Vector 3 es diente de sierra y Vector 4 es sinusoidal.

del vector seleccionado cuando ocurra el siguiente desbordamiento y finalmente incrementamos el contador para que al mandar la totalidad de los datos se reinicie la dirección y los datos sean enviados periódicamente. Las subrutinas permite resolver una tarea específica, por lo que se hace para el cambio de tipo de onda, el cual es realizada por Hardware debido a que es por medio de una interrupción, su lógica es de un switch case, en el que se hace uso de CONT1 para comparar y si se cumple realizar una acción la cual es hacer un salto. Se puede observar que en el último caso se incrementa el CONT1 para cuando vaya a hacer el salto y regrese ya inicie desde el otro vector. Por último, si llega a el reti hará que retorne a donde estuvo antes de la interrupción es decir en el bucle. Esta es la segunda subrutina de interrupciones la cual es realizada para generar el cambio de periodo tiene la misma lógica de la del cambio de onda, en la cual se maneja con un CONT para las comparaciones y realiza saltos en otra parte del código, Por último, si llega a el reti hará que retorne a donde estuvo antes de la interrupción es decir en el bucle. Como se indicó en la interrupción por desbordamiento al enviar los 20 datos del vector correspondiente el contador llega a cero, activando la bandera de 0 y así activando la subrutina REINICIO la cual resta 20 a la dirección Z logrando obtener la dirección inicial y cargando de nuevo el contador de 20, de esta forma el sistema vuelve a enviar el dato 0 del vector y reiniciando al enviar los 20 Esta subrutina es el complemento del cambio de onda, es decir cambio de vectores, es aquí donde viene el salto y su función es la reproducción de la onda, desplazando una posición en cada una de sus partes, (la más significativa y la menos significativa), además de en cada una de las subrutinas, la dirección de los vectores correspondientes es guardada en el apuntador Z. También se puede observar que al final de cada switch case de vectores genera un salto para volver a comparar el CONT1 para saber si es necesario hacer cambio de forma de onda.

Se puede observar que al final de los vectores inicializa el CONT1 en 0 para cuando haya ya generado todas las señales inicie de nuevo. Esta subrutina es el complemento de la subrutina de cambio de periodo, es donde hará el salto para hacer la precarga del valor del periodo,(Cálculos en II. ANÁLISIS Y CÁLCULOS) y al final de cada caso hace un salto al switch case de cambio de periodo. Se puede observar que al final de los periodos inicializa el CONT2 en 0 para cuando haya ya generado todas los periodos inicie de nuevo. IV. SOLUCION VERSION BUSES DE DATOS, DIRECCIONES Y CONTROL El DAC se accede como un dispositivo de memoria de datos externa, a través de los buses de datos, direcciones y control. Para esta solución se separa los buses de datos y direcciones por medio de un latch, de esta forma se conecta el bus de datos directamente con el latch que se implementó para controlar las entradas del DAC. Además se puede observar que se hizo uso del puerto C para el control del mismo, en el Pin 15 Esquemático de Circuito, Buses de datos, dirección… A comparación de la solución de puertos paralelos en este caso no se definen los puertos si no se realiza la configuración del bus de datos, para ello es necesario habilitar la interfaz de memoria externa por medio del XMCRA donde se le desplaza un 1 a la posición de SRE, también se puede implementar la activación de XMCRB para guardar el último valor, el cual es opcional. En esta parte del codigo tambien podemos notar cambio debido a que cuando trabajamos con buses de datos no utilizamos OUT cuando nos referimos a los puertos a utilizar si no que lo manejamos por direcciones para llamarlos STS, por lo que fue necesario realizar el mapa de memoria para saber asignar direcciones en las diferentes sentencias.