250 likes | 644 Views
타이머 / 카운트 정리. 정보통신 • 컴퓨터 공학부 송명규. 0. 타이머 / 카운트 개념 [1]. Timer 1 머신사이클 ( 내부 시스템 클럭 1/12) 을 세는 것을 말함 Counter 외부 핀에 입력되는 클럭 또는 이벤트를 세는것을 말함 이것을 타이머와 구별없이 혼용해서 사용 Using 타이머 / 카운터 0 는 SFR 영역의 TH0,TL0 타이머 / 카운터 1 는 SFR 영역의 TH1,TL1 클럭이 입력될 때 , +1 증가하는 업카운터 (up counter). TH0. TL0.
E N D
타이머/카운트 정리 정보통신•컴퓨터 공학부 송명규
0. 타이머/카운트 개념 [1] • Timer • 1머신사이클(내부 시스템 클럭 1/12)을 세는 것을 말함 • Counter • 외부 핀에 입력되는 클럭 또는 이벤트를 세는것을 말함 이것을 타이머와 구별없이 혼용해서 사용 • Using • 타이머/카운터 0는 SFR영역의 TH0,TL0 • 타이머/카운터 1는 SFR영역의 TH1,TL1 • 클럭이 입력될 때, +1 증가하는 업카운터(up counter)
TH0 TL0 TH1 TL1 Clock 입력 Overflow 발생 타이머/카운터0 8bit 타이머/카운터1 8bit TCON reg.의 TF0/TF1 bit set +1 증가 0. 타이머/카운트 개념 [2] • 타이머/카운터 동작 타이머의 구조 XTAL 인터럽트 카운터 (디지털 카운터) 오버플로 플래그 설정 클럭 발생
0. 타이머/카운트 개념 [3] • If) Timer Register Overfloow(0xFFFF->0x0000) • Than TCON Register TF Flag : Set 1 • Timer 0 -> TF0, Timer 1 -> TF1 • 타이머 1은 시리얼 포트의 Baud rate generator로 동작 가능 • 각 타이머는 TMOD와 TCON을 사용하여 프로그램
0. 타이머/카운트 개념 [4] 타이머 클럭 구조 XTAL oscillator ÷ 12 C/T = 0 C/T = 1 T0 핀(P3.4) TR0(TCON) GATE(TMOD) INT0핀(P3.2)
0. 타이머/카운트 개념 [5] 타이머로 사용 XTAL oscillator ÷ 12 C/T = 0 C/T = 1 T0 핀(P3.4) 1=동작 1 TR0(TCON) 1 0 1 GATE(TMOD) 1 INT0핀(P3.2)
0. 타이머/카운트 개념 [6] 카운터로 사용 XTAL oscillator ÷ 12 C/T = 0 C/T = 1 T0 핀(P3.4) 1=동작 1 TR0(TCON) 1 1 0 INT0핀(P3.2)
1. 타이머/카운트 0,1 [1] 12M HZ(11.0592Mhz) 시 기준 클럭 타임은 1us ec 이다. 24M HZ시 기준 클럭 타임은 500n sec 이다. 8bit 타이머/카운트시 최대 클럭 타임은 256u sec 이다. 16bit timer/count 최대 클럭 타임은 65m sec 이다. 8051에는 timer/count 0, 1이 있고 각 timer/count 마다 3가지 모드가 있다. 8051에는 timer/count 0, 1에 timer/count 2 가 존재하며 주로 USART의 보오레이트 발생기나, 펄스폭을 측정하는 캐처 기능으로 사용 된다. 십진수 시계 개념으로 1000 = 1초 Time 값(반주기 펄스폭 = 12MHZ기준) : 10 = 10usec, 100 = 100usec, 255 = 255usec, 1000 = 1ms, 5000 = 5msec, 10000 = 10msec, 30000 = 30msec, 60000 = 60msec, 65000 = 65msec Time값 설정방법 : 8bit = 256 – xxx(원하는 타임값) = 모드 2 오토 리로드 모드 = 최대 256usec ex)8bit 카운트에서 50usec 반주기 펄스폭 설정 : 256-50 = 206을 다시 hex로 바꾸워 THx에다 대입한다. = 0xce
1. 타이머/카운트 0,1 [2] 16bit = 65536 – xxxx(원하는 타임 반주기값) 모드1 16bit timer/count 최대 65m sec 까지 설정할수 있다 ex) 50m sec timer/count값 설정시 : t= 65536-50000 = 15536을 hex값 을 바꾸어 THx 와 TLx에 대입한다. = 0x3cb0 == THx = 0x3c; TLx = 0xb0; timer/ 와 count 구분은 내부 클럭으로 동작하면 timer 이고 외부 t0, t1 pin에서 클럭펄스를 받아서 동작하면 count 이다. Tmod 레지스터의 gate bit를 1로 설정하면 각 timer/count의 스타트를 외부 인터럽트 pin과 동기시켜 동작 시킬수 있다. 즉 t0는 int0 pin과 tr0 bit의 and 동 작 이며 t1는 int1 pin과 tr1 bit의 and 동작이다. 이는 외부 펄스를 카운터 하거 나 클럭 펄스와 동기시켜 제어를 할시 유효한다. ex) 주파수 측정, 펄스폭 측정, ir 리모콘 data 해독시 응용되고 있다. 타이머/카운트 1은 모드2로 시리얼통신시 보오레이트 발생기로 사용된다.