[FreeScale]/KINETIS2013. 11. 17. 22:30

K20 EVM - Kinetis Cortex-M4 K20 TSI 정전용량 스위치 테스트

K20 EVM - Kinetis Cortex-M4 K20 TSI 정전용량 스위치 테스트




요즘 출시되는 대부분의 MCU들은 정전용량 터치센서를 위한 하드웨어 블럭을 기본으로 제공하는것 같다. 사용해 보았던 CAP Sensor MCU 중에는 가장 사용하기 편리하고 기능이 풍부한것 같다.



K20 TSI 테스트 동영상





K20 TSI 블록도




K20 EVM 보드에서 TSI9(PB16), TSI10(PB17) 포트를 이용하여 테스트 했다.






K20 TSI 초기화 함수 소스코드


void TSI_Init(void) 

{

//PORTB, TSI클럭 enable

    SIM_SCGC5 |= SIM_SCGC5_PORTB_MASK | SIM_SCGC5_TSI_MASK;


//PORT 할당

    PORTA_PCR16 = PORT_PCR_MUX(0);

    PORTA_PCR17 = PORT_PCR_MUX(0);


// Clear the EOSF (End of Scan) flag

    TSI0_GENCS |= TSI_GENCS_EOSF_MASK;


    TSI0_GENCS |= TSI_GENCS_NSCN(10) | // Set number of consecutive scans per electrode to 11

    TSI_GENCS_PS(4) | // Set electrode oscillator prescaler to divide by 16

    TSI_GENCS_STPE_MASK | // Keep TSI running when MCU goes into low power mode

    TSI_GENCS_LPSCNITV(7); // Low power mode scan interval is set to 50 msec

    TSI0_SCANC |= (TSI_SCANC_EXTCHRG(8) | // Set ext oscillator charge current to 18 uA

    TSI_SCANC_REFCHRG(15) | // Set reference osc charge current to 32 uA

    TSI_SCANC_SMOD(10) | // Set scan period modulus to 10

    TSI_SCANC_AMPSC(1) | // Divide input clock by 2

    TSI_SCANC_AMCLKS(0)); // Set active mode clock source to LPOSCCLK


    //TSI0_GENCS |= TSI_GENCS_LPCLKS_MASK; // Set low power clock source to VLPOSCCLK


    TSI0_PEN = TSI_PEN_PEN9_MASK | TSI_PEN_PEN10_MASK;

    

    //low power mode only one pin may be active

    TSI0_PEN |= TSI_PEN_LPSP(9);

// Enables TSI

    TSI0_GENCS |= TSI_GENCS_TSIEN_MASK;  

}





TSIx_CNTR

터치센서의 감도는 TSIxCNTR 레제스터에서 오실레이션 카운트값을 읽으면 알 수 있다.

2 채널당 하나의 레지스터를 할당하고 있다.



K20 TSI 카운트값 리드 함수

unsigned int ReadTSI(int Number)

{

//Software Trigger Start

TSI0_GENCS |= TSI_GENCS_SWTS_MASK;

while(!(TSI0_GENCS & TSI_GENCS_EOSF_MASK));

// Clear the EOSF (End of Scan) flag

    TSI0_GENCS |= TSI_GENCS_EOSF_MASK;


return *(electrodeHW[Number].counterRegister);

}





Posted by nexp

댓글을 달아 주세요

[MSP430]/MSP430-S2013. 10. 27. 23:00

MSP430G2433 Capacitive-touch I/O 터치센서 그래프 표시 예제

MSP430G2433 Capacitive-touch I/O  터치센서 그래프 표시 예제





MSP430G 시리즈는 Cap touch I/O 모듈을 이용하여 저렴한 터치 센서 솔루션을 제공한다.

정전용량 터치센서는 PCB환경(구조, 크기, 노드간 간격, 재질등)에 따라 값을 보정해 주어야 한다. 특히 터치 부분에 아크릴이나 스티커 등을 붙이면 전체 설정값이 변경되므로 각 센서별 설정이 필요하다.

터치센싱 값을 그래프로 표시하면 감도를 눈으로 보면서 편리하게 설정할수 있다.



정전용량 터치및 스위치를 테스트 할 수 있는 SW_BD 를 이용하여 정전용량 터치센서 값을 그래프로 출력하는 테스트를 해보았다.

코드는 MSP430G2433 Cap touch I/O 터치센서 테스트 예제코드를 수정하여 테스트 하였다.




터치 센서에 접촉되는 면적(손가락의 터치 감도)에 따라 센싱값이 변경되는 것을 확인할수 있다.


Posted by nexp

댓글을 달아 주세요

[MSP430]/MSP430-S2013. 8. 11. 23:00

MSP430G2553 Cap touch I/O 터치센서 테스트

MSP430G2553 Cap touch I/O 터치센서 테스트




MSP430G2553의 특징은 저전력에 24채널의 CAP Touch I/O를 가지고 있어 터치센서 솔루션으로 적합하다.

Cap touch I/O를 이용하여 터치센서 스위치를 테스트 하는 예제를 작성해 보았다. 기존 사용했던 터치센서 솔루션중에는 가장 감도도 좋고 사용하기 편리한것 같다.



MSP430G2553에는 아래와 같이 Pin Oscillator 모듈이 하드웨어 적으로 존재하기 때문에 소프트웨어 부담없이 터치센서를 구현할 수 있다. 당연히 저전력으로 구동된다.





MSP430G2253에는  24채널(P1, P3)의 CAP IO가 있고 PxSEL, PxSEL2 레지스터를 이용하여 Cap Touch IO로 설정할수 ㅇ






MSP430F2553 Cap touch I/O 터치센서 테스트 동영상

MSP430G2253을 이용하여 터치센서를 인식할때 마다 LED를 토글하는 간단한 예제를 작성해 보았다.






터치센서 파라미터 설정 코드

터치센서로 이용할 핀 설정 및 각종 초기 파라미터값을 설정할수 있다.

const struct Element Totuch_E1 = {


              .inputPxselRegister = (uint8_t *)&P3SEL,  

              .inputPxsel2Register = (uint8_t *)&P3SEL2,  

              .inputBits = BIT0,

              // When using an abstracted function to measure the element

              // the 100*(maxResponse - threshold) < 0xFFFF

              // ie maxResponse - threshold < 655

              .maxResponse = 655,

              .threshold = 400

};



const struct Sensor Touch_Button1 =

               { 

                  .halDefinition = RO_PINOSC_TA0_WDTp,

                  .numElements = 1,

                  .baseOffset = 4,

                  // Pointer to elements

                  .arrayPtr[0] = &Totuch_E1,  // point to first element

                  // Timer Information

                  .measGateSource= GATE_WDT_SMCLK,     //  0->SMCLK, 1-> ACLK

                  //.accumulationCycles= WDTp_GATE_32768             //32768

                  .accumulationCycles= WDTp_GATE_8192               // 8192

                  //.accumulationCycles= WDTp_GATE_512             //512

                  //.accumulationCycles= WDTp_GATE_64             //64                  

               };



터치센서 처리 코드

터치 인식을 하였을 경우 처리하는 함수

void CapTouchActiveMode()

{

    unsigned char idleCounter, activeCounter;

    unsigned char centerButtonTouched[4] = {0,};


    idleCounter = 0;      

    activeCounter = 0;

  

    while (idleCounter++ < MAX_IDLE_TIME)

    {  

         if(TI_CAPT_Button(&Touch_Button1))

        { 

            // Middle button was touched  

            if (centerButtonTouched[0]==0)

            {


                centerButtonTouched[0] = 1;

                Led1Toggle();

                Tbi(PORT1, BIT0);

                

                DebugPrint("S1\r\n");

            }

            idleCounter = 0;

        }

        else    

        { 

            centerButtonTouched[0] = 0;

        }


   :

}



MSP430F2553 Cap touch I/O 테스트 소스코드

void main(void)

{   

    SystemInit();

    

Led1Init();

Led2Init();

//Touch GPIO설정

Sbi(P1DIR, BIT0|BIT3);

Cbi(PORT1, BIT0|BIT3);

Sbi(P2DIR, BIT0|BIT1);

Cbi(PORT2, BIT0|BIT1);

    

//초기값 측정

MeasureCapBaseLine();


//MSP430G 시리얼 포트 초기화

DebugInit(BAUD_115200);

DebugPrint("MSP430G EVM Touch Test Program.\r\n");

while (1)

{

//터치센서 처리

CapTouchActiveMode();

}

}


Posted by nexp

댓글을 달아 주세요

[Microchip]/PIC16F2013. 4. 7. 23:00

[mTouch] PIC16F274 Capacitive Touch 테스트

[mTouch] PIC16F274 Capacitive Touch 테스트

 

 

 

MICROCHIP사는 Capacitive Touch Sensing 솔루션으로 mTouch 를 제공하고 있다. PIC16F723은 하드웨어 적으로 8채널의 capacitive sensing module 을 제공하고  PIC16F724는 16채널을 제공한다.

 

CPS0~CPS15 핀을 이용하면 부가적인 하드웨어 필요 없이 터치 센싱이 가능하다.

 

 

 

 

CAPACITIVE SENSING MODULE 초기화 코드

void CapInit(void)
{
 // Initialize for Timer0 time base
 OPTION = 0b11000010;    // Timer0 init ( Prescaler:TMR0, 1:8 )
 T0IF = 0;       // enable tmr0 intpt
 T0IE = 1; 

 // Initialize for Timer1 time Resource
 // Timer1 enable, system clock, 1:1 prescale
 T1CON  = 0b11000101;

 // Cap Sense Module
 // CPSON
 CPSON  = 1;
 
 //Cap Sensing Osc Range Bits(18uA)
 CPSRNG0 = 1;
 CPSRNG1 = 1;
 
 // init to channel select = 0 (4 LSb's) 
 CPSCON1 = 0x00;      
}

 

 

 

 

 

mTouch Capacitive Touch 테스트 동영상

기존 Touch Sensing 테스를 위해 제작해 둔 보드를 이용하여 테스트 했다. 터치에 따라 FND에 출력하는 예제 이다.

 

 

Posted by nexp

댓글을 달아 주세요

[MSP430]/MSP430F20132013. 4. 7. 21:00

[MSP430F2013] Capacitive Touch Sensing 테스트

[MSP430F2013] Capacitive Touch Sensing 테스트

 

 

 

 

TI사는 MSP430을 이용하여 Capacitive Touch Sensing 솔루션을 제공하고 있다.

msp_cap.zip

Capacitive Touch Sensing 을 위한 방법으로 여러가지가 있지만 하드웨어적으로 간단히 테스트 해 볼수 있는 RC방식을 이용하여 터치센서를 테스트 해보았다.

 

 

 

 

MSP430 Capacitive Touch Sensing 테스트 동영상

 

Posted by nexp

댓글을 달아 주세요