PIC시리즈 MCU들의 클럭 소스관련 블럭도입니다.
복잡해 보이지만 하나하나 정리해 보겠습니다.
PIC에서 이용되는 클럭 소스는 크게 나누자면 내부 클럭, 외부 클럭으로 나눌 수 있습니다.
- 내부 클럭 : MCU자체에 내장되어 있는 RC오실레이터를 이용한 클릭 소스.
HFINTOSC, MFINTOSC, LFINTOSC로 분류되어지며 기준은 주파수의 크기입니다.
HF, HF, LF 에서 F는 말그대로 Frequency이며 무조건 클럭이 높으면 좋은 거 아닌가?
라고 생각할 수 있겠지만 주파수가 높아지면 MCU 소모 전류가 많아집니다.
따라서 PIC MCU중에서 LF(Low Frequency) 시리즈들을 보면
Sleep모드를 지원하는 데, Sleep모드에서 LFINTOSC(31kHz)의 가장 낮은 주파수를 사용하게 됩니다.
또 한 가지 특성은 내부 클럭들은 RC오실레이터를 이용하기 때문에 열에 의해
오차가 커질 수 있다는 특성이 있습니다. 따라서 정확한 클럭 소스를 얻어야 할 때는
외부 크리스탈을 이용해야 합니다.
- 외부 클럭 : 크리스탈, 오실레이터, 레조네이터 등을 주로 말하며,
필요에 의해 MCU 외부에 추가적으로 회로를 설계해야 합니다.
각 발진원들의 특징을 보자면,
※ 크리스탈
MCU에 가장 흔히 쓰이는 클럭 소자이며, kHz ~ 32MHz 정도의 주파수를 얻을 수 있습니다.
오차율은 최대 ±30ppm 정도로서, ppm이라는 단위는 발진 소자가
1,000,000번의 발진 주파수에서 오차가 어느 정도 허용되는 지를 말합니다.
시계를 예로 들면 ±30ppm 정도면 하루에 1,2초 정도 오차가 생길 수도 있다고 보시면 됩니다.
회로 구성이 간단하며 MCU에 연결하지 않으면 스스로 발진하지 않습니다.
※ 레조네이터
전체적으로 크리스탈과 회로 구성이나 특징은 비슷하지만 오차율이 매우 큽니다. (1/1000정도)
※ 오실레이터
전체적으로 가장 좋은 특성을 가지고 있지만 크기가 비교적 크며 자체적으로 전원이 인가되어야 합니다.
따라서 외부MCU에 연결되어 있지 않아도 발진 파형을 만들 수 있습니다.
PIC MCU를 이용하기 위해서 가장 먼저 해 줘야 할 것이 바로 클럭 소스원 설정입니다.
코드상에서 OSCCON 등의 클럭 관련 레지스터를 변경하여 직접 설정하거나
아래와 같이 MPLAB IDE 프로그램 상단 메뉴의 [Run - Set Configuration Bits] 에서
FOSC 메뉴의 bit를 직접 설정할 수 있습니다.
1,2,3 번은 External Clock이라고 되어 있지만 오실레이터만을 의미합니다.
크리스탈을 외부 클럭을 사용한다고 해서 이 것을 선택하면 크리스탈이 발진하지 않습니다
만약 크리스탈이나 레조네이터를 이용할 경우에는 주파수에 맞게 HS, XT, LP 중에서 하나를 선택해야 합니다.
외부 클럭원을 사용하지 않고 내부 RC오실레이터를 이용하려면 INTOSC를 선택하면 됩니다.