PWM 3

[마이크로프로세서] 타이머/카운터 정리

타이머/카운터 내용 정리 개요 타이머/카운터와 관련해서 정리할 내용이 많기 때문에, 이전에 하듯이 글 하단에 요약본을 만드는 것이 아닌 하나의 포스팅을 쓰기로 결정했다. 전반적인 내용과 레지스터 동작을 정리하도록 하겠다. 본문 기본 개념 타이머/카운터는 MCU 내부에서의 입력된 클럭을 계수하는 기능을 하고 있다. 즉, 클럭의 주파수를 이용해 타이머로 활용하며, 만약 8비트 카운터의 경우 카운터의 상태가 11111111에서 00000000으로 변화할 때 발생한다. 이때 시스템 내부의 클럭 주기론 만들기 어려운 것이 있는데, 이를 해결하기 위해 프리스케일러(Prescaler)를 사용한다. 즉, 고속의 클럭을 사용할 때 나타나는 한계를 해결하기 위해 클럭을 분주하여 더 느린 클럭을 생성하는 것이다. 예를 들어..

[마이크로프로세서] 타이머/카운터 및 예제(2)

실습(2) CTC 모드, 고속 PWM 모드를 활용한 FND와 LED 제어 지난 시간엔 오버플로를 이용하여 FND에 디스플레이를 출력하는 실습을 진행하였다. 이번 시간엔 CTC 모드와 고속 PWM 모드를 활용한 예제를 다뤄보도록 하자. CTC 모드를 활용한 FND 동적 구동 지난 시간에 오버플로 인터럽트를 이용하여 FND에 디스플레이를 출력했던 부분을 CTC 모드로 작동해 보자. 이때 1ms를 계산하기 위해 다음과 같은 수식을 이용하였다. 여기서 분자는 1ms를 계산하기 위한 시스템의 클럭 주기 (1ms/256), 분모는 ATmega128의 시스템 클럭 주기를 의미한다. 따라서 분주비를 64로 설정하였고, 이때 클럭 주기가 4us이므로 오버플로우 주기 1ms와 나눠주면 250개를 계수해야 한다는 식이 나온..

[마이크로프로세서] 타이머/카운터 (3)

PWM(Pulse Width Modulation) 모드 (1) - Fast PWM PWM(펄스폭 변조) 모드는 펄스의 폭을 변경하여, 출력 전압을 조절하는 변경 방식이다. 즉, 신호의 듀티 사이클(Duty Cycle)(한 주기 내에 신호가 높은 상태로 있는 시간의 비율)을 변경하여 다양항 출력을 생성하는 방식이다. 쉽게 생각해서 디지털 신호를 아날로그 신호와 유사한 효과를 내게 한다는 것이다. 예를 들어, 5V와 0V로 구분된 디지털 출력을 ON/OFF 시간을 조절하면 0~5V까지의 아날로그 출력을 내는 것과 유사한 동작을 한다. 이를 CTC 모드로 제어하려면, 매번 OCRn 값을 바꿔야 한다는 번거로움이 있다는 점도 확인해 두자. Fast PWM 모드는 비대칭형 톱니파를 이용하여 타이머/카운터가 BOT..