Interfaz I2C del reloj en tiempo real MCP7940N

0

El RTC MCP7940N se utiliza en el sistema. El microcontrolador y RTC MCP7940N están conectados a través de la interfaz I2C.

Me gustaría saber cuál es el mejor diseño para leer el valor del temporizador del RTC.

Método # 1: Al recibir la solicitud de otros módulos de alto nivel, las tramas I2C se guardan y se envían. La interrupción de recepción de datos I2C se utiliza para leer los datos I2C y calcular el valor de tiempo. Se utiliza un mecanismo de evento para informar a los módulos requeridos sobre la disponibilidad del nuevo valor del temporizador

Método # 2: La tarea cíclica se utiliza para enviar las tramas I2C cada 5 ms y los datos I2C recibidos se sondean mediante la tarea cíclica para calcular el valor del temporizador. Los módulos de alto nivel pueden leer el valor de tiempo de manera sincronizada, pero el valor del temporizador tendrá un error de precisión de 5 ms debido a que el valor del temporizador RTC se lee cada 5 ms.

Por favor, proporcione sus opiniones sobre esto y el mejor enfoque para leer el valor del temporizador sin cargar mucho la CPU.

    
pregunta user1020828

1 respuesta

1

He creado muchas aplicaciones de productos donde el RTC se lee diez veces por segundo. Esto es lo suficientemente rápido como para que un usuario esté leyendo el tiempo en una pantalla que no note ninguna actualización de marca de segundo no uniforme.

La lectura periódica es importante si las actividades asíncronas no pueden vivir con la latencia para acceder al RTC en el momento de su evento.

La velocidad de lectura de RTC se determina a partir de una interrupción periódica que es una parte central del distribuidor integrado para múltiples actividades de software. La tasa de interrupción real es de 1 ms, pero ejecuta varias tareas periódicas de acuerdo con una máquina de estados que opera en una secuencia de estado cíclica de 0 a 9 (cada estado se produce cada 10 ms). Algunos estados usan variables de contador adicionales para acelerar la tarea, como la lectura de RTC que usó un divisor adicional de 0 a 9.

La interrupción de RTC puede mantener un contador que cuenta de 0 a 99 e incrementa una vez cada 1 ms. Este contador puede sincronizarse con el proceso de lectura de RTC (es decir, restablecer) y luego usarse como un componente de tiempo de mayor resolución más allá del valor de segundos del RTC.

Puede ampliar esto aún más simplemente leyendo el HHMMSS del RTC a las 10 veces por segundo para hacer que el tiempo de lectura sea generalmente más corto. Luego, una vez por segundo, puede leer los valores adicionales de YYMMDD / DAY.

    
respondido por el Michael Karas

Lea otras preguntas en las etiquetas