• 검색 결과가 없습니다.

Timer & Real-time clock

문서에서 하드웨어 설계 및 프로그래밍 (페이지 51-85)

RELAY

5. Timer & Real-time clock

과 은 가지의 선택이 가능하다 각각

T/C 0 1 4 Prescaled . CK/8, CK/64, CK/256, CK/1024 이다. SFIOR 레지스터의 PSR10 bit를 Setting하면 Prescaler는 Reset되며, T/C 0과 T/C

은 이 를 공유 하므로 양쪽 에 모두 영향을 미친다

1 Prescaler T/C .

로의 는 기본적으로 메인 시스템 인 이며 레지스터의

T/C 2 Clock Source Clock CK , ASSR

를 해서 비동기적으로 핀 의 을 로 사용할 수 있다

AS2bit Setting PC6 (TOSC1) Clock Source . 이것은 T/C 2를 RTC로 사용 가능하게 해준다.

가 되면 핀 과 핀 는 포트 로 부터 끊기게 된다

AS2bit Setting PC6 (TOSC1) PC7 (TOSC2) C . 이렇게 해서 Crystal을 PC6핀과 PC7핀에 연결하여, 외부Clock Source 로 사용할 수 있 다. Oscillator는 특별히 32.768Khz Crystal에 에 최적화 되어 있다. SFIOR 레지스터의

를 하면 이 는 된다

PSR2bit Setting Prescaler Reset .

그림 8bit 타이머 카운터 T/C 0의 블럭 다이어 그램

는 로 프리 스케일된 혹은 외부 핀을 선택할 수 있다

8bit T/C 0 Clock Source CK, CK, .

추가적으로 T/C 0는 TCCR0 (Timer/Counter0 Control Register)에 의해 정지(stop) 될 수 있다 이외에. TCCR0는 T/C 0의 컨트롤 상태를 가지고 있다.

오버플로우 상태는 TIFR(Timer/Counter Flag Register)로 알 수 있다.

인터럽트 제어는 TIMSK(Timer/Counter Interrupt Mask Register)레지스터 에서 한다. 만일 T/C 0이 외부적으로 Clock Source를 사용하게 되면, 이 외부 신호는 CPU의

주파수와 동기화 되게 된다 외부적 신호를 정확하게 하기 위해 최

Oscillator . Sampling

소한 외부 Clock의 전이 시간은 CPU 내부Clock 의 한 주기는 되어야 한다. 외부 Clock 신호는 내부 CPU Clock의 라이징 에지에서- Sampling 된다.

낮은 Prescaling으로 보다 고밀도와 정확성이 높은 타이머 카운터로 쓸수 있으며/ , 반 대로 높은 Prescaling으로 낮은 속도를 보이는 함수나, 자주 사용되지 않는 부분에 대해 유용하게 사용할 수 있다.

레지스터 TCCR0

까지는 사용되지 않으며 항상 으로 읽힌다

bit 7~3 0 .

의 기능은 그림과 같다

bit 2,1,0 .

그림. TCCR0 의 2,1,0 bit (CS02, CS01, CS00)

정지기능은 Timer의 Enable/Disable 기능을 제공하며, Prescaled CK모드는 CK 로부터 하게 스케일 된다 만일 외부 핀 모드로 사용되면

Oscillator Directly . , PB0/(T0)

의 변이가 카운터의 Clock으로 사용된다. (이 핀이 설사 출력으로 설정 되어 있어도 그 렇다. )

레지스터는 업 카운터로 동작하며 읽기 쓰기가 가능하다 만

TCNT0( Timer Counter 0) - / .

일 TCNT0가 쓰기 동작중일때 Clock Source가 발생되면, 쓰기 동작을 완료한 후 바로 한다

Counting .

타이머 카운터 16bit

의 은 와 마찬가지로 외부 핀을 로 사

16bit T/C 1 T/C0 CK, Prescaled CK, Clock Source 용 할 수 있다. TCCR1B (Timer Counter1 Control Register B) 레지스터로 정지가 가능하 다. 각각의 상태 플래그 오버 플로우( , 비교매치 캡쳐이벤트, ) 는 TIFR레지스터로 알 수 있다. T/C 1의 제어는 TCCR1B와 TCCR1A레지스터로 한다. 인터럽트 제어는 TIMSK 레지스 터에서 수행한다.

만일 T/C 1이 외부적으로 Clock Source를 사용하게 되면, 이 외부 신호는 CPU의 주파수와 동기화 되게 된다 외부적 신호를 정확하게 하기 위해 최

Oscillator . Sampling

소한 외부 Clock의 전이 시간은 CPU 내부 Clock 의 한 주기는 되어야 한다. 외부 Clock 신호는 내부 CPU Clock의 라이징 에지에서- Sampling 된다.

은 와 레지스터를 통한 두개의 출력 비교 T/C 1 OCR1A(Output Compare Register 1A) OCR1B

기능을 제공한다 데이타. source는 이를 통해 T/C 1의 값과 비교가 가능하다.

그림 T/C 1의 블럭 다이어그램

출력비교 기능은 compareA 매치를 통해 카운터 초기화를 지원하며, 양쪽모두 출력비교핀

을 활성화 시킬수 있다 는 짜리 으로도 사용되

(Output Compare Pins) . T/C 1 8,9,10bit PWM

어 질 수 있다. PWM 모드에서는 OCR1A/OCR1B 레지스터가 중앙 펄스 방식

(centered-의 독립적 듀얼 글리치 프리 으로 작동한다 이외에

pulses) - - (dual glitch-free) PWM . , T/C 이 모드에서 속도를 배 빠르게 조정될 수 있는데 이때는 중앙펄스 방식이 아니게

1 PWM 2 ,

된다.

의 입력감지 기능은 외부 발생 이벤트에 대한 입력감지핀 의 트리거

T/C 1 (ICP)

로 입력 캡쳐 레지스터 의 입력 감지 기능을 수행 할 수 있게 한다 입력

(trigger) (ICR) .

감지 관련 Setting은 T/C 1 컨트롤 레지스터(TCCR1B)에 의해 행해진다. 추가적으로

는 아날로그 비교기 를 입력 트리거로 할 수 있다

TCCR1B (Analog Comparator) Setting . 입력 감지핀의 구성은 다음 그림과 같다.

그림 입력감지핀(ICP)의 구조

만일 노이즈 제거 기능이 활성화 되어 있으면, 실제 입력 이벤트의 트리거 조건은 4개 의샘플마다 모니터 된다 그리고 이 개의 샘플은 모두 같아야 한다. 4 .

타이머 카운터 컨트롤 레지스터

16bit A - TCCR1A

출력비교 모드 과

* Bit 7,6 -COM1A1, COM1A0 : 1A, bit 1 0

과 제어 는 아래의 의 모든 출력 핀에 대한 정의를 담당한다

COM1A1 COM1A0 bit T/C1 .

즉, OC1A(출력비교A)에 영향를 미치는 모든 출력 핀들에 대해서이다.

이는 I/O 포트에 대해 변경 가능한 기능으로, 이에 해당하는 방향 제어 bit가 로1 되어 있어야 하며 제어와 관련된 구성은 아래 그림 와 같다

Setting , 9 .

출력비교 모드 과

* Bit 5,4 -COM1B1, COM1B0 : 1B, bit 1 0

과 제어 는 아래의 의 모든 출력 핀에 대한 정의를 담당한다

COM1B1 COM1B0 bit T/C1 .

즉, OC1B(출력비교B)에 영향를 미치는 모든 출력 핀들에 대해서이다.

이는 I/O 포트에 대해 변경 가능한 기능으로, 이에 해당하는 방향 제어 bit가 로1 되어 있어야 하며 제어와 관련된 구성은 아래 그림과 같다

Setting , .

그림 출력비교 모드 1 선택 또는

Note: X=A B

모드에서는 위의 들은 각기 다른 기능을 하는데 사용된다

PWM bit .

* Bit3 - FOC1A : Force Output Compare 1A

이 bit를 로1 Setting하는 것은 비교매치 출력 핀, PD5을 미리 Setting되어 있는 COM1A1

과 COM1A0 에 따라 바꾸도록 한다

만일 COM1A1과 COM1A0bit가 같은 사이클에 Write되면 이 새로운, Setting은 다음 비교매 치까지, 혹은 강제 비교매치 전 가짜효력을 발생하지 않는다. FOC bit는 Timer 내의 비 교매치를 기다리지 않고 출력핀을 바꾸는데 사용될 수 있다 즉, . , COM1A1과 COM1A0bit를 자동적으로 프로그램 되게 하여, 비교매치가 발생된 것처럼 할 수 있다 그러나 인터럽. , 트는 발생하지 않으며, CTC1과 TCCR1B가 set되어 있다 하더라고 Timer를 클리어 하지는 않는다. FOC1A bit가 해당 핀에 효과를 발휘하기 위해서는 해당되는 I/O 핀은 출력핀으 로 선택되어 있어야 한다. FOC1Abit는 항상 0으로 읽히며, FOC1Abit의 Setting은 PWM모 드에 영향을 주지 않는다.

* Bit2 - FOC1B : Force Output Compare 1B

위와 동일하다 단. COM1A1,COM1A0 -> COM1B1, COM1B0로 변경

선택 틀

* Bit1,0 - PWM11, PWM10 : PWM bit

이 bit들은 T/C 1의 PWM 관련된 모드를 선택한다.

그림 PWM 모드 선택

타이머 카운터 컨트롤 레지스터

16bit B - TCCR1B

* Bit 7 - ICNC1: Input Capture 1 Noise Canceler (4 CKs)

가 으로 되어 있으면 입력 감지 트리거 잡음 제거 기능은 비 활설화 된다

ICNC1 bit 0 , .

입력 감지 신호는 ICP(입력감지핀 의 최초 라이징 펄링 에지) / - (rising/falling edge)에서 트리거된다.

만일 ICNC1 bit가 1로 Setting 되어 있으면, ICP의 4개의 연속된 sample이 측정되며,

개 모두가 에서 된 대로 하이 또는 로우 가 되어야 입력

4 ICES1 bit Setting (high) (low) 감지 트리거로 인정 된다. 실제 샘플링 주파수는 XTAL Clock 주파수가 된다.

* Bit 6 - ICES1 : Input Capture 1 Edge Select

만일 ICES1 bit가 0이면, T/C1의 내용은 ICP의 신호가 펄링 에지일때- ,ICR1(Input 로 전이되며 로 되어 있으면 라이징 에지일때 전이된다

Capture Register) , 1 Setting , - .

보류된

* Bit 5,4 -Res : bit

보류된 bit들이며 항상 으로 읽힌다0 .

* Bit 3- CTC1 : Clear Timer / Counter 1 on Compare Match

만일 CTC1이 1로 Setting되어 있으면, T/C 1은 compareA 매치후 Clock 사이클 이내에

으로 되며 으로 되어 있으면 을 계속하며 비교매치에 영

$0000 Reset , 0 Setting , Counting , 향을 주지 않는다.

만일 Prescaling 1이 사용되고 있고, compareA 레지스터가 로C Setting이 되어 있다면, 이 되어 있을경우 아래와 같이 카운트 할 것이다

CTC1 Setting .

C-1, C, 0, 1 ...

만일 Prescaler가 나누기 8로 Setting되어 있을 경우 타이머 카운트는 아래와 같다, .

C-1,C-1,C-1,C-1,C-1,C-1,C-1,C-1, C, C, C, C, C, C, C, C, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, ....

모드에서는 이 는 다른 기능을 하며 만일 모드에서 이 가 으로 되어 있으

PWM bit , PWM bit 0

면 T/C 1은 업 다운 카운터로 작동 한다/ . 만일 1로 되어 있으면, 타이머 카운터가 최고/ 치값에 도달하였을 경우 다시 랩, (wrap)하도록 되어 있다.

* Bit 2,1,0 - CS12, CS11, CS10 : Clock Select 1, Bit 2,1,0

선택 은 의 를 결정한다

Clock bit 2,1,0 T/C 1 Prescaler source .

그림 clock 1 Prescaler 실렉트

정지조건은 Timer를 가동 정지 할 수 있게 해주며/ , 프리스케일모드는 CK Oscillator 으로부터 바로 스케일 된다 만일 에 외부 핀 모드가 사용되면 핀이 비로 출

Clock . T/C 1 ,

력으로 설정되어 있다 하더라도 PB1/(T1)의 전이가 카운터를 Clock 시킬것이다 이 기능. 은 사용자의 S/W가 Counting을 콘트롤 할 수 있도록 해 준다.

타이머 카운터 1 TCNT1H 와 TCNT1L

이 16bit 레지스터는 T/C 1의 Prescaled된 값을 저장하고 있다 이 두개의 레지스터에. 읽기와 쓰기를 행할때, CPU는 동시에 접근하기 위하여 8bit짜리 TEMP 레지스터를 사용한 다. 이 임시 레지스터는 OCR1A, OCR1B, ICR1레지스에 접근할때도 사용된다. 메인프로그 램과 인터럽트 루틴에 의해 레지스터에 접근이 이루어 질때, 다른 메인프로그램과 인터 럽트 루틴의 접근을 방지하기 위해 인터럽트는 비 활성화 되어 있어야 한다.

타이머 카운터 쓰기 TCNT1 /

가 에 쓸때 쓰기위한 데이터는 레지스터에 써지며 다음 에 쓸

CPU TCNT1H , TEMP , TCNT1L

때 이 byte가 TEMP레지스터와 조합되어 16bit의 모든 데이타가 TCNT1 레지스터에 동시에 쓰이게 된다. 따라서, 16bit의 레지스터의 쓰기 작동에서 TCNT1H가 먼저 접근되어져야 한다.

타이머 카운터 읽기 TCNT1 /

가 로 부터 읽을때 의 내용은 로 전송되고 상위 인 의

CPU TCNT1L , TCNT1L CPU byte TCNT1H

내용은 TEMP레지스터에 전송된다. CPU가 다음 TCNT1H의 내용을 읽을때는 TEMP레지스터로 부터 값을전달 받는다. 따라서, 16bit의 레지스터 읽기 작동에서는 TCNT1L의 내용이 먼 저 접근 되어져야 한다.

은 모드에서 읽기 쓰기 동작에 업 다운 카운터로 동작한다 만일 이 쓰

T/C 1 PWM / / . T/C 1

여지고 Clock Source가 선택되어져 있을 경우 T/C 1은 쓰는 값으로 값을 Setting하고 사이클 동안 을 계속 하게 된다

Timer Clock Counting .

타이머 카운터 1 출력 비교 레지스터 - OCR1A, OCR1B

출력 비교 레지스터는 16bit의 읽기 쓰기 레지스터이다/ . T/C 1의 OCR이 가지고 있는 값은 계속적으로 T/C 1의 값과 비교된다. 비교매치시의 행동은 T/C 1 제어 상태 레지스/ 터에서 설정한다. 소프트웨어로 T/C 레지스터에 값을 쓰는 것은 다음번 T/C Clock 사이 클 동안의 비교매치를 중지(block)한다 이는. T/C가 초기화 되었을때의 즉각적인 인터럽 트를 방지한다.

비교매치는 비교 이벤트에 따라- CPU의 Clock 사이클 이내에 비교 인터럽트 플래그를-

-한다 도 레지스터이기 때문에 레지스터가 쓰여지는 동작을 할

Setting . OCR 16bit OCR1A/B

때 2개의 byte가 동시적으로 접근되게 하기 위하여 TEMP레지스터를 사용한다.

문서에서 하드웨어 설계 및 프로그래밍 (페이지 51-85)

관련 문서