This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

[参考译文] CCS/MSP430G2553:MSP430G2553触摸时钟影响计数

Guru**** 657930 points
Other Parts Discussed in Thread: MSP430G2553, MSP430FR2633
请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/microcontrollers/msp-low-power-microcontrollers-group/msp430/f/msp-low-power-microcontroller-forum/653244/ccs-msp430g2553-msp430g2553-touch-clock-affects-counting

部件号:MSP430G2553
主题中讨论的其他部件: MSP430FR2633

工具/软件:Code Composer Studio

你好


i使用MSP430G2553并通过RO_PINOSC_TA0_WDTp方法实现触摸检测,遇到以下问题:
对于固定电容变化,SMCLK设置为1MHz,TA0CCR1测量值的变化很小,变化约为5 %。
SMCLK设置为相同的125KHz电容变化。 TA0CCR1的测量在70 % 方面差异很大。
根据测量原理,测量窗口时间变小,然后TA0计数基数变小,但不会影响变化幅度(这是我个人的理解,不知道是正确的)。
这个问题让我困扰了很长时间,请告诉我原因吧?


谢谢你

此致

刘若杰

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好,

    我在理解您的问题时遇到了一些困难,我不熟悉您所提到的"RO_PINOSC_TA0_WDTp"方法。 您能否发布您的代码副本,以便我查看,看看您是否做了任何可能解释此变体的错误操作?

    此致,
    Caleb Overbay
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好, 

    谢谢回复。
    这里是关于RO_PINOSC_TA0_WDTp方法的关键代码。
    这个代码来自官方演示,我没有改变。
    有一张图片,这是我的主要功能。

    ////////////////////////// 代码/////////////////////////////////////////////////////////////////////////////////////////////////////////////
    void iiiTI_CTS_RO_PINOSC_TA0_WDTp_HAL (const结构传感器*group,unsigned int *counts) { UINT8_t I; //**上下文保存 //状态寄存器: // WDTp:IE1,WDTCTL // TIMERA0:TA0CTL,TA0CCTL1 //端口:PxSEL,PxSEL2 UINT8_t环境保存SR; UINT8_t环境保存IE1; UINT16_t环境保存WDTCTL; UINT16_t上下文保存TA0CTL,上下文保存TA0CCTL1,上下文保存TA0CCR1; UINT8_t环境保存选择,环境保存选择2; 环境SaveSR =__GET_SR_REGISTER(); 环境保存IE1 = IE1; contextSaveWDTCTL = WDTCTL; 环境保存WDTCTL &= 0x00FF; 环境保存WDTCTL || WDTPW; 环境SaveTA0CTL = TA0CTL; 环境SaveTA0CCTL1 = TA0CCTL1; 环境SaveTA0CCR1 = TA0CCR1; //**设置测量计时器*************************************************** //选项包括TA0,TA1,TB0,TB1,TD0,TD1。这些选项被推入 //电容式触摸层。 //配置和启动计时器 TA0CTL = tassel_3+MC_2; // TALCK,连续模式 TA0CCTL1 = CM_3+CCIS_2+CAP; //位置和负,接地,盖 IE1 |= WTIE; //启用WDT中断 用于(i = 0;I<(group->numElements);I++) { //上下文保存 contextSaveSel =*((group->arrayPtr[i])->inputPxselRegister); contextSaveSel2 =*((group->arrayPtr[i])->inputPxsel2Register); //为驰豫振荡器*(((group->arrayPtr[i])->inputPxselRegister) &=~((group->arrayPtr[i])->输入位数(arraybits[i)=) //**设置门控计时器******************************************************** //设置传感器测量的持续时间 WDTCTL =(WDTPW+WDTTMSEL+group->measurGateSource+group->AcculationCycles); TA0CTL |= TCLR; //清除Timer_A TAR IF (group->measateSource == gate_WDT_ACLK) { __bis_sr_register(LPM3_bits+GIE);//等待WDT中断 } 否则 { __bis_sr_register(LPM0_bits+GIE);//等待WDT中断 } TA0CCTL1 ^ D50= 0; //创建CCR1 计数的SW捕获[i]= TA0CCR1; //保存结果 WDTCTL = WDTPW + WDTHOLD; //停止看门狗计时器 //上下文还原 *((group->arrayPtr[i])->inputPxselRegister)= contextSaveSel; *(((group->arrayPtr[i])->inputPxsel2Register)= contextSaveSel2; } //结束序列 //上下文还原 __bis_sr_register (contextSaveSR); IF(!(contextSaveSR & GIE)) { __BIC_SR_REGISTER(GIE);// } IE1 =环境保存IE1; WDTCTL =环境保存WDTCTL; TA0CTL =环境保存TA0CTL; TA0CCTL1 =环境保存TA0CCTL1; TA0CCR1 =环境保存TA0CCR1; }

    ////////////////////////////////

    此致,
    刘若杰

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    Jack,您好!

    感谢您提供此代码。 再次强调,我不熟悉您发布的代码,但我会仔细查看,看看我是否可以解密正在发生的情况。 出于好奇,您能否告诉我您在哪里找到了此代码?

    此外,我想指出,如果您要创建新的电容式触摸设计,TI将提供一系列采用 Captivate 技术的MSP430器件。 这比MSP430G2553中的引脚osc技术更先进,支持更好。  

    此致,  
    Caleb Overbay

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好 ,Caleb

    此代码部分来自 http://focus.ti.com/docs/toolsw/folders/print/capsenselibrary.html

    我似乎找到了原因。测量 窗口更长,计数溢出。 因为它是连续的

    技术模式,从0x0000开始计数再次计数至0xFFFF,导致错误的灵敏度计算。

    是的,我现在还在评估MSP430FR2633。Captivate 芯片性能非常出色,但与 引脚osc技术芯片相比,成本更高 。

     

    此致,
    刘若杰

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    Jack,您好!

    感谢您为我指明正确的方向,我很高兴您能够解决问题。 您对此主题还有其他问题吗?

    此致,
    Caleb Overbay