클럭 신호(clock signal, 이하 clk)란 일정한 주기로 0/1을 단순 반복하는 톱니파 신호로서 이 신호에 AVR의 거의 모든 부분이 동기화되어 동작된다. 일반적으로 다음 그림과 같은 파형을 가지며 1(0)이 시작되는 지점부터 0(1)이 끝나는 지점까지를 한 주기라고 한다.
[그림 1] 클럭 신호
예를 들면 더하기 한 번하는데 클럭 하나가 소요되고, 곱셈 한 번에 네 개의 클럭 신호가 필요하다든가, 또는 클럭신호가 0에서 1로 변하는 순간 어떤 동작을 수행한다거나 하는 등 거의 모든 동작이 클럭 신호를 기준으로 수행되는 것이다. 마치 사람들이 시간이라는 기준에 의해서 생활이 되므로 시계를 자주 보면서 어떤 일을 수행하는 것과 유사하다. 당연한 이야기지만 클럭의 주파수가 높을수록 uC의 동작은 빨라질 것이고 주파수가 낮아지면 동작 속도도 떨어질 것이다. 보통 AVR에는 1MHz ~ 20MHz 주파수의 클럭이 사용되며 16MHz라면 한 주기 파형이 1초에 16x106 개가 발생한다.
따라서 AVR을 동작시키려면 전원과 함께 반드시 인가하여야 하는 것이 이 클럭 신호이며 클릭 신호를 인가하기 위해서 XTAL1, XTAL2 핀이 사용된다. AVR은 보통 클럭 신호를 외부에서 인가하는 방법, 그리고 내부에서 발생시키는 방법으로 구분할 수 있다. 그리고 클럭 선택과 관련이 있는 퓨즈비트는 CKOPT,와 CKSEL0, CKSEL1,CKSEL2, CKSEL3이 있다.
[표 1] ATmega8(A)의 클럭 소스와 관련 퓨즈비트 설정
구분 | 클럭소스 | 주파수 | CKOPT | CKSEL3:0 | 비고 |
내부 발생 | 내부 RC 오실레이터 | 1.0 MHz | 1 | 0001 (a) | (b) |
2.0 MHz | 0010 | ||||
4.0 MHz | 0011 | ||||
8.0 MHz | 0100 | ||||
외부 인가 | 외부 RC 오실레이터 | 0.1~0.9 MHz | X (c) | 0101 |
|
0.9~3.0 MHz | 0110 | ||||
3.0~8.0 MHz | 0111 | ||||
8.9~12 MHz | 1000 | ||||
외부 저주파 크리스탈 | 32.768 KHz | X (c) | 1001 | 32.768 KHz | |
외부 크리스탈/세라믹 레조네이터 | 0.4~0.9 MHz | 1 | 101X | (d) | |
0.9~3.0 MHz | 1 | 110X | 12~22pF | ||
3.0~8.0 MHz | 1 | 111X | 12~22pF | ||
8.0≤ MHz | 0 (e) | 101X,110X,111X | 12~22pF | ||
| 외부 클럭 |
| X (c) | 0000 |
|
※ X는 0과 1 모두 사용가능하다는 의미임. (a) 공장 출하시 기본값. (b) 이 경우 CKOPT는 반드시 unprogrammed(1)이어야 한다. (c) CKOPT=0(program)으로 설정하면 XTAL1과 XTAL2에 36pF의 내부 커패시터가 GND와 연결되므로 외부에서 이들을 따로 연결할 필요가 없음 (d) 이 옵션은 세라믹레조네이터에만 사용됨. (크리스탈은 이 옵션으로 사용불가) (e) CKOPT가 0임에 주의할 것. |
크리스탈오실레이터
크리스탈 오실레이터는 클럭 인가시 가장 보편적으로 사용되는 소자이다.
[그림 1] 크리스털 오실레이터 사용 회로도
[표 1] 클리스털 오실레이터 설정
CKSEL0 | SUT0:1 | 기동 시간 | 리셋으로부터의 추가적인 시간지연(vcc=5V) | 권장 사용처 | 비고 |
0 | 00 | 258CK | 4.1ms | 세라믹레조네이터, 빠른 기동 전원 | (1) |
0 | 01 | 258CK | 65ms | 세라믹레조네이터, 느린 기동 전원 | |
0 | 10 | 1000 CK | - | 세라믹레조네이터, BOD enabled | (2) |
0 | 11 | 1000 CK | 4.1ms | 세라믹레조네이터, 빠른 기동 전원 | |
1 | 00 | 1000 CK | 65ms | 세라믹레조네이터, 느린 기동 전원 | |
1 | 01 | 16000 CK | - | 크리스탈오실레이터, BOD enabled |
|
1 | 10 | 16000 CK | 4.1ms | 크리스탈오실레이터, 빠른 기동 전원 |
|
1 | 11 | 16000 CK | 65ms | 크리스탈오실레이터, 느린 기동 전원 |
|
(1) 최대주파수에 근접한다면 이 옵션은 사용하지 말아야 한다. 또한 기동 직후의 안정성이 중요한 계통이라면 역시 사용하지 말아야 한다. (2) 이 옵션은 세라믹 레조네이터를 위한 것이다. 크리스탈에도 사용가능하나 최대주파수에 가깝거나 기동 직후의 안정성이 중요한 계통이라면 사용하지 말아야 한다. |
저주파 크리스탈 오실레이터
실시간을 측정하는데 사용되는 클럭(32.768KHz)를 사용하려면 이 옵션을 선택해야 한다. 이 경우에 최적화된 내부 커패시터(36pF)이 XTAL1과 XTAL2에 GND사이에 내장되어 있으며 이것을 연결하려면 CKOPT를 프로그램(0)하면 된다. 따라서 외부에 커페시터를 별도로 연결할 필요가 없다.
[그림 2] 저주파 크리스털 오실레이터 회로도
[표 2] 저주파 오실레이터 설정
SUT0:1 | 기동 시간 | 리셋으로부터의 추가적인 시간지연(vcc=5V) | 권장 사용처 | 비고 |
00 | 1000 CK | 4.1ms | 빠른 기동 전원 | (1) |
01 | 1000 CK | 65ms | 느린 기동 전원 | |
10 | 32000 CK | 65ms | 기동시 안정적인 주파수 |
|
11 | reserved | |||
(1) 기동시 주파수 안정도가 중요치 않은 시스템에서만 사용 가능. |
외부 RC오실레이터
클럭의 주파수가 정확할 필요가 없는 시스템이라면 다음 그림과 같이 XTAL1핀에 저항(R)과 캐패시터(C)를 연결하는 간단한 회로만으로도 클럭 신호를 발생시킬 수 있다. 발생되는 클럭의 주파수의 근사치는 다음 식과 같이 계산할 수 있다.
여기서 C값은 22pF 이상이어야 한다. 퓨즈비트 CKOPT를 프로그램(0)하면 내부 캐패시터 (36pF)을 XTAL1과 XTAL2 핀에서 GND에 연결할 수 있다. 이 경우에는 외부에서는 XTAL1과 Vcc사이에 저항만 연결하면 된다.
[그림 3] 외부 RC오실레이터 회로도
[표 3] RC오실레이터 설정
SUT0:1 | 기동 시간 | 리셋으로부터의 추가적인 시간지연(vcc=5V) | 권장 사용처 | 비고 |
00 | 18CK | - | BOD enables |
|
01 | 18CK | 4.1ms | 빠른 기동 전원 |
|
10 | 18 CK | 65ms | 느린 기동 전원 |
|
11 | 6 CK | 4.1ms | 빠른 기동 전원 혹은 BOD enables | (1) |
(1) 최대주파수에 근접한다면 이 옵션은 사용하지 말아야 한다. |
보정된 내부 RC오실레이터
내부 RC오실레이터를 사용한다면 XTAL1, XTAL2 핀에는 클럭신호 발생을 위해서는 아무 외부소자도 연결할 필요 없으며 포트핀(PB6, PB7) 혹은 타이머 오실레이터 핀(TOSC1,TOSC2)으로 사용할 수 있다. 이 경우 1MHz, 2MHz, 4MHz, 8MHz의 정해진 주파수만이 사용되며 5V, 25˚C 환경에서 ±3% 오차 범위의 주파수를 발생한다. 하지만 내부 레지스터(OSCCAL)를 이용하여 오차 범위를 ±1%까지 줄일 수 있다.(datasheet 228페이지 “Calibration byte"참조)
[표 4] 내부 RC오실렝터 설정
SUT0:1 | 기동 시간 | 리셋으로부터의 추가적인 시간지연(vcc=5V) | 권장 사용처 | 비고 |
00 | 6 CK | - | BOD enables |
|
01 | 6 CK | 4.1ms | 빠른 기동 전원 |
|
10 | 6 CK | 65ms | 느린 기동 전원 | (1) |
11 | reserved | |||
(1) 공장 출고시 기본값 |
클럭 발생기
클럭 발생기를 사용한다면 XTAL1핀에만 연결하면 되므로 XTAL2는 포트핀으로 사용가능하다. 또한 퓨즈비트 CKOPT를 프로그램(0)하여 내부 커패시터(36pF)을 연결할 수도 있다.
[그림 4] 클럭 발생기 회로도
[표 4] 클럭발생기 설정
SUT0:1 | 기동 시간 | 리셋으로부터의 추가적인 시간지연(vcc=5V) | 권장 사용처 | 비고 |
00 | 6 CK | - | BOD enables |
|
01 | 6 CK | 4.1ms | 빠른 기동 전원 |
|
10 | 6 CK | 65ms | 느린 기동 전원 | (1) |
11 | reserved | |||
(1) 공장 출고시 기본값 |
타이머/카운터 오실레이터 연결
ATmega8A의 내부 타이머/카운터를 이용하여 실제시간을 측정하는 경우에는 시스템 클럭과 별도로 32.768 KHz의 외부 크리스탈을 TOSC1, TOSC2에 직접 연결하여 사용할 수 있다. 이 경우 CKOPT퓨즈비트를 프로그램(0)하여 내부에서 36pF을 GND에 연결하여 사용할 수 있도록 설계되어 있다. 데이터쉬트에 따르면 TOSC1에 클럭발생기를 연결하는 것은 권장되지 않는다.
전압 대 최대 클럭 주파수
ATmega8(A)은 최대 클럭 주파수가 16MHz이지만 모든 동작 전압에 대해서 이 최대 주파수를 사용할 수 있는 것은 아니다. 다음 그림은 전압 대 최대 주파수의 그래프를 데이터쉬트에서 발훼한 것이다.
[그림 5] 동작 전압 - 최대 클럭 주파수 관계도
4.5V이상의 동작전압에서 16MHZ 최대 클럭 주파수를 사용할 수 있으며 만약 3.3V 동작 전압을 사용한다면 최대 12MHZ 정도의 클럭을 사용할 수 있음을 알 수 있다.
'하드웨어 > ATmega8(A)' 카테고리의 다른 글
ATmega8(A) 개발 환경 : USBasp 와 USBaspLoader 소개 (0) | 2015.06.10 |
---|---|
ATmega8(A) 개발을 위한 atmel studio 소개 (0) | 2015.06.10 |
ATmega8(A)의 전원 인가와 리셋 회로 (0) | 2015.06.04 |
ATmega8(A)의 락 비트와 퓨즈 바이트 (1) | 2015.06.04 |
ATmega8(A)의 내부 메모리 구조 (0) | 2015.06.03 |