CONTADORES RESPUESTAS

Asignatura Informática Industrial · ETSID · Universidad Politécnica de Valencia · Mayo 2008 Este documento es un autotest de ayuda enmarcado en la asi

45 downloads 127 Views 255KB Size

Recommend Stories


CONTADORES CONTADORES ASINCRONOS ASCENDENTE
CONTADORES CONTADORES ASINCRONOS ASCENDENTE Vdd Vdd S S J ck K Q2 Q2 Vdd J ck K Q1 Q1 R S J ck K Q0 Q0 R R Las entradas asincronas S y R

Contadores
MICROCONTROLADORES Timer/Contadores Timer/Contadores Los Los Temporizadores/Contadores Temporizadores/Contadores Carlos E. Canto Quintal MICROCONT

Contadores
MICROCONTROLADORES Timer/Contadores Timer/Contadores Aplicaciones Aplicaciones de de los los Temporizadores/Contadores Temporizadores/Contadores Ca

Story Transcript

Asignatura Informática Industrial · ETSID · Universidad Politécnica de Valencia · Mayo 2008 Este documento es un autotest de ayuda enmarcado en la asignatura Informática Industrial y corresponde al tema “Temporizadores y Contadores”, pero es abierto y puede servir para entender el funcionamiento básico de estos dispositivos integrados en los microcontroladores por alumnos de otras asignaturas. Hay disponible en el mismo blog, versiones de audio en mp3 de cada una de las preguntas. http://infoind-etsid-upv.blogspot.com

CUESTIONARIO TEMPORIZADORES/CONTADORES RESPUESTAS 1. Cita algunos ejemplos de aplicación de temporizadores y contadores en la vida real. Como aplicación de los contadores podemos pensar en los cables que ponen atravesados en algunas carreteras junto a una caja de registro. Son sistemas de conteo de vehículos. Cada vez que un vehículo pasa por encima, activa un sensor de presión y esta señal eléctrica incrementa el contador. Otro ejemplo es el sistema de plazas de un parking. Cada vez que un vehículo entra, un sensor de presencia genera una señal eléctrica que se envía al microcontrolador incrementando la cuenta. Como ejemplo de temporizador podemos pensar en el modo “Sleep” que tienen algunas radios o sistemas de TV. Se programa un tiempo determinado (x minutos) y pasado éste, el sistema se apaga automáticamente. Otro ejemplo del uso de los temporizadores puedes verlo en las puertas en un ascensor. El tiempo que están abiertas también está controlado por un timer. Como puedes ver, hay una gran diferencia entre un CONTADOR y un TEMPORIZADOR. Un contador se ‘alimenta’ de señales externas, es decir, cuenta eventos, sucesos, cosas que pasan en el mundo exterior sin importar el factor tiempo. Por otro lado, el temporizador, no necesita conexión al mundo exterior (aunque también puede temporizar sincronizando un evento externo), y sí que le importa el factor tiempo, siempre se habla de tiempos exactos. Si os queda alguna duda en diferenciarlos, la pregunta que debéis haceros es: ¿en este problema es importante el tiempo? Como último ejemplo, imagina una cadena de producción por la que se mueven piezas de madera tallada. Necesitamos contar el número de piezas que pasan por delante de la unidad de control y el tiempo medio entre piezas…¿utilizarías un contador o un temporizador? (piénsalo un momento…) Hay que contar las piezas, por lo tanto, en este caso no importa el tiempo, sólo las piezas que pasan, por lo que utilizamos un contador. Situaremos una barrera de infrarrojos en la cinta y cuando una pieza la atraviese, la barrera de infrarrojos enviará una señal eléctrica que incrementará el contador. Fíjate que en este caso el contador necesita una señal externa que le indique cuándo se ha detectado la pieza.

Para cualquier duda, corrección o sugerencia puedes enviarme un email a: [email protected] · Mayo2008 · v 2.0

Asignatura Informática Industrial · ETSID · Universidad Politécnica de Valencia · Mayo 2008

También hay que registrar el tiempo entre piezas, en este caso sí que importa el factor tiempo, por lo tanto, también necesitamos un temporizador. Cuando una pieza cruce la barrera pondremos en marcha el temporizador (al igual que haríamos en una carrera con el crono) y esperaremos a que una nueva pieza cruce de nuevo la barrera, deteniendo el temporizador entonces. Como el temporizador mide tiempo (en base al reloj del micro), tendremos el tiempo exacto que ha transcurrido entre dos piezas, además del número de piezas. Es un ejemplo en el que se utilizan dos temporizadores, uno configurado en modo contador y el otro en modo temporizador. 2. ¿Cuántos temporizadores/contadores tiene el microcontrolador visto en clase? Para conocer en detalle los distintos módulos que integra un micro, lo mejor es echar un vistazo a su hoja de características. Así que vamos a Google y escribimos el modelo de micro junto a la palabra ”datasheet”:

El resultado es una serie de enlaces que apuntan a la información que buscamos, lo mejor es ir directamente a uno del fabricante, por ejemplo en la siguiente figura puedes ver que el primero corresponde a la web de Atmel, pincha en él para acceder a la documentación del chip:

Para cualquier duda, corrección o sugerencia puedes enviarme un email a: [email protected] · Mayo2008 · v 2.0

Asignatura Informática Industrial · ETSID · Universidad Politécnica de Valencia · Mayo 2008

Una vez has hecho clic en el enlace, se abrirá un archvo PDF. Las características del microcontrolador las puedes encontrar en las primeras páginas del documento. Puedes ver recuadrada en la figura la línea que detalla el número de temporizadores/contadores disponibles:

Nota: Esta hoja de características indica que este micro ofrece tres dispositivos que pueden comportarse como temporizadores o como contadores (es un error frecuente pensar que son tres temporizadores y tres contadores). Os sugiero que hagáis el mismo ejercicio, identificando el hardware con otros micros vistos anteriormente o que hayáis utilizado. Quizá la primera vez que se echa un vistazo a una hoja de características cueste un poco, pero al final, todas son iguales e incluyen, toda la información que puedas necesitar, para programar correctamente un microcontrolador.

Para cualquier duda, corrección o sugerencia puedes enviarme un email a: [email protected] · Mayo2008 · v 2.0

Asignatura Informática Industrial · ETSID · Universidad Politécnica de Valencia · Mayo 2008

3. ¿Cuál es la máxima cuenta que puede alcanzar un contador? Esta pregunta es fácil. Está claro que una cuenta depende del número de dígitos del contador, cuantos más dígitos, más grande será el número que podrá contarse. En el caso de los contadores de un microcontrolador, está en función del número de bits, cuantos más bits, mayor en la combinación. Si tenemos 4 bits, podrá contar 2^4=16 y así con cualquier número de bits. En el caso de los temporizadores del micro Atmel T89C51CC01 que es el que vemos en clase, los temporizadores pueden trabajar en diferentes modos (0, 1, 2 y 3) y cada modo tiene asociado un diferente número de bits, 8 bits para los modos 2 y 3, 13 bits para el modo 0 y 16 bits para el modo 1. Como el máximo número de bits es 16 podrá contar 2^16=65.536 eventos, pero hay que matizar, además del número de bits, también podemos utilizar un truco para cuentas mayores, que es registrar el número de veces que el contador da una vuelta completa (utilizando una variable externa), por lo tanto no sólo depende del número de bits. Por ejemplo con un timer de 8 bits se podría temporizar 256 microsegundos como máximo, pero si utilizamos una variable y guardamos en ella las veces que da la vuelta el contador (hasta alcanzar 1.000.000 de desbordamientos), entonces estaremos temporizando 256 millones de microsegundos, es decir: 4,2 horas. 4. La diferencia básica entre temporizador y contador es… El factor tiempo, el temporizador cuenta tiempo y el contador eventos. 5. Cuando se detecta el final de la cuenta, decimos que se ha producido… Un desbordamiento y una interrupción, es lo que sucede cuando el contador o temporizador llega al final de su cuenta, entonces vuelve a empezar desde cero. Dicha interrupción es una señal que avisa al microcontrolador del final de la cuenta y es entonces cuando se busca la rutina de interrupción asociada, que sólo se ejecutará si ha sido habilitada en los registros del micro (IENx). 6. Los temporizadores/contadores ¿son dispositivos internos o externos? Generalmente y aún más hoy en día, los microcontroladores vienen con una increíble variedad de dispositivos integrados, por lo que se hace innecesario buscar otros chips que amplíen una determinada funcionalidad, de hecho, incluyen puertos serie, usb, conversores A/D, sensores de movimiento, de temperatura e incluso conexión via radio. En el caso del micro que vemos en clase T89C51CC01 los temporizadores/contadores son internos. No obstante, si es necesario, también están disponibles temporizadores o contadores externos en un chip con esa única función.

Para cualquier duda, corrección o sugerencia puedes enviarme un email a: [email protected] · Mayo2008 · v 2.0

Asignatura Informática Industrial · ETSID · Universidad Politécnica de Valencia · Mayo 2008

7. ¿Qué registros SFR intervienen en la gestión de los temporizadores? El proceso de configuración de los temporizadores obliga a programar los SFR del siguiente modo: primero definiendo el modo de funcionamiento mediante el registro TMOD, seguidamente definiendo el tipo de activación de las interrupciones externas, si van a ser por nivel o por flanco (con el registro TCON) sólo en el caso que vayan a utilizarse, ajustando la cuenta inicial (con los registros TH0 y TL0 para el T0 (timer0) y los registros TH1 y TL1 para el T1 (timer1), habilitando las interrupciones para el temporizador que se vaya a utilizar mediante el registro IEN0 y por último definiendo las prioridades (con los registros IPHx IPLx). 8. ¿Cómo se configura el modo del temporizador/contador? Sólo hay que configurar el registro TMOD que puedes ver aquí. Para el cambiar el modo, tienes que utilizar el bit 2, Si escribimos un “1”, se configura como contador y si es un “0” se configura como temporizador.

9. ¿Qué utilidad tiene el bit GATE? Esta señal es importante. Si te fijas en el esquema que representa el temporizador, éste sólo funcionará si el bloque señalado en rojo, en la figura, está activado. Este bloque que actúa como un interruptor está controlado por dos señales: TR0 y GATE.

Vamos a fijarnos primero en la puerta AND… Para activar el temporizador, lo primero que hacemos, es poner el bit TR0 a “1”, pero a no ser que la otra entrada de la puerta AND sea también un “1”, el interruptor estará cerrado y el temporizador estará detenido. Veamos qué sucede con la otra entrada de la puerta AND… Si el bit GATE es “1” como la señal se niega antes de la puerta OR, sólo llegará un “1” a la puerta AND si la señal “pin/INT0” está activa. Esto quiere decir que en este caso (GATE=1), el temporizador sólo se pone en marcha cuando una señal externa “pin/INT0” le llega del exterior a través de un sensor, interruptor, etc…En este caso, se dice que el temporizador está ‘sincronizado’ con el mundo exterior.

Para cualquier duda, corrección o sugerencia puedes enviarme un email a: [email protected] · Mayo2008 · v 2.0

Asignatura Informática Industrial · ETSID · Universidad Politécnica de Valencia · Mayo 2008

Por otro lado, si GATE es “0”, entonces después del inversor, a la entrada de la puerta OR tendremos un “1” y como TR0 es “1” también, el temporizador funcionará sin necesidad de sincronización externa, es decir, cuando GATE=0, el temporizador se pone en marcha cuando activamos la señal TR0. Por lo tanto, GATE sirve para que el proceso de temporización o conteo sincronice con una señal externa. 10. ¿Cómo se detiene la cuenta de un temporizador? La puesta en marcha y paro de un temporizador se hace mediante el bit TRx. Si está a “0”, la cuenta se congela y si está a “1” el temporizador sigue funcionando. Nota: Se puede inhabilitar las interrupciones del timer, pero esta acción no detiene la cuenta, lo que sucede es que nunca se va a ejecutar la rutina de interrupción asociada al timer. 11. Cuando finaliza la cuenta, ¿cómo se avisa al microcontrolador? Cuando el temporizador llega al final de la cuenta, se produce un desbordamiento (el contador se pone a cero) y se genera una interrupción (se pone a “1” el bit TFx avisando de este suceso). Si hay una rutina de interrupción preparada, ésta se ejecuta, en caso contrario, es el usuario el que debe comprobar continuamente el valor de este bit (TFx) para ejecutar alguna acción condicionada. 12. Si se utiliza el modo contador, ¿cómo se detectan los eventos? Lo que se plantea en esta pregunta es ¿dónde se conecta el sensor externo? Como has visto anteriormente, al estar configurado como contador, está claro que vamos a enumerar sucesos del exterior, por lo tanto, el medio será a través de una señal de entrada conectada a un pin y en este micro es “pin T0” (véase la figura):

Si tuvieras que diseñar un circuito para contar objetos, conectarías la salida del sensor a este pin del microcontrolador.

Para cualquier duda, corrección o sugerencia puedes enviarme un email a: [email protected] · Mayo2008 · v 2.0

Asignatura Informática Industrial · ETSID · Universidad Politécnica de Valencia · Mayo 2008

13. ¿Cuántos eventos se pueden contar con los diferentes modos? Modo 0: 13 bits  2^13 = 8192 eventos. Modo 1: 16 bits  2^16 = 65536 eventos. Modo 2: 8 bits (auto recarga)  2^8 = 256 eventos. Modo 3: 8 bits  2^8 bits = 256 eventos. Generalmente para contabilizar objetos, no hará falta contar desbordamientos. Utilizando el modo 1 ya podemos contar suficientes eventos, no obstante, para cuentas mayores se declara una variable y se sigue el prodecimiento de siempre. Imagina que necesitamos contabilizar piezas en un almacén y sabemos que no podemos tener más de 34.000, en este caso, podemos utilizar el modo 1, que se adapta perfectamente porque su cuenta máxima puede ser: 65.536, menor que el valor que nos piden. Si hubiéramos elegido otro modo, por ejemplo, el modo 0, tendríamos que utilizar una variable para almacenar los 4 desbordamientos que me permitirían alcanzar el número máximo de piezas. En este caso, el número de piezas en el almacén sería el resultado de multiplicar esta variable ‘desbordes’ x 8192 y sumarle el valor actual de los registros THx TLx. 14. Define e inicializa los registros SFR para habilitar las interrupciones de los temporizadores. Cuando pide ‘de los temporizadores’ se asume que son todos (los tres que incluye el micro), en caso de duda siempre hay que preguntar. El registro para habilitar las interrupciones es IEN0, veámoslo:

Para cualquier duda, corrección o sugerencia puedes enviarme un email a: [email protected] · Mayo2008 · v 2.0

Asignatura Informática Industrial · ETSID · Universidad Politécnica de Valencia · Mayo 2008

Cuando escribes un “1” en cada uno de los bits: ET0, ET1 y ET2, estás habilitando las interrupciones asociadas a cada uno de los temporizadores, es decir, cuando cualquiera de ellos llegue al final de su cuenta (desbordamiento), la interrupción generada le llegará al microcontrolador y se ejecutará la rutina de servicio. Si por el contrario, escribimos un “0” en alguno de ellos, la conexión entre el temporizador y el microcontrolador estará ‘cortada’ y aunque el temporizador llegue al final de su cuenta, la rutina de interrupción (o servicio) nunca llegará a ejecutarse. Fíjate en el bit 7 que corresponde a la habilitación global de interrupciones. Si este bit está a “0”, todas las interrupciones estarán bloqueadas. Cuando tengas configurados los bits asociados a las interrupciones de interés, tendrás que activar este bit (EA=1) para que el sistema funcione correctamente. 15. Escribe el código necesario para definir los registros SFR e inicializar el T0 como temporizador, control de puerta interno (GATE), en modo 2 y con una cuenta inicial de 29, poniéndolo en marcha a continuación. Lo primero es definir los registros que vayamos a utilizar, en este caso los asociados al temporizador 0: TMOD, TCON, TH0 y TL0. Sólo hay que definir el nombre del registro con la dirección que le corresponde según las tablas. Si utilizáramos otro micro, los registros quizá tendrían otro nombre y casi con seguridad las direcciones serían diferentes, por lo que hay que tener a mano, siempre los datos de los SFR para programar correctamente. La configuración de los registros quedaría del siguiente modo: sfr TMOD=0x89; sfr TCON=0x88; sfr TH0=0x8C; sfr TL0=0x8A; sbit TR0=TCON^4;

Esta última instrucción define la posición 4 del registro TCON a la que se puede acceder directamente. Ahora vamos a configurar el modo de funcionamiento del temporizador, esta operación se hace desde el registro TMOD, aquí puedes ver los bits de dicho registro:

Como los cuatro bits de mayor peso corresponden al temporizador 1 y no los usamos en este ejercicio, los ponemos a “0”. Respecto a los cuatro bits de menor peso que corresponden a la configuración del timer0, lo configuramos del siguiente modo: * GATE=0, C/T#=0 y M1=1 y M0=0, siendo el valor a escribir en TMOD  0x02: TMOD=0x02;

Por último pide una cuenta inicial. Pasamos “29” a binario y rellenamos ceros por la izquierda hasta completar 8 bits que corresponde al tamaño de los registros de este

Para cualquier duda, corrección o sugerencia puedes enviarme un email a: [email protected] · Mayo2008 · v 2.0

Asignatura Informática Industrial · ETSID · Universidad Politécnica de Valencia · Mayo 2008

micro: 00011101. Lo convertimos a hexadecimal y obtenemos: 0x1D. Por lo tanto el registro TL0 y TH0 tendrán este valor (idéntico porque es modo auto recarga): TH0=0x00; TH=0x1D; TL0=0x1D;

Lo único que nos falta es poner en marcha el temporizador escribiendo un “1” en TR0: TR0=1; // ponemos en marcha el timer.

IMPORTANTE: Por último, no es lo mismo pedir que la cuenta inicial sea 29 (en este caso el temporizador empieza adelantado), que pedir que se temporice 29 microsegundos. En este segundo caso habría sido necesario descontar 29 de 256 para que el temporizador se quedara justo a 29 microsegundos del desbordamiento, grabando entonces este valor (227=0xE3) en los registros TH0 y TL0. 16. Escribe el código necesario para definir los registros SFR e inicializar el T1 como contador, con control de puerta externo y modo 1, poniéndolo en marcha con una cuenta inicial de 0. Básicamente es idéntico al ejercicio anterior, pero definiendo los registros relacionados con el temporizador 1 (sfr TH1, sft TL1 y sbit TR1), configurando los cuatro bits de mayor peso del timer1 en el registro TMOD y ajustando la cuenta inicial, esta vez en cero en los registros TH1 y TL1: sfr TMOD=0x89; sfr TCON=0x88; sfr TH1=0x8D; sfr TL1=0x8B; sbit TR1=TCON^6; TMOD=0xD0; TH1=0x00; TL1=0x00; TR1=1; // ponemos en marcha el timer.

17. Se desea temporizar una señal de control de 540 microsegundos. Define correctamente los registros SFR e inicializa los valores de la cuenta inicial utilizando el temporizador T0 para este fin. Con los registros de este micro, puedes temporizar como máximo 65.536 microsegundos, en modo 1 (16 bits). En este caso nos sobraría con el modo 0 (13 bits), ya que podría temporizar un máximo de 8.192 microsegundos, por lo tanto, vamos a utilizar el modo 0. Primero empezamos definiendo los registros necesarios: sfr TMOD=0x89; sfr TCON=0x88; sfr TH0=0x8C; sfr TL0=0x8A; sbit TR0=TCON^4;

Para cualquier duda, corrección o sugerencia puedes enviarme un email a: [email protected] · Mayo2008 · v 2.0

Asignatura Informática Industrial · ETSID · Universidad Politécnica de Valencia · Mayo 2008

Ajustamos el modo de funcionamiento del temporizador: TMOD=0x00;

Sólo quedaría calcular la cuenta inicial. Como nos piden 540 microsegundos, debemos inicializar este temporizador a 8.192-540=7.652, que convertido a hexadecimal es: 0x1DE4 quedando los registros del siguiente modo: TH0=0x1D; TL0=0xE4;

Lo último que nos queda es poner en marcha el temporizador: TR0=1; // ponemos en marcha el timer.

Quedaría añadir la habilitación de las interrupciones (registro IEN0) para los temporizadores utilizados, definiéndolo correctamente IEN0 como sfr. Te invito a que añadas esta parte de código que habilite las interrupciones para los temporizadores T0 y T1 (recuerda también que EA tiene que ser “1” antes de que TR0 sea “1”).

Para cualquier duda, corrección o sugerencia puedes enviarme un email a: [email protected] · Mayo2008 · v 2.0

Get in touch

Social

© Copyright 2013 - 2024 MYDOKUMENT.COM - All rights reserved.