2.5.5 PORTE PORTE (RPE) gồm chân I/O Thanh ghi điềukhiển xuất nhập tương ứng TRISE Các chân PORTE có ngõ vào analog Bên cạnh PORTE chân điềukhiển chuẩn giao tiếp PSP Cấu trúc bên chức cụ thể chân PORTE trình bày cụ thể Phụ lục Các ghi liên quan đến PORTE bao gồm: PORTE : chứa giá trò chân PORTE TRISE : điềukhiển xuất nhập xác lập thông số cho chuẩn giao tiếp PSP ADCON1 : ghi điềukhiển khối ADC Chi tiết ghi trình bày cụ thể phụ lục 2.6 TIMER Đây ba đếm đònh thời viđiềukhiển PIC16F877A Timer0 đếm bit kết nối với chia tần số (prescaler) bit Cấu trúc Timer0 cho phép ta lựa chọn xung clock tác động cạnh tích cực xung clock Ngắt Timer0 xuất Timer0 bò tràn Bit TMR0IE (INTCON) bit điềukhiển Timer0 TMR0IE=1 cho phép ngắt Timer0 tác động, TMR0IF= không cho phép ngắt Timer0 tác động Sơ đồ khối Timer0 sau: Hình 2.5 Sơ đồ khối Timer0 Muốn Timer0 hoạt động chế độ Timer ta clear bit TOSC (OPTION_REG), giá trò ghi TMR0 tăng theo chu kì xung đồng hồ (tần số vào Timer0 ¼ tần số oscillator) Khi giá trò ghi TMR0 từ FFh trở 00h, ngắt Timer0 xuất Thanh ghi TMR0 cho phép ghi xóa giúp ta ấn đònh thời điểm ngắt Timer0 xuất cách linh động Muốn Timer0 hoạt động chế độ counter ta set bit TOSC (OPTION_REG) Khi xung tác động lên đếm lấy từ chân RA4/TOCK1 Bit TOSE (OPTION_REG) cho phép lựa chọn cạnh tác động vào bột đếm Cạnh tác động cạnh lên TOSE=0 cạnh tác động cạnh xuống TOSE=1 Khi ghi TMR0 bò tràn, bit TMR0IF (INTCON) set Đây cờ ngắt Timer0 Cờ ngắt phải xóa chương trình trước đếm bắt đầu thực lại trình đếm Ngắt Timer0 “đánh thức” viđiềukhiển từ chế độ sleep Bộ chia tần số (prescaler) chia sẻ Timer0 WDT (Watchdog Timer) Điều có nghóa prescaler sử dụng cho Timer0 WDT hỗ trợ prescaler ngược lại Prescaler điềukhiển ghi OPTION_REG Bit PSA (OPTION_REG) xác đònh đối tượng tác động prescaler Các bit PS2:PS0 (OPTION_REG) xác đònh tỉ số chia tần số prescaler Xem lại ghi OPTION_REG để xác đònh lại cách chi tiết bit điềukhiển Các lệnh tác động lên giá trò ghi TMR0 xóa chế độ hoạt động prescaler Khi đối tượng tác động Timer0, tác động lên giá trò ghi TMR0 xóa prescaler không làm thay đổi đối tượng tác động prescaler Khi đối tượng tác động WDT, lệnh CLRWDT xóa prescaler, đồng thời prescaler ngưng tác vụ hỗ trợ cho WDT Các ghi điềukhiển liên quan đến Timer0 bao gồm: TMR0 (đòa 01h, 101h) : chứa giá trò đếm Timer0 INTCON (đòa 0Bh, 8Bh, 10Bh, 18Bh): cho phép ngắt hoạt động (GIE PEIE) OPTION_REG (đòa 81h, 181h): điềukhiển prescaler Chi tiết ghi trình bày cụ thể phụ lục 2.7 TIMER1 Timer1 đònh thời 16 bit, giá trò Timer1 lưu hai ghi (TMR1H:TMR1L) Cờ ngắt Timer1 bit TMR1IF (PIR1) Bit điềukhiển Timer1 TMR1IE (PIE) Tương tự Timer0, Timer1 có hai chế độ hoạt động: chế độ đònh thời (timer) với xung kích xung clock oscillator (tần số timer ¼ tần số oscillator) chế độ đếm (counter) với xung kích xung phản ánh kiện cần đếm lấy từ bên thông qua chân RC0/T1OSO/T1CKI (cạnh tác động cạnh lên) Việc lựa chọn xung tác động (tương ứng với việc lựa chọn chế độ hoạt động timer hay counter) điềukhiển bit TMR1CS (T1CON) Sau sơ đồ khối Timer1: Hình 2.6 Sơ đồ khối Timer1 Ngoài Timer1 có chức reset input bên điềukhiển hai khối CCP (Capture/Compare/PWM) Khi bit T1OSCEN (T1CON) set, Timer1 lấy xung clock từ hai chân RC1/T1OSI/CCP2 RC0/T1OSO/T1CKI làm xung đếm Timer1 bắt đầu đếm sau cạnh xuống xung ngõ vào Khi PORTC bỏ qua tác động hai bit TRISC PORTC gán giá trò Khi clear bit T1OSCEN Timer1 lấy xung đếm từ oscillator từ chân RC0/T1OSO/T1CKI Timer1 có hai chế độ đếm đồng (Synchronous) bất đồng (Asynchronous) Chế độ đếm đònh bit điềukhiển (T1CON) =1 xung đếm lấy từ bên không đồng hóa với xung clock Khi bên trong, Timer1 tiếp tục trình đếm viđiềukhiển chế độ sleep ngắt Timer1 tạo bò tràn có khả “đánh thức” viđiềukhiển Ở chế độ đếm bất đồng bộ, Timer1 sử dụng để làm nguồn xung clock cho khối CCP (Capture/Compare/Pulse width modulation) =0 xung đếm vào Timer1 đồng hóa với xung clock bên Ở Khi chế độ Timer1 không hoạt động viđiềukhiển chế độ sleep Các ghi liên quan đến Timer1 bao gồm: INTCON (đòa 0Bh, 8Bh, 10Bh, 18Bh): cho phép ngắt hoạt động (GIE PEIE) PIR1 (đòa 0Ch): chứa cờ ngắt Timer1 (TMR1IF) PIE1( đòa 8Ch): cho phép ngắt Timer1 (TMR1IE) TMR1L (đòa 0Eh): chứa giá trò bit thấp đếm Timer1 TMR1H (đòa 0Eh): chứa giá trò bit cao đếm Timer1 T1CON (đòa 10h): xác lập thông số cho Timer1 Chi tiết ghi trình bày cụ thể phụ lục 2.8 TIMER2 Timer2 đònh thời bit hỗ trợ hai chia tần số prescaler va postscaler Thanh ghi chứa giá trò đếm Timer2 TMR2 Bit cho phép ngắt Timer2 tác động TMR2ON (T2CON) Cờ ngắt Timer2 bit TMR2IF (PIR1) Xung ngõ vào (tần số ¼ tần số oscillator) đưa qua chia tần số prescaler bit (với tỉ số chia tần số 1:1, 1:4 1:16 điềukhiển bit T2CKPS1:T2CKPS0 (T2CON)) Hình 2.7 Sơ đồ khối Timer2 Timer2 hỗ trợ ghi PR2 Giá trò đếm ghi TMR2 tăng từ 00h đến giá trò chứa ghi PR2, sau reset 00h Kh I reset ghi PR2 nhận giá trò mặc đònh FFh Ngõ Timer2 đưa qua chia tần số postscaler với mức chia từ 1:1 đến 1:16 Postscaler điềukhiển bit T2OUTPS3:T2OUTPS0 Ngõ postscaler đóng vai trò đònh việc điềukhiển cờ ngắt Ngoài ngõ Timer2 kết nối với khối SSP, Timer2 đóng vai trò tạo xung clock đồng cho khối giao tiếp SSP Các ghi liên quan đến Timer2 bao gồm: INTCON (đòa 0Bh, 8Bh, 10Bh, 18Bh): cho phép toàn ngắt (GIE PEIE) PIR1 (đòa 0Ch): chứa cờ ngắt Timer2 (TMR2IF) PIE1 (đòa chò 8Ch): chứa bit điềukhiển Timer2 (TMR2IE) TMR2 (đòa 11h): chứa giá trò đếm Timer2 T2CON (đòa 12h): xác lập thông số cho Timer2 PR2 (đòa 92h): ghi hỗ trợ cho Timer2 Chi tiết ghi trình bày cụ thể phụ lục Ta có vài nhận xét Timer0, Timer1 Timer2 sau: Timer0 Timer2 đếm bit (giá trò đếm tối đa FFh), Timer1 đếm 16 bit (giá trò đếm tối đa FFFFh) Timer0, Timer1 Timer2 có hai chế độ hoạt động timer counter Xung clock có tần số ¼ tần số oscillator Xung tác động lên Timer0 hỗ trợ prescaler thiết lập nhiều chế độ khác (tần số tác động, cạnh tác động) thông số xung tác động lên Timer1 cố đònh Timer2 hỗ trợ hai chia tần số prescaler postcaler độc lập, nhiên cạnh tác động cố đònh cạnh lên Timer1 có quan hệ với khối CCP, Timer2 kết nối với khối SSP Một vài so sánh giúp ta dễ dàng lựa chọn Timer thích hợp cho ứng dụng 2.9 ADC ADC (Analog to Digital Converter) chuyển đổi tín hiệu hai dạng tương tự số PIC16F877A có ngõ vào analog (RA4:RA0 RE2:RE0) Hiệu điện chuẩn VREF lựa chọn VDD, VSS hay hiệu điện thể chuẩn xác lập hai chân RA2 RA3 Kết chuyển đổi từ tín tiệu tương tự sang tín hiệu số 10 bit số tương ứng lưu hai ghi ADRESH:ADRESL Khi không sử dụng chuyển đổi ADC, ghi sử dụng ghi thông thường khác Khi trình chuyển đổi hoàn tất, kết lưu vào hai ghi ADRESH:ADRESL, bit (ADCON0) xóa cờ ngắt ADIF set Qui trình chuyển đổi từ tương tự sang số bao gồm bước sau: Thiết lập thông số cho chuyển đổi ADC: Chọn ngõ vào analog, chọn điện áp mẫu (dựa thông số ghi ADCON1) Chọnh kênh chuyển đổi AD (thanh ghi ADCON0) Chọnh xung clock cho kênh chuyển đổi AD (thanh ghi ADCON0) Cho phép chuyển đổi AD hoạt động (thanh ghi ADCON0) Thiết lập cờ ngắt cho AD Clear bit ADIF Set bit ADIE Set bit PEIE Set bit GIE 3 Đợi trình lấy mẫu hoàn tất ) Bắt đầu trình chuyển đổi (set bit Đợi trình chuyển đổi hoàn tất cách: Kiểm tra bit Nếu =0, trình chuyển đổi hoàn tất Kiểm tra cờ ngắt Đọc kết chuyển đổi xóa cờ ngắt, set bit (nếu cần tiếp tục chuyển đổi) Tiếp tục thực bước cho trình chuyển đổi Hình 2.8 Sơ đồ khối chuyển đổi ADC Cần ý có hai cách lưu kết chuyển đổi AD, việc lựa chọn cách lưu điềukhiển bit ADFM minh họa cụ thể hình sau: Hình 2.9 Các cách lưu kết chuyển đổi AD Các ghi liên quan đến chuyển đổi ADC bao gồm: INTCON (đòa 0Bh, 8Bh, 10Bh, 18Bh): cho phép ngắt (các bit GIE, PEIE) PIR1 (đòa 0Ch): chứa cờ ngắt AD (bit ADIF) PIE1 (đòa 8Ch): chứa bit điềukhiển AD (ADIE) ADRESH (đòa 1Eh) ADRESL (đòa 9Eh): ghi chứa kết chuyển đổi AD ADCON0 (đòa 1Fh) ADCON1 (đòa 9Fh): xác lập thông số cho chuyển đổi AD PORTA (đòa 05h) TRISA (đòa 85h): liên quan đến ngõ vào analog PORTA PORTE (đòa 09h) TRISE (đòa 89h): liên quan đến ngõ vào analog PORTE Chi tiết ghi trình bày cụ thể phụ lục 2.10 COMPARATOR Bộ so sánh bao gồm hai so so sánh tín hiệu analog đặt PORTA Ngõ vào so sánh chân RA3:RA0, ngõ hai chân RA4 RA5 Thanh ghi điềukhiển so sánh CMCON Các bit CM2:CM0 ghi CMCON đóng vai trò chọn lựa chế độ hoạt động cho Comparator (hình 2.10) Cơ chế hoạt động Comparator sau: Tín hiệu analog chân VIN + só sánh với điện áp chuẩn chân VIN- tín hiệu ngõ so sánh thay đổi tương ứng hình vẽ Khi điện áp chân VIN+ lớn điện áp chân VIN+ ngõ mức ngược lại Dựa vào hình vẽ ta thấy đáp ứng ngõ tức thời so với thay đổi ngõ vào mà cần có khoảng thời gian đònh để ngõ thay đổi trạng thái (tối đa 10 us) Cần ý đến khoảng thời gian đáp ứng sử dụng so sánh Cực tính so sánh thay đổi dựa vào giá trò đặt vào bit C2INV C1INV (CMCON) Hình 2.10 Nguyên lí hoạt động so sánh đơn giản Hình 2.11 Các chế độ hoạt động comparator Các bit C2OUT C1OUT (CMCON) đóng vai trò ghi nhận thay đổi tín hiệu analog so với điện áp đặt trước Các bit cần xử lí thích hợp chương trình để ghi nhận thay đổi tín hiệu ngõ vào Cờ ngắt so sánh bit CMIF (thanh ghi PIR1) Cờ ngắt phải reset Bit điềukhiển so sánh bit CMIE (Tranh ghi PIE) ... cho Comparator (hình 2.10) Cơ chế hoạt động Comparator sau: Tín hiệu analog chân VIN + só sánh với điện áp chuẩn chân VIN- tín hiệu ngõ so sánh thay đổi tương ứng hình vẽ Khi điện áp chân VIN+... khiển bit T2OUTPS3:T2OUTPS0 Ngõ postscaler đóng vai trò đònh vi c điều khiển cờ ngắt Ngoài ngõ Timer2 kết nối với khối SSP, Timer2 đóng vai trò tạo xung clock đồng cho khối giao tiếp SSP Các... trình đếm vi điều khiển chế độ sleep ngắt Timer1 tạo bò tràn có khả “đánh thức” vi điều khiển Ở chế độ đếm bất đồng bộ, Timer1 sử dụng để làm nguồn xung clock cho khoái CCP (Capture/Compare/Pulse