TI中文支持网
TI专业的中文技术问题搜集分享网站

Capacitive-Touch 使用定时器timerA1 count没有值的问题 – msp430g2553

使用Capacitive-Touch Pins做触摸检测,参考官方msp430g2xx3_pinosc_04.c,P2.0作为输入,使用的时timerA0,Demo没有问题。

现在把定时器换为timerA1,获取不到count值,请教这是为什么?

/**
 * @brief触摸检测初始化,使用定时器的捕捉模式
 * @AuthorWuWenhua
 * @DateTime 2018-06-26
 */
void touch_init(void)
{
	P2DIR  &= ~TOUCH_PIN;
	P2SEL  &= ~TOUCH_PIN;
	P2SEL2 |=  TOUCH_PIN;				// input oscillation feeds TACLK

	TA1CTL= TASSEL_3 + MC_2;			//	时钟源:INCLK, 连续模式:定时器计数增加至0FFFFh。
	TA1CCTL1 = CM_3 + CCIS_2 + CAP;		// 上升沿和下降沿二者的捕捉,TACCRx 输入信号:GND,捕捉模式
}


/**
 * @brief获取触摸测量结果值
 * @AuthorWuWenhua
 * @DateTime 2018-06-26
 * @return[description]
 */
uint16 touch_measure(void)
{
	uint16 count = 0;

	touch_init();						// 初始化触摸设置

	TA1CTL |= TACLR;					// Clear Timer_A TAR

	delay_ms(1);

	TA1CCTL1 ^= CCIS0;	// Create SW capture of CCR1
	count= TA1CCR1;// Save result
	P2SEL2&= ~TOUCH_PIN;
	TA1CTL= 0;						// Stop Timer_A

	return count;
}

Susan Yang:

建议您按照 dev.ti.com/…/ 的格式来修改,主要将timerA0对应的寄存器修改成timerA1对应的值。

hasen:

回复 Susan Yang:

谢谢!
demo使用定时器A0寄存器TA0CTL、TA0CCTL1、
使用定时器A1,修改为TA1CTL、TA1CCTL1、
请问这里有什么错误吗?
再请教Capture是不是只能连接到timerA0?

Susan Yang:

回复 hasen:

可以连到timerA1的,您可以看一下www.ti.com/…/slaa490d.pdf 的 Table 8. halDefinition Descriptions

hasen:

回复 Susan Yang:

多谢,请问我贴的代码哪里配置有问题。我把TA1xx改为TA0xx使用TimerA0,是可以获取count值的,但是使用TimerA1,count值始终是0?

hasen:

回复 Susan Yang:

PinOSC是只能到TA0CLK吗?

灰小子:

回复 hasen:

貌似是的。msp430g2553的触摸库是比较早的版本。
有条件的话 推荐使用MSP430FR2633。TI新一代的电容触摸芯片。

Susan Yang:

回复 hasen:

很抱歉之前给您的误导,根据图示PinOSC是只能到TA0CLK

hasen:

回复 灰小子:

多谢!

hasen:

回复 灰小子:

多谢!

hasen:

回复 Susan Yang:

多谢!

赞(0)
未经允许不得转载:TI中文支持网 » Capacitive-Touch 使用定时器timerA1 count没有值的问题 – msp430g2553
分享到: 更多 (0)