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?
[Práctica 3 - Teclado] *Tiempos en la ejecución de los programas
Número de respuestas: 7Re: [Práctica 3 - Teclado] *Tiempos en la ejecución de los programas
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) <
Re: [Práctica 3 - Teclado] *Tiempos en la ejecución de los programas
Re: [Práctica 3 - Teclado] *Tiempos en la ejecución de los programas
Re: [Práctica 3 - Teclado] *Tiempos en la ejecución de los programas
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
Re: [Práctica 3 - Teclado] *Tiempos en la ejecución de los programas
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?
Re: [Práctica 3 - Teclado] *Tiempos en la ejecución de los programas
Re: [Práctica 3 - Teclado] *Tiempos en la ejecución de los programas
¡Ah! Buenísimo Julio, gracias. Lo que pasa que debido al valor del prescaler, la figura me generaba esa duda.