Básicamente eso. La forma en que lo estoy haciendo ahora es con el TimerA configurado en interrupciones de 1 segundo. Pero creo que es muy molesto. ¿Hay otras formas de hacerlo?
Básicamente, quiero configurar temporizadores en ese reloj, como, apagar hasta que hayan pasado 40 segundos...
No está del todo claro si desea un reloj en tiempo real o un cronómetro (los 40 segundos que menciona).
Podría usar un RTC IC (reloj en tiempo real), como el NXP PCF8563 . Este está disponible en varios paquetes, incluido el antiguo DIL y un DFN muy pequeño .
Pero probablemente no necesite un RTC IC separado. Por lo general, se usa porque consume muy poca energía y el resto del circuito puede apagarse mientras el RTC sigue funcionando con una batería o un supercondensador. Sin embargo, el MSP430 también es un dispositivo de bajo consumo y tiene un oscilador de baja frecuencia que puede funcionar con el mismo cristal de 32,768 kHz que usaría para el RTC.
En un proyecto, tenía el MSP430 funcionando continuamente en un cristal de 32 kHz y, sin embargo, consumía menos de 5
R. Eso es más que un RTC (el PCF8563 solo necesita 250 nA), pero será aceptable para muchas aplicaciones.
¿Cuál es tu problema con la interrupción de 1s? Si desea hacer un reloj en tiempo real, necesitará una señal de tiempo de todos modos, ya sea generada internamente o proveniente de un RTC externo. Tras la interrupción, puede realizar las actualizaciones requeridas de los contadores de segundos, minutos y horas, y esperar la siguiente interrupción. Incluso podrías trabajar con décimas de segundo , aunque con los 32.768kHz esto tendrá una desviación menor. Tendrías cuatro décimas de segundo o 3277 tics de reloj, seguidos de una décima de 3278 tics, para obtener exactamente 1/2 segundo, así que repite este patrón una segunda vez para completar un segundo.
Hay dispositivos MSP430 con un oscilador de baja potencia que utilizan un cristal de reloj estándar de 32,768 kHz y están diseñados específicamente para ese tipo de aplicación. Uno típico es el MSP430F1101.
Por lo general, un reloj en tiempo real se realiza al tener un módulo de reloj en tiempo real integrado en el microcontrolador o al usar un módulo de reloj en tiempo real externo como el DS1305 de Maxim.
Por lo general, se pueden programar para activar una interrupción en un momento predefinido y funcionar con su propio cristal de 32,768 KHz. A menudo tienen su propio circuito de respaldo de batería, y algunos incluso contienen circuitos de carga también.
marcajes