Sistemas con Microprocesador.
Enviado por israelrivera • 12 de Abril de 2016 • Trabajo • 43.606 Palabras (175 Páginas) • 342 Visitas
Reporte Examen 1: Piano con Timer
Erick Alonso Anaya Martínez. Matrícula: 112951
Fredy Fernando Álvarez Sánchez. Matrícula: 109311
e-mail: Fredy_bat@hotmail.com
Ingeniería en Sistemas Digitales y Comunicaciones
UACJ, IIT, Departamento De Ingeniería Eléctrica y Computación
Materia: Sistemas con Microprocesador, Catedrático: Dr. Juan de Dios Cota Ruiz
16 de marzo de 2015
1. Introducción
1.1. Temporizadores
El temporizador es una herramienta del microprocesador que incrementa el registro contador cada ciclo de maquina(la temporización se produce contando los ciclos maquina hasta sobrepasar el valor prefijado). El AT89LP6440 tiene cuatro modos de funcionamiento para sus timers 0 y 1, contador de ancho variable, auto recarga de 16 bits, auto recarga de 8 bits, y dos contadores de 8 bits.
2. Desarrollo teórico
2.1. Interrupciones
Una interrupción es un evento que hace que el microcontrolador deje de ejecutar la tarea que está realizando para atender dicho acontecimiento y luego regrese y continúe la tarea que estaba realizando antes de que se presentara la interrupción. Las interrupciones son útiles para ahorrar energía, ya que se pueden utilizar para despertar el microprocesador de modo standby cada vez que se presente la interrupción y posteriormente se puede poner al microprocesador en modo standby nuevamente. El AT89LP6440 tiene 12 fuentes de interrupción:
- 2 interrupciones externas
- 3 interrupciones por timers
- 1 por puerto serial
- 1 por comparador analógico
- 1 por captura/comparación
- 1 por [pic 1]
- 1 por SPI
- 1 por GPIF(7-0)
- 1 por ADC
Las interrupciones por timer se ejecutan cada tick-period que se calcula según el modo que se quiere utilizar, en esta ocasión se utiliza el modo 1 para generar la interrupción por timer, que es la de 16 bits con auto recarga, que tiene la siguiente fórmula:
Tick_period= [pic 2]
Donde RH1 y RL1 son dos registros de 1 byte cada uno que trabajan juntos para crear un numero de comienzo donde va contar hasta 65535 donde se va a desbordar y producir una interrupción que se va estar ejecutando mientras esté activado el timer. El inverso de esta fórmula dividido entre dos nos da la frecuencia que se necesita para cada frecuencia que se necesita. , de donde se despeja Val, que es el valor que va entrar a RL1 y RH1.
[pic 3][pic 4]
2.2. Registros de Interrupciones
Es necesario habilitar las interrupciones que se desean utilizar en el programa, esto se hace a través del registro de habilitación de interrupciones, se pone el registro que se quiere habilitar a '1'.
Registro IE (Interrupt Enable)
EA | EC | ET2 | ES | ET1 | EX1 | ET0 | EX0 |
EX0 - Interrupción externa 0
ET0 - Timer 0
EX1 - Interrupción externa 1
ET1 - Timer 1
ES - Puerto Serial
ET2 - Timer 2
EC - Comparador analógico
EA - Enable All
Registro IE2(Interrupt Enable 2)
- | - | - | ETW | EADC | ESPI | ECC | EGP |
EGP-Interrupción de propósito general
ECC-Interrupción por captura y comparación
ESPI-Interface serial SPI
EADC-Convertidor analógico digital
ETW- interface serial[pic 5]
TCON
A través de este registro podemos configurar de qué forma se activaran las interrupciones, en este caso estamos trabajando con interrupciones externas, podemos configurar la interrupción para que se active por nivel o por flanco de bajada, a través de la manipulación de los bits de este registro, en este caso estamos trabajando con flanco de bajada, por lo tanto ponemos IT0 y IT1 en '1' para trabajar con flanco de bajada en las interrupciones externas INT0, INT1 respectivamente.
TF1 | TR1 | TF0 | TR0 | IE1 | IT1 | IE0 | IT0 |
GPI(General Purpose Interrupt)
Este tipo de interrupción sirve para tener 8 diferentes interrupciones que trabajan de la misma forma que las funciones externas, solamente que tienen sus propios registros de funcionamiento, cualquier interrupción por el puerto 1 activa esta interrupción, así que se tiene que leer el registro GPIF para revisar cual bandera fue la que se activó y así determinar por cual pin se activó la interrupción.
Se tienen que configurar tres registros para utilizar la interrupción de propósito general:
GPMOD, GPLS, GPIEN y para poder utilizarlos se tiene que leer el GPIF para saber por cual entrada se produjo la interrupción.
El GPMOD sirve para declarar si la interrupción se va activar por nivel o por flanco, en 0 es por nivel, en 1 es por flanco. El GPLS sirve para declarar por alto o bajo, es decir, por nivel alto o bajo, o por flanco de bajada o subida. En cero es bajo y uno es para alto. Finalmente, el GPIEN sirve para activar la interrupción, se pone '1' para activar cada una que se quiere utilizar.
Interrupción por timer
Para trabajar con interrupción con el timer, se trabajan con los siguientes registros: Registro IE, con el bit ET0 y ET1 para los timers 0 y 1, también se necesita activar EA para activar todas las interrupciones.
En el TCON se activa TR0 o TR1 para activar el timer 0, 1 respectivamente.
TMOD(Timer Mode) Se utiliza para configurar el timer como temporizador o contador, activación por hardware o software, y el modo que se va a usar.
...