임베디드 개발보드‎ > ‎mbed‎ > ‎

[ARM mbed 강좌] 12. 타이머 (스위치 및 가상 시리얼 통신 이용)

mbed (ARM Core + Online tools + Community)

 


 1. 타이머 (Timer)


: 간단히 말하면 시간을 재는 장치라고 생각하면 된다. 마이크로프로세서는 리얼타임성을 매우 중요시 여기기 때문에 정해진 시간안에 작업을 끝내는 일은 무엇보다 중요하다. 이러한 기능을 수행하는데 많이 이용되는 것이 바로 타이머 기능이다. 이를 이용하여 제어주기를 맞추기는 일이 매우 중요하다.







 2. 학습내용


: 이번 강좌에서는 mbed의 타이머를 이용하여, 보드가 기동한 이후 사용자가 버튼1을 눌렀을 때 까지의 시간을 재어보자. 그리고, 그 결과값을 가상 시리얼 통신을 통해 PC에서 확인하도록 하자.


 3. 회로도


▶ 아래의 부품을 이용하여 아래의 회로도 처럼 구성하기로 하자. 

  • 필요부품 : Switch 1개, 1K옴 저항 1개, 여분의 배선, 브래드보드 
  • 회로도(오픈 소스 fritzing 프로그램 이용, 첨부파일 다운로드 가능)


 4. 배선도


▶ 회로의 배선도이다. 브래드보드에 아래와 같이 mbed 보드와 구성품을 배치, 배선 후 mbed를 PC에 연결하도록 하자.




 5. 프로그램 소스


▶ 보드가 기동한 이후 사용자가 버튼1을 눌렀을 때 까지의 시간을 잰다. 그리고, 그 결과 값을 가상 시리얼 통신을 통해 PC로 전송하는 프로그램이다. 프로그램의 세부 설명은 소스에 기재되어 있는 설명을 참고하도록 하자. 

▶  mbed.org 컴파일러에서 직접 코딩하여, 컴파일하기를 추천한다. 아무리 간단한 코딩이라도 할 수록 늘고, 자신감도 붙기 마련이다.아래의 소스를 복사/붙여넣기도 가능하지만, 꼭 직접 코딩하고, 컴파일해보고, 결과를 눈으로 직접 보기를 강력 추천한다.

▶  mbed 소스작성, 컴파일, 업로드 방식은 "mbed 기초 강좌 : 03. mbed 소스작성, 컴파일, 업로드" 를 참고하도록 하자.

▶  USB 가상 시리얼 포트를 통한 통신 방식은 "mbed 기초 강좌 : 04. USB 가상 시리얼 포트를 통한 통신 맛보기" 를 참고하도록 하자.


#include "mbed.h"
 
DigitalIn button1(p17); // Digital In Pin
 
Serial pc(USBTX,USBRX); // Tx, Rx Pin
 
Timer timer;
 
int main() 
{
    button1.mode(PullUp);       // Set PullUp
    
    timer.start();              // Start the timer
    pc.printf("Timer Start!\n");
    
    while(1)
    {
        if(button1 == 0)        // if push the button1
        {
            timer.stop();       // Stop the timer
            pc.printf("%f seconds\n", timer.read());  
            break;
        }
    }
}


 6. 사용한 라이브러리


▶ Timer 
▶ Serial



 7. 실행 결과


▶ 보드의 리셋을 눌러 프로그램을 실행한다. 그 후 버튼1을 눌러 보드가 기동한 후 버튼을 눌렀을때까지의 경과시간이 PC의 터미널에 아래와 같이 표시 될 것이다.



 참고자료


[1] mbedhttp://mbed.org
[3] mbed handbookhttp://mbed.org/handbook/Timer
작성자: 표윤석(http://robotpilot.net/)
 
Comments