[MSP430] Comparator_A+

pikamon·2020년 12월 25일
0

MSP430

목록 보기
11/13
post-custom-banner

본 글은 MSP430G2553 MCU를 기준으로 작성되었습니다.
세부적인 내용은 제품군마다 조금씩 다를 수 있습니다.


1. Comparator_A+란?

MSP430에서의 Comparator란 Vin+와 Vin-라는 두 입력핀에 들어온 아날로그 전압의 크기를 비교하여 결과값을 제공하는 모듈을 말한다. Vin+에 들어온 전압값이 Vin-보다 크다면 HIGH를, 작다면 LOW를 출력한다.

2. Comparator_A+ 특징

Comparator_A+의 특징은 아래와 같다.

  • Inverting and non-inverting terminal input multiplexer
  • Software selectable RC-filter for the comparator output
  • Output provided to Timer_A capture input
  • Software control of the port input buffer
  • Interrupt capability
  • Selectable reference voltage generator
  • Comparator and reference generator can be powered down
  • Input Multiplexer
  1. Comparator_A+ 다이어그램

Comparator_A+의 다이어그램은 아래와 같다.

설명~~~

4. 관련 레지스터

Comparator_A+와 관련된 레지스터는 아래와 같다.

  • CACTLx - Comparator_A+ control register
  • CAPD - Comparator_A+ port disable register

1. CACTLx

Comparator_A+를 설정하기 위한 레지스터이다.

3. CAPD

Comparator_A+의 입력 전압 포트를 비활성화시킬 때 사용하는 레지스터이다.

5. 예제

예제를 다루어보자.

  1. Vin+ 입력 전압 비교
  2. Vin- 입력 전압 비교 (CAEX 이용)
  3. 레퍼런스 전압 변경

1. Vin+ 입력 전압 비교

Vin+ 핀에 입력되는 값을 레퍼런스 전압과 비교하는 예제이다. 레퍼런스 전압은 0.5xVcc로 설정되어 Vin- 핀으로 들어가며, Vin+의 값이 이 값보다 클 경우 CAOUT 핀에 HIGH, 작을 경우에는 LOW가 출력된다.

  • P1.0 <- CA0
  • P1.3 -> CAOUT = LED

처음에는 Vin+에 인가되는 전압이 없으므로 LOW가 출력되어 LED가 꺼진 상태로 있는다. 그러다가 P1.0 핀에 0.5xVcc 이상의 전압이 걸리면 비교기로부터 HIGH가 출력되어 LED가 켜지는 것을 볼 수 있다.

2. Vin- 입력 전압 비교 (CAEX 이용)

이번에는 Vin- 핀에 입력되는 값을 레퍼런스 전압과 비교하는 예제이다. 레퍼런스 전압은 0.5xVcc로 위와 동일하다.

이번 예제에서는 CAEX 비트를 이용한다. CAEX 비트가 설정되면 두 입력단 Vin+ 핀과 Vin- 핀이 서로 바뀌며, 출력값이 반전되어 출력된다.

원래라면 레퍼런스 전압이 Vin+ 핀으로 들어가며, Vin- 핀에 걸리는 전압이 레퍼런스 전압보다 커지면 LOW가 출력될 것이다. 하지만 CAEX를 설정함으로써 레퍼런스 전압이 Vin- 핀으로, CA0 핀의 입력 전압이 Vin+ 핀으로 들어가며, Vin+ 핀에 걸리는 전압이 레퍼런스 전압보다 커지면 HIGH가 출력된다.

설명이 장황해졌지만 요약하자면, CAEX가 설정되면 Vin+ 핀과 Vin- 핀이 서로 바뀌며, 본 예제에서 해당 비트를 이용한 이유는 예제 1의 코드를 그대로 쓸 수 있기 때문으로 보인다.

  • P1.0 <- CA0
  • P1.3 -> CAOUT = LED

실행해보면 예제 1과 결과가 동일한 것을 알 수 있다.

CAEX를 사용하지 않는다면, 위의 문단에서 설명한 결과를 기대해볼 수 있을 것 같다.

3. 레퍼런스 전압 변경

이번에는 예제 1에서 레퍼런스 전압을 내부 다이오드 전압으로 변경한 예제이다.

내부 다이오드 전압 값을 알아내는 데에서 어려움을 겪었다. 데이터 시트에 의하면 V(RefVT)의 값이 490mV라고 나와 있는데, 이것이 내부 다이오드의 전압을 뜻하는 건지 명확하지 않다.

  • P1.0 <- CA0
  • P1.3 -> CAOUT = LED

코드 실행 시 결과는 예제 1, 2번과 동일하여 차이를 구별하기 어렵지만, 레퍼런스 전압을 내부 다이오드 전압으로 설정했다는 것만 알면 될 것 같다.

profile
개발자입니당 *^^* 깃허브 https://github.com/pikamonvvs
post-custom-banner

0개의 댓글