Chuong 5 PIC TIMER edit compatibility mode (1)

18 541 0
Chuong 5 PIC TIMER edit compatibility mode (1)

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

Thông tin tài liệu

CHƯƠNG HOẠT ĐỘNG CỦA BỘ ĐỊNH THỜI CHƯƠNG 5: HOẠT ĐỘNG BỘ ĐỊNH THỜI Bộ định thời TIMER0 Bộ định thời có chức chính: định thời (Timer) đếm xung (Counter) - TIMER0 bộ định thời / bộ đếm bit - Gồm bộ tiền định tỉ lệ (Prescaler) bit - Có bit chọn xung (Clock) nội hay xung bên ngồi - Có bit lựa chọn cạnh tác động xung Clock - Có ghi chứa số đếm TMR0 CHƯƠNG 5: HOẠT ĐỘNG BỘ ĐỊNH THỜI a Bộ tiền định tỉ lệ (Prescaler) - Là bợ đếm bit đóng vai trị: + Bợ tiền chia tỉ lệ cho Timer0 + Bộ hậu chia tỉ lệ cho bộ WDT - Bit PSA lựa chọn Prescaler dùng cho Timer/WDT - Giá trị tỉ lệ xác định bit PS2 : PS0 CHƯƠNG 5: HOẠT ĐỘNG BỘ ĐỊNH THỜI b Hoạt động bợ định thời TIMER0 Có chế đợ hoạt động chọn bit T0CS (OPTION) - Ở chế độ định thời: ghi TMR0 tăng lên sau chu kỳ máy Tcy (khi Prescaler khơng có tác dụng có tỉ lệ 1:1) - Ở chế đợ đếm xung: TMR0 tăng lên có sườn cạnh lên hay sườn cạnh xuống (qui định bit T0SE) xuất chân T0CLK CHƯƠNG 5: HOẠT ĐỘNG BỘ ĐỊNH THỜI - Khi Timer0 dùng xung Clock ngồi, ta phải đảm bảo xung Clock ngồi đồng bợ với xung Clock nội - Với giá trị tỉ lệ Prescaler 1:1, chu kỳ xung Clock với xung Clock nội - Do chu kỳ T xung Clock ngoài, thời gian Ton Toff phải Tosc CHƯƠNG 5: HOẠT ĐỘNG BỘ ĐỊNH THỜI DATA BUS Fosc/4 synchronize TMR0 scaled clock T0CKI pin prescaler Watchdog Timer RBPU WDT out INTEDG TOCS TOSE OPTION PSA PS2 PS1 PS0 Prescaler Assignment 1= prescaler assigned to WDT 0= prescaler assigned to Timer TMR0 Clock Source Select Source Edge Select = T0CKI, = Fosc/4 = High-to-Low = Low-to-High PS2 PS1 PS0 TMR0 RATE 0 1:2 0 1:4 1:8 1 1:16 0 1:32 1 1:64 1 1:128 1 1:256 Hình 5.1: Cấu trúc Bộ định thời TIMER0 CHƯƠNG 5: HOẠT ĐỘNG BỘ ĐỊNH THỜI DATA BUS Fosc/4 synchronize T0CKI pin scaled clock TMR0 PS2 PS1 PS0 TMR0 RATE 0 1:2 0 1:4 1:8 1 1:16 0 1:32 1 1:64 1= prescaler assigned to WDT 0= prescaler assigned to Timer 1:128 1 1:256 prescaler Watchdog Timer WDT out OPTION register RBPU INTEDG TOCS TOSE PSA PS2 PS1 PS0 Prescaler Rate Select Bits Prescaler Assignment TMR0 Clock Source Select = TOCK1, = Fosc/4 Source Edge Select = increment TMR0 on high-to-low transition = increment TMR0 on low-to-high transition Hình 5.2: Hoạt động định thời TIMER0 CHƯƠNG 5: HOẠT ĐỘNG BỘ ĐỊNH THỜI DATA BUS Fosc/4 synchronize T0CKI pin scaled clock Watchdog Timer TMR0 prescaler INTCON register TMR0IF • Cơng thức tính thời gian định thời TIMER0 CHƯƠNG 5: HOẠT ĐỘNG BỘ ĐỊNH THỜI c Ngắt TIMER0 - Ngắt Timer0 xảy bộ đếm TMR0 tràn, nghĩa số đếm từ FF → 00 - Khi tràn cờ tràn T0IF = Bit xóa phần mềm - Ngắt Timer0 khơng làm PIC khỏi chế đợ ngủ (SLEEP) CHƯƠNG 5: HOẠT ĐỘNG BỘ ĐỊNH THỜI d Khởi tạo TIMER0 COUNTER TRISA4 = 1, RA4 = 1: T0CKI Input TIMER TMR0 = XX : nạp giá trị đầu TMR0 = XX T0CS = : Clock nội T0CS = T0SE = PSA = : dùng Prescaler PS : chọn tỉ lệ Prescaler Sử dụng NGẮT T0IE = T0IF = GIE = : bật NGẮT Timer0 : xóa cờ NGẮT : bật NGẮT tồn cục PSA = PS : nạp giá trị đầu : Clock bên ngồi : t.động cạnh lên : khơng dùng Prescaler : chọn tỉ lệ Prescaler Sử dụng NGẮT T0IE = T0IF = GIE = : bật NGẮT Timer0 : xóa cờ NGẮT : bật NGẮT tồn cục CHƯƠNG 5: HOẠT ĐỘNG BỘ ĐỊNH THỜI Bộ định thời TIMER1 - TIMER1 bộ định thời / bộ đếm 16 bit - Gồm ghi bit TMR1H và TMR1L - Cờ TMR1IF =1 xảy tràn đếm TMR1  Thanh ghi điều khiển T1CON CHƯƠNG 5: HOẠT ĐỘNG BỘ ĐỊNH THỜI - Bit 5:4 - T1CKPS chọn tỉ lệ xung vào 00 = 1:1 10 = 1:4 01 = 1:2 11 = 1:8 - Bit - T1OSCEN: Chọn chế độ bộ dao động = Bật chế độ dao động LP(Low Power crystal) = Tắt chế độ dao động LP CHƯƠNG 5: HOẠT ĐỘNG BỘ ĐỊNH THỜI - Bit - T1SYNC\ : Bit cho phép đồng bộ nguồn xung bên ngồi (TMR1CS=1) = Khơng đồng bợ với xung ngồi = Đồng bợ - Bit - TMR1CS : Bit lựa chọn nguồn xung = chọn xung qua chân T1CKI = chọn xung bên ( Fosc /4 ) CHƯƠNG 5: HOẠT ĐỘNG BỘ ĐỊNH THỜI - Bit - TMR1ON : Bit cho phép Timer1 Run/Stop = Cho phép Timer1 hoạt động = Không cho phép CHƯƠNG 5: HOẠT ĐỘNG BỘ ĐỊNH THỜI T1OSI T1 OSC T1OS0 synchronize prescaler Fosc/4 T1CKI pin TMR1L TMR1H Enable Timer1 Gate Enable Timer1 Gate Invert = Không cho phép = Cho phép đồng T1CKPS1 T1CKPS0 T1OSCEN T1SYNC TMR1CS T1GINV TMR1GE T1CKPS1 T1CKPS0 scale 1 1:8 LP Oscillator Enable 1:4 1:2 = T1OSC selected = T1CKI can be used 0 1:1 TMR1ON T1CON TMR1ON Timer1 On = Enable Timer1 Clock Source Select = External (T1CKI) = Internal (FOSC/4) Hình 5.3: Cấu trúc Bộ định thời TIMER1 CHƯƠNG 5: HOẠT ĐỘNG BỘ ĐỊNH THỜI T1OSI T1 OSC T1OS0 prescaler synchronize Fosc/4 T1CKI pin TMR1H TMR1L Enable Timer1 Control Register (T1CON) TMR1ON T1CKPS1 T1CKPS0 T1OSCEN T1SYNC TMR1CS TMR1ON T1GINV TMR1GE T1CKPS1 T1CKPS0 scale 1 1:8 1:4 1:2 0 1:1 Timer1 On LP Oscillator Enable = T1OSC selected = T1CKI can be used = Enable Timer1 Clock Source Select = External (T1CKI) = Internal (FOSC/4) Hình 5.4: Hoạt động định thời TIMER1 CHƯƠNG 5: HOẠT ĐỘNG BỘ ĐỊNH THỜI T1OSI T1 OSC T1OS0 prescaler synchronize Fosc/4 T1CKI pin TMR1H TMR1L Enable TMR1ON Timer1 Control Register (T1CON) T1GINV TMR1GE T1CKPS1 T1CKPS0 T1OSCEN T1SYNC TMR1CS TMR1ON Timer1 Gate Enable and Timer1 Gate Invert are available on some devices Timer1 External Clock Input Synchronization = not synchronize external clock input = synchronize external clock input with internal clock (Fosc/4) Hình 5.4: Hoạt động định thời TIMER1 CHƯƠNG 5: HOẠT ĐỘNG BỘ ĐỊNH THỜI a Các chế độ hoạt động TIMER1  Chế độ định thời đồng bộ (TMR1CS =0) - Xung clock cấp từ dao động nội (Fosc/4) (Bit T1SYNC\ khơng có tác dụng chế độ này) - Trong chế độ SLEEP, bộ đếm ngưng hoạt động - Cơng thức tính thời gian định thời Timer1: CHƯƠNG 5: HOẠT ĐỘNG BỘ ĐỊNH THỜI  Chế độ đếm - đồng bộ (TMR1CS =1,T1SYNC\=0) - Bộ đếm Timer1 tăng xuất xung cạnh lên + chân T1OSI/RC1 T1OSCEN =1 + chân T1OSO/RC0 T1OSCEN =0 - Xung ngồi đồng bợ với xung nội - Việc đồng bộ thực sau hoạt động bộ Prescaler - Trong chế độ SLEEP, bộ đếm ngưng hoạt động CHƯƠNG 5: HOẠT ĐỘNG BỘ ĐỊNH THỜI  Chế độ đếm - không đồng bộ - Ở chế độ này, bit T1SYNC\ =1: xung không đồng bộ với nguồn xung bên - Timer1 tiếp tục đếm chế độ SLEEP, thoát khỏi trạng thái SLEEP NGẮT xảy Chú ý: + Khi đọc (Read) ghi TMR1 Timer chạy, ta nhận giá trị tức thời + Khi ghi (Write) vào Timer ta nên dừng Timer lại 10 CHƯƠNG 5: HOẠT ĐỘNG BỘ ĐỊNH THỜI b Bộ dao động riêng TIMER1 - Tạo dao động Low power Crystal (LP) cho Timer1 cách sử dụng Thạch anh có tần tối đa 200KHz, chân T1OSC0 T1OSC1 - Khi đó, đếm hoạt động chế độ SLEEP OSC Type Crystal C1 C2 LP 32,768 KHz 33pF 33pF 100 KHz 15pF 15pF 200 KHz 15pF 15pF CHƯƠNG 5: HOẠT ĐỘNG BỘ ĐỊNH THỜI c Ngắt TIMER1 - Ngắt Timer1 xảy tràn bộ đếm TMR1, nghĩa từ FFFF → 0000 - Khi Timer1 tràn TMR1IF = 1, cờ xóa phần mềm - Ngắt Timer1 chế độ định thời/đếm đồng không làm PIC thoát khỏi SLEEP, điều xảy chế độ đếm Không đồng 11 CHƯƠNG 5: HOẠT ĐỘNG BỘ ĐỊNH THỜI COUNTER d Khởi tạo TIMER1 TIMER TMR1ON = : STOP Timer1 TMR1 = xx : nạp giá trị đầu TMR1CS = : Clock nội ( T1SYNC\ = x : không quan tâm ) T1CKPS : chọn tỉ lệ Prescaler TMR1 = xx : nạp giá trị đầu TMR1CS = : Clock T1SYNC\ = 0/1 : cho phép đồng ? T1OSCEN=1: xung chân T1OSI/RC1 T1CKPS Nếu sử dụng NGẮT TMR1IE = TMR1IF = PEIE = GIE = TMR1ON = : bật NGẮT Timer1 : xóa cờ NGẮT : bật NGẮT ngoại vi : bật NGẮT toàn cục : cho Timer chạy : chọn tỉ lệ Prescaler Nếu sử dụng NGẮT TMR1IE = TMR1IF = PEIE = GIE = : bật NGẮT Timer1 : xóa cờ NGẮT : bật NGẮT ngoại vi : bật NGẮT toàn cục TMR1ON = : cho Timer chạy CHƯƠNG 5: HOẠT ĐỘNG BỘ ĐỊNH THỜI Bộ định thời TIMER2 - TIMER2 bộ định thời bit, bao gồm: + Bộ tiền định tỉ lệ (PreScaler) + Bộ hậu định tỉ lệ (PostScaler) + Thanh ghi chu kỳ PR2 - Ngoài chức định thời, Timer2 cịn có chức tạo khoảng thời gian hoạt động (Ton) chế độ điều biến xung PWM (Module CCP) 12 CHƯƠNG 5: HOẠT ĐỘNG BỘ ĐỊNH THỜI TMR2 OUTPUT Fosc/4 TMR2 Prescaler 1:1, 1:4, 1:16 Postscaler 1:1  1:16 COMPARATOR PR2 TOUTPS3 TOUTPS2 TOUTPS1 TOUTPS0 TMR2ON T2CKPS1 T2CON T2CKPS0 T2CKPS1 T2CKPS2 Scale 0 1:1 1:4 X 1:16 Timer2 ON = Timer2 enabled Hình 5.5: Cấu trúc định thời Timer2 CHƯƠNG 5: HOẠT ĐỘNG BỘ ĐỊNH THỜI Start Timer2 Counting TMR2 OUTPUT TMR2 Fosc/4 Prescaler 1:1, 1:4, 1:16 COMPARATOR Load Period Register PR2 Postscaler 1:1  1:16 PIR1 TMR2IF Flag set on first match with postscaler = 1:1 Hình 5.5: Cấu trúc định thời Timer2 13 CHƯƠNG 5: HOẠT ĐỘNG BỘ ĐỊNH THỜI TMR2 OUTPUT TMR2 Prescaler 1:1, 1:4, 1:16 Fosc/4 COMPARATOR Postscaler 1:1  1:16 PR2 Timer2 Control Register (T2CON) TOUTPS3 TOUTPS2 TOUTPS1 TOUTPS0 TMR2ON T2CKPS1 T2CKPS0 T2CKPS1 T2CKPS2 Scale 0 1:1 1:4 X 1:16 Timer2 ON = Timer2 enabled Hình 5.6: Hoạt động định thời TIMER2 CHƯƠNG 5: HOẠT ĐỘNG BỘ ĐỊNH THỜI TOUTPS3 TOUTPS2 TOUTPS1 TOUTPS0 SCALE 0 0 1:1 0 1:2 0 1:3 0 1 1:4 TMR2 Prescaler 1:1, 1:4, 1:16 0 1:5 1:6 1 1:7 1 1 0 0 1 1:11 1 PR21:12 1 0 1:13 1 1:14 1 1:15 1 1 1:16 Fosc/4 TMR2 OUTPUT 1:8 1:9 COMPARATOR 1:10 Postscaler 1:1  1:16 Timer2 Control Register (T2CON) TOUTPS3 TOUTPS2 TOUTPS1 TOUTPS0 TMR2ON T2CKPS1 T2CKPS0 T2CKPS1 T2CKPS2 Scale 0 1:1 1:4 X 1:16 Timer2 ON = Timer2 enabled Hình 5.6: Hoạt động định thời TIMER2 14 CHƯƠNG 5: HOẠT ĐỘNG BỘ ĐỊNH THỜI a Thanh ghi T2CON - Bit - Bit 6:3 – TOUTPS chọn giá trị tỉ lệ Postscaler (nằm ngõ Timer2) 0000 = 1:1 0001 = 1:2 … 1111 = 1:16 CHƯƠNG 5: HOẠT ĐỘNG BỘ ĐỊNH THỜI - Bit - TMR2ON: Bit cho phép Timer2 hoạt động = Cho phép = Không cho phép - Bit 1:0 - T2CKPS Bit chọn giá trị tỉ lệ ngõ vào Timer2 (Prescaler) 00 = 1:1 01 = 1:4 1x = 1:16 15 CHƯƠNG 5: HOẠT ĐỘNG BỘ ĐỊNH THỜI b Nguồn xung Clock Timer2 - Nguồn xung cấp cho Timer2 từ dao động nội, định tỉ lệ 3bit T2CKPS (Prescaler) c Thanh ghi TMR2 PR2 - TMR2 PR2 Ghi / Đọc - TMR2 tăng từ giá trị 00H đến giá trị PR2, sau Reset 00H cho chu kỳ đếm CHƯƠNG 5: HOẠT ĐỘNG BỘ ĐỊNH THỜI d Tín hiệu báo trạng thái cân - Khi giá trị ghi TMR2 PR2 nhau, so sánh tạo tín hiệu xung - Xung tiếp tục đưa qua hậu định tỉ lệ (PostScaler) sử dụng làm xung Clock cho Module truyền nối tiếp làm tín hiệu Reset cho Timer2 - Cơng thức tính thời gian định thời Timer2: 16 CHƯƠNG 5: HOẠT ĐỘNG BỘ ĐỊNH THỜI e Reset Bộ định tỉ lệ Các định tỉ lệ bị Reset khi: - Ghi giá trị vào ghi TMR2 - Ghi giá trị vào ghi T2CON - Khi xảy trạng thái Reset thiết bị f Chế độ SLEEP - Trong chế độ này, Timer2 không hoạt động - Giá trị định tỉ lệ lưu khôi phục lại sau thoát khỏi chế độ SLEEP CHƯƠNG 5: HOẠT ĐỘNG BỘ ĐỊNH THỜI g Khởi tạo TIMER2 TIMER PR2 = xxx : đặt giá trị vào ghi đặt trước PR2 T2CKPS : chọn tỉ lệ Prescaler T2OUTPS : chọn tỉ lệ Postscaler Nếu sử dụng NGẮT TMR2IE = TMR2IF = PEIE = GIE = : bật NGẮT Timer2 : xóa cờ NGẮT : bật NGẮT ngoại vi : bật NGẮT toàn cục TMR2ON = : cho Timer chạy 17 CHƯƠNG 5: HOẠT ĐỘNG BỘ ĐỊNH THỜI Bảng tóm tắt Timer TIMER0 TIMER1 TIMER2 SIZE OF REGISTER 8-bits (TMR0) 16-bits (TMR1H:TMR1L) 8-bits (TMR2) CLOCK SOURCE (Internal) Fosc/4 Fosc/4 Fosc/4 CLOCK SOURCE (External ) T0CKI pin T1CKI pin or Timer oscillator (T1OSC) None CLOCK SCALING AVAILABLE (Resolution) Prescaler 3-bits (1:21:256) Prescaler 2-bits (÷1,÷2,÷4,÷8) Prescaler (1:1,1:4,1:8) Postscaler (1:11:16) On overflow FFFFh0000h (TMR1IF in PIR1) TMR2 matches PR2 (TMR2IF in PIR2) YES NO INTERRUPT On overflow EVENT and FLAG FFh00h LOCATION (TMR0IF in INTCON) CAN WAKE PIC FROM SLEEP? NO CHƯƠNG 5: HOẠT ĐỘNG BỘ ĐỊNH THỜI Các Ví dụ Bài tập 18

Ngày đăng: 19/10/2016, 23:59

Từ khóa liên quan

Tài liệu cùng người dùng

Tài liệu liên quan