1. Trang chủ >
  2. Kỹ thuật >
  3. Cơ khí - Vật liệu >

Dải đếm lập trình được PCA Programmable Counter Array

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (5.44 MB, 80 trang )


GVHD: Cô Võ Thị Thu Hồng
18
SVTH: Lê Trung Hiếu

2.3.2 VI ĐIỀU KHIỂN HỌ 8051


Vi điều khiển họ 8051 đã trở nên khá quen thuộc với các bạn sinh viên. Phần sau đây sẽ không nhắc lại những vấn đề đã được trình bày trong giáo trình “Vi xử lý”
mà sẽ giới thiệu những tính năng mới trong trong một số vi điều khiển họ 8051 mở rộng. Vi điều khiển P89V51RD2xx của Philips sẽ được lấy làm minh họa.

2.3.2.1 Dải đếm lập trình được PCA Programmable Counter Array


PCA là một cải tiến đáng kể đối với những vi điều khiển họ 8051. Dải đếm này bao gồm một timer 16-bit và 5 module hỗ trợ. Các ngõ ra của module được ký hiệu lần
lượt là CEX0 đến CEX4 tương ứng với các chân P1.3 đến P1.7. Các module này có thể được lập trình để hoạt động ở 1 trong 4 chức năng: Capture 16-bit, Timer 16-bit,
High-speed output 16-bit, PWM 8-bit. Riêng module 4 có thêm chức năng Watchdog timer.
Hình 2.15: PCA Modules Để hỗ trợ PCA, các vi điều khiển họ 8051 được bổ sung thêm một số thanh ghi
sau: 
Thanh ghi CH và CL địa chỉ lần lượt là F9H và E9H: hai thanh ghi chứa byte cao, byte thấp của timer 16-bit PCA tương tự như thanh ghi TH0,
TL0 của timer 0 và TH1, TL1 của timer 1.

Thanh ghi CCAPnH n=0..4 địa chỉ từ FAH đến FEH và CCAPnL
GVHD: Cô Võ Thị Thu Hồng
19
SVTH: Lê Trung Hiếu
n=0..4 địa chỉ từ EAH và EEH: thanh ghi chứa byte cao, byte thấp của giá trị cần nạp cho mỗi module.

Thanh ghi CMOD: địa chỉ D9H, không định địa chỉ bit, giá trị reset: 00H
Bit 7
6 5
4 3
2 1
Ký hiệu CIDL
WDTE -
- -
CPS1 CPS0
ECF Bảng 2.3 Thanh ghi CMOD
BIT Ký hiệu
Chức năng 7
CIDL Counter Idle Control. CIDL = 1 sẽ cho phép PCA dừng khi
8051 vào chế độ Idle, ngược lại CIDL = 0 buộc PCA vẫn tiếp tục hoạt động.
6 WDTE Watchdog timer enable. Set bit này lên 1 để enable chức năng
Watchdog timer của module 4. Ngược lại sẽ disable. 5 ÷ 3
- Bit dự trữ
2 CPS1
Count Pulse Select 1. Bit cao chọn nguồn xung nhịp cho PCA 1
CPS0 Count Pulse Select 0. Bit thấp chọn nguồn xung nhịp cho PCA
ECF PCA Enable Counter Overflow Interrupt. Nếu set bit này lên 1
Bảng 2.4: Tóm tắt chức năng các bit của thanh ghi CMOD CPS1
CPS0 Nguồn xung cho PCA
1 1
1 1
0, Xung nhịp bên trong, fOSC6 1, Xung nhịp bên trong, fOSC2
2, Tốc độ tràn Timer 0 3, Xung nhịp ngoài được cấp tại chân ECIP1.2 tối đa là fOSC4
Bảng 2.5: Chọn nguồn xung nhịp cho PCA 
Thanh ghi CCON: địa chỉ D8H, có định địa chỉ bit, giá trị reset: 00H
Bit 7
6 5
4 3
2 1
Ký hiệu CF
CR -
CCF4 CCF3
CCF2 CCF1
CCF0 Bảng 2.6 Thanh ghi CCON
GVHD: Cô Võ Thị Thu Hồng
20
SVTH: Lê Trung Hiếu
BIT Ký hiệu
Chức năng 7
6 5
4 3
2 1
CF
CR -
CCF4 CCF3
CCF2 CCF1
CCF0 PCA counter overflow flag. Khi bộ đếm bị tràn, CF tự động
được set lên 1. Nếu bit ECF của thanh ghi CMOD đã được set trước đó, CF =1 sẽ tạo ra ngắt.
PCA counter run control. Bật tắt PCA counter. Bit dự trữ
Cờ ngắt module 4. Cờ ngắt module 3.
Cờ ngắt module 2. Cờ ngắt module 1.
Cờ ngắt module 0.
Bảng 2.7: Tóm tắt chức năng các bit của thanh ghi CCON Lưu ý: các cờ ngắt trong thanh ghi CCON cần phải được xóa bằng phần mềm.

Thanh ghi CCAPMn n=0..4: địa chỉ lần lượt từ DAH đến DEH, không định
địa chỉ bit, giá trị reset: 00H Bit
7 6
5 4
3 2
1 Ký hiệu
- ECOMn CAPPn CAPNn MATn TOGn PWMn ECCFn
Bảng 2.8 Thanh ghi CCAPM Đây là thanh ghi điều khiển hoạt động của các module. Chế độ hoạt động của mỗi
module sẽ được xác định bằng cách tác động vào các bit thuộc các thanh ghi này. Chức năng của các bit thuộc thanh ghi CCAPMn được mô tả trong bảng sau:
BIT Ký hiệu
Mô tả 7
6 -
ECOMn Bit dự trữ
Enable Comparator. ECOMn = 1 sẽ kích hoạt chức năng so sánh
5 CAPPn
Capture Positive. CAPPn = 1 sẽ cho phép capture khi có cạnh lên tại chân CEXn.
4 CAPNn
Capture Negative. CAPNn = 1 sẽ cho phép capture khi có cạnh xuống tại chân CEXn.
GVHD: Cô Võ Thị Thu Hồng
21
SVTH: Lê Trung Hiếu
3 MATn
Match. Nếu MATn = 1, khi giá trị bộ đếm PCA CH,CL bằng giá trị nạp trong thanh ghi CCAPnH,CCAPnL sẽ làm cho bit CCFn
trong thanh ghi CCON lên 1, nhờ đó tạo ra ngắt.
2 TOGn
Toggle. Nếu TOGn = 1, khi giá trị bộ đếm PCA CH,CL bằng giá trị nạp trong thanh ghi CCAPnH,CCAPnL sẽ làm cho ngõ ra của
module CEXn đổi trạng thái.
1 PWMn
Pulse Width Modulation. PWMn = 1 sẽ làm cho CEXn là một ngõ ra điều xung.
ECCFn Enable CCFn Interrupt. ECCFn = 1, mỗi khi CCFn trong thanh ghi
CCON =1 sẽ tạo ra ngắt.
Bảng 2.9: Tóm tắt chức năng các bit của thanh ghi CCAPMn
Sử dụng các ngắt PCA
Các bit cờ ngắt PCA tập trung hoàn toàn trong thanh ghi CCON. Bit CF = 1 khi bộ đếm tràn, CCFn = 1 khi có capturematch tại CEXn. Muốn sử dụng được ngắt cần
phải set bit cho phép ngắt toàn bộ IE.7, ký hiệu EA, cho phép ngắt PCA IE.6, kí hiệu EC và set các bit cho phép từng module tạo ngắt ECF, ECCFn.
Hình 2.16: Các bit cờ ngắt của PCA
GVHD: Cơ Võ Thị Thu Hồng
22
SVTH: Lê Trung Hiếu
Các chế độ hoạt động của module PCA PCA 16-bit Capture
Để có thể sử dụng chức năng Capture, một trong hai bit hoặc cả hai bit CAPPn và CAPNn trong thanh ghi CCAPMn phải được set lên 1. Các chân CEXn, được lấy mẫu và
khi có cạnh lên cạnh xuống tại chân CEXn, 8051 sẽ nạp giá trị CH,CL vào cặp thanh ghi CCAPnH,CCAPnL, đồng thời nó cũng làm cho bit CCFn lên 1.
Hình 2.17: PCA hoạt động ở chế độ 16-bit Capture Trong trường hợp bit cho phép ngắt ECCFn trong thanh ghi CCAPMn được set
lên 1, mỗi lần capture sẽ tạo ra ngắt.
PCA 16-bit timer
Các module PCA cũng có thể được sử dụng như những timer bằng cách set hai bit ECOMn và MATn thuộc thanh ghi CCAPMn lên 1. Giá trị của timer PCA CH,CL
được so sánh với giá trị cặp thanh ghi của module CCAPnH,CCAPnL. Khi
2 giá trị này bằng nhau sẽ làm cho các bit CCFn lên 1. Nếu bit ECCFn = 1 sẽ tạo ra ngắt ở module tương ứng.
GVHD: Cơ Võ Thị Thu Hồng
23
SVTH: Lê Trung Hiếu
Hình 2.18: PCA hoạt động ở chế độ 16-bit timer
High-speed output
Ở chế độ này, ngõ ra CEXn được điều khiển bởi PCA. Khi giá trị CH,CL bằng giá trị CCAPnH,CCAPnL sẽ làm cho chân CEXn đổi trạng thái. Chế độ này được
kích hoạt bằng cách set các bit ECOMn, MATn, TOGn lên 1. Cách tạo ngắt tương tự chế độ PCA 16-bit timer.
Hình 2.19: PCA hoạt động ở chế độ High-Speed Output
GVHD: Cô Võ Thị Thu Hồng
24
SVTH: Lê Trung Hiếu
Pulse Width Modulator
Tất cả các module đều có tần số ra như nhau do chỉ có một timer PCA. Duty cycle của chuỗi xung ra phụ thuộc giá trị nạp cho thanh ghi CCAPnL. Khi giá trị của
thanh ghi CL nhỏ hơn giá trị lưu trong CCAPnL, ngõ ra CEXn sẽ ở mức thấp. Ngược lại, nếu lớn hơn hay bằng, ngõ ra CEXn sẽ ở mức cao. Khi CL bị tràn từ FF sang 00,
CCAPnL được nạp lại giá trị từ CCAPnH. Để dùng được chức năng PWM, bit ECOM và bit PWM của thanh ghi CCAPMn phải được set lên 1.
Hình 2.20: PCA hoạt động ở chế độ Pulse Width Modulator
Ví dụ: Điều khiển động cơ chạy trong 10s, có điều xung với duty cycle là 50
-------------------------------------------------------------------- This
program is to creat a modulated pulse with duty cycle 50. The modulated pusle is used to control a motor in 10 seconds, then
stop the motor. Use module 1 from the PCA. --------------------------------------------------------------------
include reg51f.h Define new registers for P89V51RD2 microcontroller
void PCA_Init; void Delayunsigned char;
sfr Motor = 0xFB; Name the CCAP1H register as Motor
CCAP1H has the address 0xFB void mainvoid
{ PCA_Init;
Motor = 128; Duty cycle = 128256 = 50
GVHD: Cô Võ Thị Thu Hồng
25
SVTH: Lê Trung Hiếu
Delay10; Motor = 0; }
----------------------------------------------------- void PCA_Initvoid
{ CMOD = 0;
CCON = 0x40; CCAPM1 = 0x42; CR = 1; }
void Delayunsigned char sec {
unsigned char x; unsigned int y; forx=0;x=sec;x++ {
fory=0;y=18000;y++; This loop remains appr 1s
} }
Watchdog timer chỉ có ở module 4:
Bộ định thời watchdog trên chip có sẵn trong PCA giúp cải thiện độ tin cậy của hệ thống mà không cần thêm chip đếm. Các bộ định thời watchdog trở nên hữu ích đối
với các hệ thống dễ bị ảnh hưởng bởi nhiễu, các gai xung khi cấp điện hoặc do sự phóng tĩnh điện. Module 4 của PCA là module duy nhất có thể được lập trình thành một
watchdog. Tuy nhiên module này cũng có thể được sử dụng cho các chế độ khác nếu ta không cần đến watchdog.
Hình sau đây trình bày cách thức hoạt động của watchdog. Người sử dụng nạp trước một giá trị 16-bit vào các thanh ghi so sánh CCAPnH,CCAPnL. Giống như các
chế độ so sánh khác, giá trị 16-bit này được so sánh với giá trị bộ định thời PCA CH,CL. Khi hai giá trị này bằng nhau, reset bên trong sẽ được tạo ra. Điều này
không làm chân RST nhảy lên mức cao.
GVHD: Cô Võ Thị Thu Hồng
26
SVTH: Lê Trung Hiếu
Hình 2.21: PCA Watchdog Timer Để khơng tiến đến trạng thái RESET, người sử dụng có 3 tùy chọn:
1. Thay đổi có định kỳ giá trị so sánh để sẽ không bao giờ trùng với giá trị bộ định thời PCA.
2. Thay đổi có định kỳ giá trị bộ định thời PCA để không bao giờ trùng với giá trị so sánh.
3. Không cho phép watchdog bằng cách xóa bit WDTE trước khi hai giá trị trùng nhau một lần nữa và sau đó sẽ được kích hoạt lại.
Hai tùy chọn đầu tiên đáng tin cậy hơn do bộ định thời watchdog khơng bao giờ bị disable hồn tồn trong lựa chọn 3. Khi đó, nếu bộ đếm chương trình bị lỗi, sau
cùng, một tương thich sẽ xảy ra và gây reset bên trong.
Lựa chọn thứ hai cũng khơng được khuyến khích nếu các module PCA khác đang được sử dụng. Do bộ định thời PCA được dùng chung cho các module, việc thay đổi giá
trị bộ định thời sẽ làm ảnh hưởng đến hoạt động của các module khác. Như vậy, lựa chọn đầu tiên là lựa chọn tốt nhất.
GVHD: Cô Võ Thị Thu Hồng
27
SVTH: Lê Trung Hiếu

2.3.2.2 Timer 2


Xem Thêm
Tải bản đầy đủ (.pdf) (80 trang)

×