24 de junio de 2008

Dudas de un problema de examen

En el examen de Junio de 2006, sobre el siguiente problema:

"Se desea controlar un proceso industrial que temporice un tiempo t1 de 1 segundo,
posteriormente otro tiempo t2 de medio segundo y cuando finalice t2 escriba en el puerto
P2 el valor 0xF1 y así sucesivamente. Para ello se utilizará el Timer 0 del microcontrolador Atmel y se programará en modo 16 bits atendido por interrupciones. Para temporizar los tiempos t1 y t2 se utilizará el conteo de desbordamientos. Reloj de 12 Mhz."


Pregunta1: En el enunciado, nos dicen sacar por el puerto P2 el valor en hexadecimal de F1 y sucesivamente. ¿Qué quieren que hagamos?

-R: lo que quería decir (yo puse el problema) es que se enviara dicho valor por el puerto y volviera a comenzar el proceso de nuevo...

Pregunta2: Para calcular los valores de THO y TLO tenemos que calcular el tiempo del ciclo de maquina ¿Qué fórmula se utiliza?

-R: por supuesto, es lo primero que debes hacer porque todos los cálculos se basan en el ciclo de máquina y éste depende de la velocidad de la máquina, a mayor frecuencia, el ciclo de máquina es más 'rápido' (el tiempo que tarda en ejecutar una instrucción es más pequeño ya que el reloj va más rápido). Por lo tanto lo primero es calcular vuestro CM (ciclo máquina) en función de la frecuencia que os den.

Un ejemplo: Supongamo un problema en el que te dan una frecuencia de 12Mhz...

- Primero calcula el inverso para sacar el periodo: 1/12Mhz=0,8333microsegundos.

- Después mira la documentación del micro para ver cuantos ciclos de reloj tiene un ciclo de máquina (Atmel tiene 12CLK por CM, Microchip tiene 4CLK por CM).

- En nuestro caso (Atmel) si ves las transparencias tiene 12, por lo tanto un ciclo de máquina en este micro tardará en ejecutarse: 12x0,8333...= 1microsegundo.

Fíjate que ésto es lo primero que tienes que hacer en un problema, ya que todos los cálculos están basados en el tiempo de ciclo de máquina. Prueba a hacerlo para otras frecuencias como 2Mhz, 10Mhz o 40Mhz.

Pregunta3: Una vez calculado el TCM calculamos el número de cuentas necesarias. Si el número de cuentas es superior a 2^número de bits del temporizador se tiene que obtener el resto que introducimos en THO y TLO. ¿Tiempo total = TCM x Cuentas?

-R: Imagina que te sale una cuenta de 65.781 (una cuenta completa de 65.536 más una parcial de 245), en este caso tendrás que cargar primero el resto 245 en TL0 (TH0=0) para contabilizarlo primero y después dejar que se desborde una vez para completar la cuenta...

Puedes hacerlo al revés, primero la cuenta completa y después la parcial. En ambos casos necesitas una variable que te cuente los desbordamientos.

Resumiendo: cuando la cuenta supera el valor máximo del registro, hay que hacer varias pasadas o desbordamientos para ir 'acumulando', por lo tanto el tiempo total será: TCMxCuentas.

No hay comentarios: