RTC 오실레이터는 왜 32.768KHz인가

2019. 5. 28. 18:19임베디드/ATmega128

RTC는 Real Time Clock의 약자로 정밀한 시간 계산을 도와주는 소자다. 그러면 왜 32.768KHz이라는 정밀한 숫자의 크리스탈을 사용해야하는가?

 

실제 16MHz 외부 크리스탈을 타이머/카운터 클럭 소스로 선택해서 1초를 측정한다고 가정하면

1. 분주비 1024

2. 8비트 OVF 61회

위 상황으로 프로그램을 돌린다면 0.99...초마다 1초를 측정하게 된다. OVF 카운터가 61회보다 더 크다면 더 뒤틀려진 값이 나온다. 0.99초면 정밀할 것 같지만 크리스탈 정밀도도 고려해야 한다

ATmega128에서 사용하고 있는 16MHz 크리스탈의 정밀도는 표준편차가 0.7Hz 정도로 알려져 있다. 하지만 동작 온도와 동작 전압에 따라서 클록 주파수는 미세한 변화를 보이게 된다. 따라서 정밀한 시간 계산이 필요하다면 전용의 하드웨어 RTC 혹은 보상회로가 추가되어 있는 클록을 사용해야만 하는 것이다.

 

그러면 소수점까지 있는 정밀한 32.768KHz인 이유는 1초를 보다 정밀히 한다는 점을 주목하면 된다. 32768Hz을 128분주(실제 클럭이 128번 뛰면 카운터는 1번으로 인지)하면 256Hz가 나온다. 여기에 8비트 오버플로우 인터럽트를 사용하면 1초가 정확히 계산된다. 즉 (1/32768) * 128 * 256 = 1초가 계산된다. 

 

https://github.com/surinoel/avr/tree/master/timer/rtc_1s