Guía probada para gestionar un fallo del cristal MOSC en los microcontroladores TM4C129x de Texas Instruments
1 Activar el monitor de hardware y configurarlo correctamente
- Habilita la verificación del MOSC estableciendo MOSCCTL.CVAL = 1. - Selecciona el rango adecuado para cristales de 10 a 25 MHz con MOSCCTL.OSCRNG = 1 rango alto. - Indica al chip que hay cristal o reloj single ended conectado limpiando MOSCCTL.NOXTAL = 0. - Evita apagarlo por error limpiando MOSCCTL.PWRDN = 0 para modo cristal y, si periféricos como Ethernet PHY dependen del MOSC, considera fijar DSCLKCFG.MOSCDPD = 1 para mantenerlo activo en suspensión.
2 Define la acción ante fallo reset más NMI o interrupción
El verificador funciona en continuo. Si el oscilador principal sale de banda, el hardware conmuta automáticamente el reloj del sistema al PIOSC de 16 MHz. A partir de ahí, según MOSCCTL.MOSCIM: - MOSCIM = 0 se produce un reset interno, se pone a 1 RESC.MOSCFAIL y, tras el reinicio, la ejecución entra en el manejador de NMI. - MOSCIM = 1 se genera una interrupción enmascarable flujo RIS.MOFRIS y MISC.MOFMIS. Elige la ruta que mejor encaje con la seguridad de tu producto reset para seguridad frente a continuar degradando el servicio.
Consejo en revisiones antiguas de silicio, el registro NMIC puede no indicar de forma fiable el origen del NMI errata SYSCTL 13. Usa RIS.MOFRIS para confirmar un fallo MOSC.
3 Qué debe hacer realmente tu manejador ya sea NMI tras reset o un ISR normal
1 Reconocer y registrar - Lee y después limpia RESC.MOSCFAIL escribiendo 0 para borrar ese bit pegajoso. - Si usas interrupciones, borra MISC.MOFMIS escribiendo 1 en ese bit.
2 Mantener un reloj seguro Ya estás en PIOSC por la conmutación automática, pero asegura explícitamente que el sistema se mantenga en una fuente estable PIOSC o PLL alimentada por PIOSC hasta la recuperación.
3 Intentar recuperación con temporización máxima Rehabilita MOSC limpia PWRDN y deja NOXTAL = 0, espera la puesta en marcha de MOSC RIS.MOSCPUPRIS, luego vuelve a bloquear la PLL vigilando RIS.PLLLRIS. Si cualquier espera excede el tiempo límite, aborta y permanece en modo seguro.
4 Restauración gradual Solo cuando MOSC y PLL sean estables, conmuta el reloj del sistema de vuelta a MOSC o MOSC más PLL y restablece servicios que requieren temporización precisa Ethernet, USB, etc.
4 Añade un watchdog cinturón y tirantes Ejecuta el Watchdog 1 desde un reloj alternativo PIOSC o LFIOSC vía ALTCLK para que siga funcionando aunque el MOSC desaparezca. Si tu lógica de recuperación se bloquea, el watchdog garantiza un reset.
5 Qué puede y qué no puede detectar el fallo de MOSC El circuito de verificación opera en runtime, no solo al arranque, y detecta cuando la frecuencia del MOSC sale de una banda válida amplia. No es un detector de deriva de precisión por ejemplo 25 MHz frente a 24 MHz puede no dispararse. Si necesitas mayor exactitud, implementa una comprobación cruzada por software midiendo un reloj derivado de MOSC frente al PIOSC.
6 Errores comunes y erratas a tener en cuenta - Operaciones de EEPROM y flash cualquier reset incluido el de fallo MOSC durante escrituras de EEPROM puede corromper datos. Evita escrituras no volátiles en la ruta de fallo. - Consumo en deep sleep algunas revisiones elevan consumo en deep sleep si no apagas explícitamente el MOSC. Sigue la secuencia de energía recomendada y usa MOSCDPD cuando debas mantener vivo el MOSC. - Peculiaridad del driver en ROM versiones tempranas de ROM SysCtlClockFreqSet tuvieron problemas con MOSC. Emplea la versión en flash de TivaWare si tu silicio está afectado.
Checklist mínimo para tu bring up
- Configura MOSCCTL CVAL = 1, OSCRNG = 1 para 10 a 25 MHz, NOXTAL = 0, PWRDN = 0. - Decide la acción MOSCIM = 0 reset y NMI o MOSCIM = 1 interrupción y habilita IMC.MOFIM. - En el manejador limpia MISC.MOFMIS o RESC.MOSCFAIL, mantente en PIOSC, intenta reactivar MOSC y PLL con tiempos máximos. - Habilita WDT1 con ALTCLK PIOSC o LFIOSC como último recurso. - Si tu PHY de Ethernet depende de MOSC, fija DSCLKCFG.MOSCDPD = 1 para impedir apagado accidental.
En Q2BSTUDIO te ayudamos a diseñar y validar firmware robusto para TM4C129x con prácticas de tolerancia a fallos, diagnóstico y recuperación automática, integrándolo con plataformas, telemetría y pipelines de pruebas. Somos una empresa de desarrollo con foco en aplicaciones a medida y software a medida, especialistas en inteligencia artificial, ciberseguridad, servicios cloud aws y azure, servicios inteligencia de negocio y power bi, automatización y agentes IA para empresas.
Si quieres un stack embebido de calidad productiva con telemetría, actualización segura OTA y diagnóstico predictivo apoyado en modelos de ia para empresas, nuestro equipo puede acompañarte de extremo a extremo desde el firmware hasta backend y visualización.
Descubre cómo aceleramos tu roadmap con aplicaciones a medida integradas con tus dispositivos, y potencia tus capacidades de detección y respuesta con inteligencia artificial y agentes IA diseñados para tu operación.
Palabras clave para ayudarte a encontrarnos software a medida, inteligencia artificial, ciberseguridad, servicios cloud aws y azure, servicios inteligencia de negocio, power bi, ia para empresas, agentes IA, automatización de procesos y soporte DevSecOps para tus productos embebidos.