Intentando configurar un temporizador en mi MSP430F5529 que debería interrumpirse después de aprox. 2 segundos.
Mi configuración inicial se ve así:
TA1CTL = (TASSEL_SMCLK | ID_DIV8 | MC_UP |TACLR | TAIE | TAIFG);
TA1EX0 = (TAIDEX_DIV4);
TA1CCR0 = 0xFFFF;
TA1CCTL1 = (CM_NONE | CCIS_A | CAP_0 | CCIE_1 | OUT_1 | COV_0 | CCIFG_0);
Por lo que sé, esto debería configurar el temporizador A para interrumpir aprox. cada 2 segundos.
Frecuencia SMCLK = 1 MHz
TA1CTL está dividido por 8 con ID_DIV8, y nuevamente por 4 con TAIDEX_DIV4, por lo que en total está dividido por 32. Esto significa que TA1R recibe un tick cada 32us. Cuenta hasta que alcanza TA1CCR0, que está en 65,536. 65,536 * 32us = 2.09715 segundos.
La interrupción es exitosa, sin embargo, establece varias marcas de manera incorrecta.
Establece CCIFG en TA1CCTL0, TA1CCTL1 y TA1CCTL2. No solo TA1CCTL1, como esperaba.
Otra pregunta que tengo es la siguiente: ¿por qué me veo obligado a usar TA1CCR0 para especificar qué valor se cuenta, cuando estoy usando TA1CCTL1? intenté especificar un valor en TA1CCR1 inicialmente, pero el contador nunca incrementado. Esto no tiene ningún sentido para mí.
Entonces, si alguien por ahí está bastante familiarizado con el MSP430 y podría ayudar, se lo agradecería enormemente.