1 / 24

타이머

타이머. 8051 타이머 타이머 설정 및 모드. dolicom@naver.com http://blog.naver.com/dolicom. 카운터의 원리와 디지털회로. 2 진 카운터 (Binary Counter) 디지털 회로에 의해 이루어 진다 . 정해진 초기 값으로 부터 1 증가 하거나 1 감소 한다 . 설계 시 카운터 비트 수가 결정되어 있어 그 비트수가 지정할 수 있는 최대 범위가 넘으면 0 으로 간다 .

mercer
Download Presentation

타이머

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. 타이머 8051 타이머 타이머 설정 및 모드 dolicom@naver.com http://blog.naver.com/dolicom

  2. 카운터의 원리와 디지털회로 • 2진 카운터 (Binary Counter) • 디지털 회로에 의해 이루어 진다. • 정해진 초기 값으로 부터 1증가 하거나 1감소 한다. • 설계 시 카운터 비트 수가 결정되어 있어 그 비트수가 지정할 수 있는 최대 범위가 넘으면 0으로 간다. • (예) 4비트 2진 카운터는 0부터 15까지 16 상태로 카운터 된다. 0 → 1 → 2 → … → 14 → 15 → 0 → 1 → …

  3. Q Q Q D D D > > > CLK CLK CLK Q Q Q 카운터는 클럭에 의해 상태가 바뀐다. 0 1 2 3 4 5 6 7 0 Q2 0 0 0 0 1 1 1 1 0 조합 논리 회로 0 0 1 1 0 0 1 1 0 Q1 0 1 0 1 0 1 0 1 0 Q0 CLK CLK

  4. 8051 타이머 타이머/카운터

  5. 타이머(Timer)와 카운터(Counter) • 타이머(Timer) • 1머신사이클(내부 시스템 클럭 1/12)을 세는 것을 말함 • 카운터(Counter) • 외부 핀에 입력되는 클럭 또느 이벤트를 세는것을 말함. 이것을 타이머와 구별없이 혼용해서 사용. • 방법 • 타이머/카운터 0는 SFR영역의 TH0,TL0 • 타이머/카운터 1는 SFR영역의 TH1,TL1 • 클럭이 입력될 때, +1 증가하는 업카운터(up counter)

  6. 타이머의 구조 XTAL 인터럽트 카운터 (디지털 카운터) 오버플로 플래그 설정 시스템 클럭 클럭 발생 외부 핀 입력

  7. 타이머의 사용 • 타이머 레지스터가 오버플로 (0xFFFF->0x0000)가 발생하면, TCON 레지스터내의 TF(Timer Overflow)가 셋된다. • Timer 0 -> TF0, Timer 1 -> TF1 • 타이머 2은 시리얼 포트의 보레이트 제너레이터(Baud rate gererator)로 동작 시킬 수 있다. • 4개의 타이머는 TMOD와 TCON을 사용하여 프로그램 한다.

  8. TMOD 레지스터 7 6 5 4 3 2 1 0 GATE C/T M1 M0 GATE C/T M1 M0 Timer 1 Timer 2 • GATE : 외부 인터럽트 핀(INT1, INT0)을 이용해서, 타이머를 정지/동작을 제어 한다. • 1. GATE=1, TR0=1 : INT0=1 –타이머1 동작, INT0 –정지 • GATE=1, TR1=1 : INT1=1 –타이머2 동작, INT1 –정지 • 2. GATE=0 : INT0,INT1 핀을 사용하지 않으며, TCON내의 TR0, TR1에 • 따라 동작/정지 된다. • C/T (Counter/Timer selector) : 카운터/타이머 모드를 결정 • 1. C/T=1 : 카운터 모드 –입력 핀 T0, T1에서 들어오는 펄스를 센다. • C/T=0 : 타이머 모드 –시스템 클럭/12을 센다. • M1:M0 : 동작 모드 설정 • 4가지 모드를 지원 한다.

  9. 타이머 클럭 구조 XTAL oscillator ÷ 12 C/T = 0 C/T = 1 T0 핀(P3.4) TR0(TCON) GATE(TMOD) INT0핀(P3.2)

  10. 타이머로 사용 –시스템 클럭 사용 XTAL oscillator ÷ 12 C/T = 0 C/T = 1 T0 핀(P3.4) 1=동작 1 TR0(TCON) 1 1 0 GATE(TMOD) INT0핀(P3.2)

  11. 타이머 사용 – 시스템 클럭 사용 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)

  12. 타이머로 사용 –외부 클럭 사용 XTAL oscillator ÷ 12 C/T = 0 C/T = 1 T0 핀(P3.4) 1=동작 1 TR0(TCON) 1 1 0 GATE(TMOD) INT0핀(P3.2)

  13. TCON 레지스터 7 6 5 4 3 2 1 0 TF1 TR1 TF0 TR0 IE1 IT1 IE0 IT0 Timer2 Timer1 Interrupt • TR1/TR0 : 타이머/카운터 동작/정지 제어 한다. • TR0=1 : 타이머/카운터 0 동작 • TR0=0 : 타이머/카운터 0 정지 • TF1/TF0 : 타이머/카운터 오버플로 플래그 • TF0 : 타이머/카운터 0의 카운터 레지스터(TH1, TH0)가 오버플로가 되면 • 셋된다. • *이 때 다음과 같이 인터럽트 처리 된다.. • - 인터럽트 인에이블되어 있고 • - 인터럽트 요청하게 되면 • - 인터럽트 처리가 끝나면 자동으로 클리어 된다

  14. 타이머/카운터의 동작 모드 • 4가지 동작 모드 지원 • TMOD의 M1:M0을 이용 설정 • 모드 0~2는 타이머/카운터 1과 2이 똑같이 동작 • 모드 3에서는 모듈1과 2가 다르다.

  15. 모드 0 • 32분주 프리스케일러(prescaler)+8비트카운터 TH0: 255→0 TL0: 31→0 오버플로 플래그 ÷ 12 OSC 0→255 카운팅 0→31 카운팅 Interrupt 0x000B TH0(8bit) TL0(5bit) TF0 T1 외부클럭 • 오버플로가 발생하면 • TF0 셋 • 인터럽트 인에이블(enable) 되어 있으면 • 인터럽트 요청 • ISR로 가기전에 TF0를 클리어 하고 • ISR로 들어가서 인터럽트 처리 한다. • 클럭선택(C/T0) • 동작설정 • TR0 • GATE0 • INT0

  16. 모드 0의 프로그램 • 우선 TMOD동작 모드 및 동작 설정 한다. TMOD = 0x04; • 타이머 1 • 동작 모드 M1:M0= 00 : 모드 0 • GATE0=0 : 사용 않함 • C/T0 = 1 : 가운터로 동작 –외부클럭 T0 사용 • 타이머 2 • 동작 모드 0, GATE1=0 : 사용 않함 • C/T0 = 0 : 타이머로 동작 –시스템 클럭 사용 • 시정수 결정 TH0=255;- 시정수 256-255=1 : 32x1 TH1=90; - 시정수 256-90=166, 전체 시정수=32x166 • 타이머 동작 시작 TR0=1; TR1=1; - 타이머1/2 동작시작

  17. 모드 1 • 16비트 카운터 : 8비트 + 8비트 TH0: 255→0 TL0: 255→0 오버플로 플래그 ÷ 12 OSC 0→255 카운팅 0→255 카운팅 Interrupt 0x000B TH0(8bit) TL0(8bit) TF0 T1 외부클럭 • 클럭선택(C/T0) • 동작설정 • TR0 • GATE0 • INT0 • 모드 0와 모든 동작은 같고 • 5비트 대신 8비트로 바뀜

  18. 모드 2 • 8비트카운터 : Auto Reload TH0(8bit) TL0: 255→0 Auto reload 오버플로 플래그 ÷ 12 OSC Interrupt 0x000B TL0(8bit) TF0 TH0→255 카운팅 T1 외부클럭 TL0: 255→0 • 클럭선택(C/T0) • 동작설정 • TR0 • GATE0 • INT0

  19. 모드 3 –타이머 1 • 8비트카운터 – TH0, TL0 카운터 Interrupt 0x001B • 동작설정 • TR1 TF1 TH0(8bit) ÷ 12 OSC Interrupt 0x000B TL0(8bit) TF0 TH0→255 카운팅 T1 외부클럭 • 클럭선택(C/T0) • 동작설정 • TR0 • GATE0 • INT0

  20. 모드 3 –타이머 2 • 8비트카운터 – TF1은 사용 불가능 TH1(8bit) ÷ 12 OSC TL1(8bit) Serial Port 클럭 TH0→255 카운팅 T1 외부클럭 • 클럭선택(C/T1) • 동작설정 • TR1 • GATE1 • INT1

  21. 8051 타이머 Timer2

  22. T2CON 레지스터 0xC8 7 6 5 4 3 2 1 0 TF2 EXF2 RCLK TCLK EXEN2 TR2 CP/T2 CP/RL2 • TF2 : Overflow가 되면 1로 되고 SW로 지움. RCLK/TCLK=1이면 동작 안함. • EXF2 : Capture/Reload일 때, T2EX가 오면 1로 됨. EXEN2=1일때 동작. • - 인터럽트 요청 EXF2=1이면 Timer2 Vector로 처리-인터럽트 루틴 실행. • - DCEN=1로 Up/Down Counter Mode에서 동작 안함. • RCLK : Serial Mode1/3에서 Receive clock으로 사용. • TCLK : Serial Mode1/3에서 Transmit clock으로 사용. • EXEN2 : Timer2 External 동작. • TR2 : Timer2의 동작 시작/멈춤 설정. • CP/T2 : Timer/ Counter(외부입력 사용) 설정. • CP/RL2 : Capture/Reload 선택.

  23. Timer2 동작 모드 • 16비트 자동 재로드 모드 • 특정한 조건에서 16비트 카운터에 RCAP2H 및 RCAP2L 레지스터의 값을 로드 • 16비트 캡쳐 모드(capture mode) • 외부의 T2EX 신호에 의하여 현재의 타이머 레지스터 값을 캡쳐 • 16비트 보레이트 발생기 모드 (Baud Rate Generator Mode) • T2CON 레지스터에서 TCLK이나 RCLK 비트를 최소한 1개만 세트시켜도 설정 • 16비트 프로그래머블 클럭 출력 모드 (Programmable Clock-Out Mode) • 보레이트 발생기 모드에서 발생되어 직렬 포트에 제공되는 주파수 신호를 외부 단자로 출력할 수 있는 기능

  24. Timer2의 동작 모드 – T2CON

More Related