[Práctica 3 - Teclado] *Tiempos en la ejecución de los programas

[Práctica 3 - Teclado] *Tiempos en la ejecución de los programas

de Denis Gabriel Peña Presa -
Número de respuestas: 7

Hola buenas, hoy trabajando en la práctica 3, más especificamente en la parte d nos surigió la siguiente duda:  Al probar el programa de prueba de la parte d.2 vemos que el reloj que se debería ir decrementando cada una décima de segundo, en realidad lo hace en más tiempo, en más o menos una vez y media el tiempo. Aparentemente la inicialización de los bloques timmer y counter están hechas bien y con el valor de las constantes y el preescaler que calculamos para que las interrupciones se den  cada una décima de segundo, ¿Cuál podría ser el problema?

En respuesta a Denis Gabriel Peña Presa

Re: [Práctica 3 - Teclado] *Tiempos en la ejecución de los programas

de Julio Perez -
Tengan en cuenta que si configuran un valor N como constante de recarga el

contador cuenta desde N hasta 0 inclusive. Es decir que la frecuencia se

divide por (N+1). Esto pasa tanto en el bloque timee como en el bloque

contador.

Si el valor de N es grande el error que se produce es despreciable, pero si

N es pequeño el error es significativo. p. EJ. si N=2 la frecuencia se

divide por 3 en lugar de por 3 y el intervalo de tiempo es 50% mayor.



El vie., 11 de jun. de 2021 19:31, Denis Gabriel Peña Presa (vía FING) <
En respuesta a Julio Perez

Re: [Práctica 3 - Teclado] *Tiempos en la ejecución de los programas

de Denis Gabriel Peña Presa -
Una pregunta más Julio ¿ Por qué pasa eso de que cuenta una de más del valor de la constante? ¿Es porque, como se ve en la figura 6 que acompaña el manual del Timer, el primer decremento del valor del contador tarda el doble que el resto de veces? ¿o es pura coincidencia? Porque la flag zc va a 1 en la siguiente subida de clk luego de  que la cuenta llega a cero ¿O es que la cuenta cuando uno le carga por ejemplo '5', en la cuenta que se decrementa se carga el valor '6' ?

Figura 6 del manual de usuario del bloque Timer
En respuesta a Denis Gabriel Peña Presa

Re: [Práctica 3 - Teclado] *Tiempos en la ejecución de los programas

de Julio Perez -
Denis:

es porque está hecho así. Cuenta desde N hasta 0, y recién al final del

intervalo en que el contador está en 0 se produce la recarga del contador,

el pulso en zc y la activación de la salida /INT, esto último solamente si

lo configuraste con el bit EI en 1.

En la hoja de datos del Timer está mostrado en la Fig. 7 para el caso

particular en que N=5 y el prescaler divide por 2.



No había notado lo que decís de la figura 6, y no es que el primer valor de

la cuenta se mantenga el doble de tiempo, sino que demora dos períodos de

reloj en comenzar a decrementar el contador.

Eso es un valor fijo de dos períodos de reloj, solo para la primera vez.

Resulta muy notorio porque las simulaciones de las que se sacaron las

figuras se hicieron con el divisor de prescaler seteado en 2^1 para poder

visualizar un ciclo completo. Esa demora de dos ciclos de reloj se hace

despreciable cuando el prescaler toma valores mayores.



julio



El vie, 11 de jun. de 2021 a la(s) 22:31, Denis Gabriel Peña Presa (vía
En respuesta a Julio Perez

Re: [Práctica 3 - Teclado] *Tiempos en la ejecución de los programas

de Denis Gabriel Peña Presa -

Buenísimo osea eso de que dure el doble en decrementar el primero es pura coincidencia por el valor de prescaler que estaba seleccionado, en realidad son 2T fijos la primera vez desde que se setea la constante. Mi duda en realidad venía de observar que en la figura 7 la señal ZC sube en el siguiente ciclo de reloj luego de que la cuenta vale 0 y no al final, cuando se baja Int_n por ejemplo. Acá no se nota tanto porque el valor del prescaler es chico pero sino sería una diferencia muy grande de ciclos T entre que sube ZC y que se baja Int_n (por ejemplo llamemosle dt0). Igual creo que ya entendí porque sin importar lo que hagan o dejen de hacer las señales, el tiempo sigue corriendo y ese dt0, que no se cuenta al final de cada cuenta (por la señal ZC), se  agrega en realidad al comienzo de la misma ¿no? ¿o está mal lo que digo, y ZC sube 1T antes de que baje Int_n?

En respuesta a Denis Gabriel Peña Presa

Re: [Práctica 3 - Teclado] *Tiempos en la ejecución de los programas

de Julio Perez -
Más bien es como decís al final: zc está en 1 durante el último período de reloj del intervalo de tiempo en que la cuenta está en cero; los flancos de bajada de zc e INT_n se producen cuando termina el intervalo medido de 2^prescaler x (N+1) períodos de reloj.