программирование на MSP430 в CCS
С помощью Timer_A, ACLK и его прерывания помигать светодиодом (сейчас просто моргает-тоже давно оторвался-то же время включился).
Этот код мигает светодиодом с задержкой в 2 секунды. Проблема в том, что регистр TA1CCR0 может иметь максимальное значение 0xFFFF= 65535 (2 секунды для ACLK). И для моего приложения (мигающий светодиод - это только пример) мне понадобится шкала от 1 секунды до 999 секунд. (6-7 строки в коде). Как я могу это сделать? Является ли это возможным?
#include <msp430.h>
#include <msp430f6736.h>
void CfgTA(unsigned long delayCycles)
{
int t2=2; // must be variable from 1 to 999
t2=delayCycles*t2;
TA1CCTL0 |= CCIE; //Enable Interrupts on Timer
TA1CCR0 = t2-1; //Number of cycles in the timer
TA1CTL |= TASSEL_1 | MC_1; //ACLK , UP mode
}
void ledblink()
{
//LED config
P4DIR |= BIT6;
P4OUT &= ~BIT6;
CfgTA(32768); //Timer configuration to blink every 1 sec
while (1)
{
_bis_SR_register(LPM3_bits + GIE); //Enter Low Power Mode 3 with interrupts
}
}
#pragma vector=TIMER1_A0_VECTOR
__interrupt void Timer_A0(void)
{
P4OUT ^= BIT6; // Swapping on/off LED
}
int main(void) {
WDTCTL = WDTPW | WDTHOLD; // Stop watchdog timer
ledblink();
return 0;
}