레이블이 Counter인 게시물을 표시합니다. 모든 게시물 표시
레이블이 Counter인 게시물을 표시합니다. 모든 게시물 표시

2016년 7월 29일 금요일

MCU SW 공부 1 - Clock, Timer, Counter, Prescaler 개념 비교


Micro Controller Unit(이하 MCU) 을 분석하는 과정은 다음과 같다(알고 있는 수준에서)

1. MCU를 선택 한다.
    - 어떤 기능을 수행해야 하는지
    - 거기에 맞는 Spec을 가진 MCU는 무엇이 있는지
    - 사용가능 MCU 중 가장 저렴한 것은 무엇인지

2. 실행 주기 선택 한다.
    - MCU는 혼자 실행 될 수도 있고, 다른 MCU와 연동해서 사용할 수도 있다.
    - 그리고 외부 ECU 와 연동될 수도 있다.
    - 그렇게 때문에 최소 실행주기 및 특정 기능들의 실행 주기를 선택해야 한다.

3. 기능을 구현하여 실행 시킨다.
    - 2번에서 정한 특정 주기마다 실행 될 함수를 구현한다.
    - 특정 주기마다 실행 되는 함수는 Call Back Function, Interrupt Service Routine, Task 등 여러가지로 불릴 수 있다..


아직 1번 어떤 MCU를 선택해야 하는지는 시스템 전체를 볼 수 있는 눈이 없기 때문에 보류하고,
3번 실행되는 기능은 요구사항에 맞추어 세부적으로 구현이 들어가는 것인데 이 세부를 보기 전에 주기적으로 꼭 실행되어야 하는 함수들이 무엇인지 결정되어야 한다.
그것이 2번 실행 주기를 선택하는 것이다.

Clock은 MCU 동작의 기준이 되는 시계이다.
일정한 시간 간격으로 0과 1의 값이 번갈아 나타난다.

그 Clock 의 개수를 세어 주는 것이 Counter 이다.
8bit Counter 는 8개 bit 만큼 셀 수 있다.
2^8 = 256 이므로 8bit Counter 는 0~255 까지 셀 수 있다.
이 Counter의 값과 비교하여 특정 조건이 되면 Interrupt를 실행시킬 수 있는데
이 방법에 따라

오버플로우 인터럽트: 카운터의 값이 오버플로우 되는 겨우 발생
출력비교 인터럽트: 카운터 값이 출력비교 레지스터의 값과 같게 되는 순간에 발생
입력 캡쳐 인터럽트: 입력이 들어올 경우 발생, 그리고 그때의 시간을 저장

등의 방식으로 동작할 수 있다. 각 인터럽트가 걸렸을 때 이미 등록해 놓은 특정 함수가 실행될 수 있는 것이다.

Counter 라는 단어의 의미를 보았지만 비슷한 의미로 Timer 도 쓰인다.
이 둘의 차이는

Timer: MCU 내부 클럭을 세는 장치
Counter: MCU 외부에서 입력되는 클럭을 세는 장치

Timer/Counter라고 같이 사용되는곳이 많은(검색 시 다수가 그렇게 표현) 같은 의미라고 이해해될 될 것이라고 생각.

-- Prescaler 추가 --
개발자는 필요한 시간 단위가 있는데 MCU 의 clock 주파수가 높아 그 시간을 못맞출 수 있다.
8MHz 의 system clock 을 가지고 있다면 timer 의 clock 기본 주기는 0.125us 이 된다.
(1 Second * 1000 * 1000 / 8,000,000Hz = 0.125us)
실제 필요한 동작단위가 1us 라면 8 이라는 prescaler 값이 필요한 것이다.

-- hertz(hz) 추가 --
진동 현상이 있을 때 1초에 몇 번의 왕복 운동이 있는지 나타내는 단위
주기적으로 반복되는 모든 현상에 일반적으로 쓰일 수 있다.

보통 가정집에 들어오는 교류 전원은 220V, 60Hz 인데 교류 전압을 1초 동안 60번 0V를 기준으로 (-110~+110 까지) 오르락 내리락 하며 사인 진동을 반복한다.

컴퓨터 CPU 클럭을 얘기할 때 헤르츠 단위를 쓰는 이유는 무엇일까? CPU가 일정한 속도로 동작하기 위해서는 일정한 간격으로 전기적 펄스를 공급 받아야 하는데 이 전기적 펄스가 초당 CPU에 공급되는 횟수라는 개념에서 Hz라는 단위를 쓴다.