Aumentar la demora usando el registro 'opción' en Pic16f877a

2

Aprendí que el máximo 'retardo' posible en pic16f877a en ejecución con una fuente de 11.0592MHz (11059200/4 en realidad) es de 23 ms ... sin usar demoras de software (delay_ms ()) ..

el cálculo fue max_delay = ((FF-00) xPrescalarxTimeperiod) = (255x256x3.62xe-7) = ~ 23ms ..

Mi pregunta es ¿cómo 'aumentar este retraso a 1 segundo' sin usar el retraso del software?

    
pregunta V V Rao

1 respuesta

2

¿Por qué es difícil?

Esto no es lo más fácil de hacer. ha elegido un oscilador de cristal que se ha elegido específicamente para facilitar la división a las velocidades en baudios comunes.

Por ejemplo:

11.0592MHz / 9600 es 1152

11.0592MHz / 115200 es 96

Eso significa que puedes alcanzar algunas velocidades de transmisión estándar perfectamente con un determinado divisor. Da UART muy consistente. Ahora quieres contar el tiempo.

Contando 1 segundo

Si toma un 11.0592MHZ, luego divídalo entre 256 y 64, obtendrá un valor de 675. Esto significa que si desea un conteo preciso de segundos, debe interrumpir cada 256 * 64 ciclos de reloj y contar con una variable en su interrupción puede golpearlo.

Cómo hacerlo más fácil

Tienes dos opciones, aceptando error. Primero, tu ecuación se dividió por 255 porque estás contando de 0 a 255, pero como la interrupción está en exceso, en realidad es como cuentas hasta 256, por lo que deberías dividir por 256.

¿Mi reloj tiene un error?

Decida cuánta precisión necesita. A menudo no necesita precisión en la precisión; si este es el caso, acepte que es casi un segundo y use lo que Thomas dijo en el comentario. Cuente lo más cerca que pueda y haga frente. El temporizador 1 te permitirá dividir entre 65536 y pasar más tiempo haciendo cosas que no sean manejar interrupciones.

¡Necesito precisión en mi reloj!

Debe seleccionar un valor de oscilador que sea un múltiplo de 32768 Hz . Lo que quieres es algo que pueda reducirse a 1Hz de la división por una potencia de 2.

Si necesita la buena velocidad en baudios y un buen contador, la página wiki tiene una marca para RTC (buena para el reloj en tiempo real). 4.608 MHz es una gran cosa, se divide a 1Hz bastante fácil y también es bueno para 115200 baudios.

    
respondido por el Kortuk

Lea otras preguntas en las etiquetas