[MSP430]/MSP430-S2016. 3. 20. 01:43

MSP430G2433 Timer interrupt 테스트

MSP430G2433 Timer interrupt 테스트


MSP430 시리즈는 종류가 많아서 시리즈마다 약간씩 설정 부분이 다른데... 기록해 둘 필요가 있는것 같다.

(개인적으로 TI는 통합해서 설정할 수 있도록 코드를 정리 해 줬으면 좋겠다. 출시 될때마다 조금씩 바껴서 불편한점이 많다.)



MSP430G 타이머 초기화 코드

#define enable()                            __bis_SR_register(GIE)


#define TIMER0_VALUE                        8000 //@ 8Mhz -> 1ms

#define Timer0Set(Value)     (CCR0  +=  Value)  


void InitTimer0(void)

{

    //타이머 초기화

    TACTL = TASSEL_2 + MC_2;                  // SMCLK, Contmode


    CCR0 = 8000;

    CCTL0 = CCIE;                  // CCR0 toggle, interrupt enabled    

}





MSP430G 타이머 인터럽트 핸들러

//------------------------------------------------------------------------------

// Timer_A  -  Interrupt Handler

//------------------------------------------------------------------------------

#pragma vector = TIMER0_A0_VECTOR

__interrupt void Timer_A0_ISR(void)

{

    //Led1Toggle();


    gTimeTick++;

    Timer0Set(TIMER0_VALUE);

}






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

댓글을 달아 주세요

[MSP430]/MSP430-S2013. 8. 11. 22:30

MSP430G2253 EVM 보드 제작

MSP430G2253 EVM 보드 제작




MSP430 시리즈중 저렴한 Value Line MSP430G22xx 의 테스트 보드를 제작 했다. 작고 저렴하기 때문에 여러 어플리케이션에 사용하기 좋을것 같다. Value line 시리즈 중에서도 UART가 있고 Cap touch I/O가 있으면서 1$에 판매하고 있다.

특히 Cap touch I/O는 저렴한 가격에도 성능은 아주 좋은것 같다.





24채널의 Cap touch I/O 가 있기 때문에 저전력 터치 센서 어플리케에션에 적용하기에 좋다.



[S-Type EVM]의 기존 확장 테스트 보드에 연결하여 테스트 가능하도록 했다.



MSP430G2253 EVM 회로도








Posted by nexp

댓글을 달아 주세요

[MSP430]/MSP430-S2011. 5. 19. 19:31

[MSP430L092] JTAG 테스트

[MSP430L092] JTAG 테스트


MSP430L092 는 단일셀 밧데리 0.9~1.5V에서 동작하는 저전력 MSP430이다. 기존 MSP430G 시리즈와 같은 핀 사이즈와 패키지 이지만 핀맵이 다르다. 그래서 새로 PCB제작해서 테스트 해 보았다.

최대 전압이 1.5V이므로 기존 JTAG를 이용하려면 레벨변환이 필요한데, TTL중 1.5V에서 동작하는 시리즈가 필요하다.

그런데 MSP430L092는 Flash메모리가 없다. RAM만 있어 JTAG로 RAM에 다운로드해 테스트 가능하지만 전원이 Off되면 다시 다운로드 해야 한다. 물론 프로그램을 외부 EEPROM에 저장해 로드할 수는 있다. 플래시 메모리 특성상 0.9V에서 Write하는것은 불가능 하기 때문인것 같다.

Posted by nexp

댓글을 달아 주세요