Đang tải...

Cơ bản Tìm hiểu vi điều khiển AT89LP216

Thảo luận trong 'Điện - Điện tử' bắt đầu bởi khoadongluc, 10/9/09.

Thành viên đang xem bài viết (Users: 0, Guests: 0)

  1. khoadongluc
    Offline

    Nothing Is Impossible
    Thành viên BQT
    Expand Collapse

    Tham gia ngày:
    17/3/09
    Số km:
    22,748
    Được đổ xăng:
    7,019
    Mã lực:
    2,289
    Giới tính:
    Nam
    Xăng dự trữ:
    30,684 lít xăng
    #1 khoadongluc, 10/9/09
    Chỉnh sửa cuối: 25/6/14
    1. Đặc điểm:
    - Vi điều khiển 8 bit tương thích với MCS-51
    - Cấu trúc 8051 nâng cao:
    + Chu kỳ xung clock đơn cho mỗi byte nạp vào
    + Lưu lượng thông tin 20 triệu lệnh mỗi giây ở tần số xung clock 20MHz
    + Tần số hoạt động: 0-20MHz
    + Bộ nhân 2 chu kỳ on-chip
    + RAM nội 128 x 8
    + Ngắt ưu tiên 4 cấp độ
    - Bộ nhớ chương trình cố định:
    +Bộ nhớ Flash 2KB có thể lập trình
    + Độ bền: ít nhất 10000 lần ghi/xóa
    + Tải chương trình qua giao diện nối tiếp
    - Đặc điểm thiết bị ngoại vi:
    + 2 bộ định thời 16 bit cải tiến
    + 2 ngõ ra điều biến độ rộng xung 8 bit
    + UART cải tiến với chức năng tự động nhận dạng địa chỉ và phát hiện lỗi
    + Bộ định thời giám sát có thể lập trình với phần mềm reset
    + Bộ so sánh tương tự có thể ngắt và hãm có chọn lọc
    + 8 chân ngắt mục đích tổng quát
    - Những đặc điểm đặc biệt của vi điều khiển:
    + 2 giao diện sửa lỗi on-chip
    + Phát hiện nguồn yếu
    + Mạch dao động RC 8MHz
    + Chế độ nghỉ ít tiêu tốn năng lượng và chế độ nguồn giảm
    + Khôi phục ngắt từ chế độ nguồn giảm
    - Điều kiện hoạt động:
    + Điện áp 2,4 đến 5,5V
    + Nhiệt độ -40 đến 85oC
    2. Mô tả:
    AT89LP216 là vi điều khiển 8 CMOS bit, ít tiêu hao năng lượng, hiệu suất cao có bộ nhớ flash 2KB có thể lập trình. AT89LP216 được chế tạo trên công nghệ bộ nhớ cố định mật độ cao phù hợp với tiêu chuẩn công nghệ MSC-51. AT89LP216 có nhân CPU cải tiến có thể nạp từng byte từ bộ nhớ trong mỗi chu kỳ. Trong kiến trúc cổ điển của 8051, mỗi lần nạp tốn 6 chu kỳ xung clock, nên chương trình thực thi trong 12, 24 hay 48 chu kỳ xung clock. Trong AT89LP216 CPU, chương trình chỉ cần từ 1 đến 4 chu kỳ xung clock để cung cấp năng suất truyền cao gấp 6 đến 12 lần so với vi điều khiển 8051 chuẩn.
    Để thực hiện 70% chương trình chỉ cần số chu kỳ xung clock bằng với số byte của nó, phần chương trình còn lại chỉ cần thêm 1 xung clock. Nhân CPU cải tiến có lưu lượng thông tin 20 triệu lệnh mỗi giây trong khi CPU 8051 cổ điển chỉ có thể truyền 4 triệu lệnh mỗi giây với cùng dòng tiêu thụ. Ngược lại, với cùng lưu lượng thông tin như vi điều khiển 8051 cổ điển, nhân CPU mới chạy với tốc độ thấp hơn nhiều, do đó giảm đáng kể năng lượng tiêu tốn.
    Hai bộ định thời trong AT89LP216 được tăng cường 2 mode mới: mode 0 có thể được thiết lập như 1 bộ định thời thay đổi từ 9 đến 16 bit; mode 1 được thiết lập như 1 bộ định thời 16 bit tự động nạp lại. Hơn nữa, các bộ định thời có thể điều chế độ rộng xung ngõ ra một cách độc lập.
    Các port xuất/nhập của AT89LP216 có thể được thiết lập ở 1 trong 4 chế độ hoạt động. Ở chế độ 2 chiều, các cổng hoạt động như ở vi điều khiển 8051 cổ điển. Ở chế độ ngõ vào, các port có 3 trạng thái. Cả 8 chân của port 1 có thể được thiết lập ngắt bằng cách sử dụng giao diện ngắt mục đích tổng quát. Các chân xuấy nhập của AT89LP216 chịu đựng được điện áp cao hơn nguồn điện cung cấp cho thiết bị, lên đến 5.5V. Khi cung cấp nguồn 2.4V cho thiết bị và điện áp 5.5V cho tất cả các port xuất nhập, dòng qua các port xuất nhập thấp hơn 100uA.
    3. Sơ đồ chân:



    4. Chức năng các chân:
    - Chân 1: (KH: P1.5)
    + P1.5: bit 5 port 1(xuất / nhập)
    + MOSI: SPI master – out / slave – in. Khi vi điều khiển được thiết lập làm phần chính, chân này là ngõ ra; khi vi điều khiển được thiết lập làm phần phụ, chân này là ngõ vào
    + GPI5: ngõ vào 5 của bộ ngắt
    - Chân 2: (KH: P1.7)
    + P1.7: bit 7 port 1(xuất / nhập)
    + SCK: SPI clock. Khi vi điều khiển được thiết lập làm phần chính, chân này là ngõ ra; khi vi điều khiển được thiết lập làm phần phụ, chân này là ngõ vào
    + GPI7: ngõ vào 7 của bộ ngắt
    - Chân 3: (KH: P1.3)
    + P1.3: bit 3 port 1(xuất / nhập) (nếu reset fuse bị ngắt)
    + /RST: ngõ vào reset bên ngoài, tích cực mức thấp (nếu reset fuse dược kích hoạt)
    + GPI3: ngõ vào 3 của bộ ngắt
    + DCL: ngõ vào xung clock nối tiếp của giao diện sửa lỗi nếu OCD được kích hoạt
    - Chân 4: (KH: GND) Đất
    - Chân 5: (KH: P1.2)
    + P1.2: bit 2 port 1(xuất / nhập)
    + GPI2: ngõ vào 2 của bộ ngắt
    - Chân 6: (KH: P3.0)
    + P3.0: bit 0 port 3(xuất / nhập)
    + RXD: ngõ vào của bộ thu port nối tiếp
    - Chân 7: (KH: P3.4)
    + P3.4: bit 4 port 3(xuất / nhập)
    + T0: ngõ ra bộ điều chế độ rộng xung hoặc ngõ vào bộ định thời 0
    - Chân 8: (KH: P3.2)
    + P3.2: bit 2 port 3(xuất / nhập)
    + XTAL1: ngõ vào bộ khuếch đại vi sai của mạch dao động và mạch phát xung clock; có thể được sử dụng như một chân port nếu mạch dao động RC được chọn làm nguồn xung clock
    + DDA: ngõ xuất / nhập dữ liệu nối tiếp của giao diện sửa lỗi nếu OCD được kích hoạt và mạch dao động RC được chọn làm nguồn xung clock
    - Chân 9: (KH: P3.3)
    + P3.3: bit 3 port 3(xuất / nhập)
    + XTAL2: ngõ ra bộ khuếch đại vi sai của mạch dao động; có thể được sử dụng như một chân port nếu mạch dao động RC được chọn làm nguồn xung clock
    + CLKOUT: Khi mạch dao động RC được chọn làm nguồn xung clock, có thể dùng để xuất ra xung có chu kỳ bằng ½ xung clock
    + DDA: ngõ xuất / nhập dữ liệu nối tiếp của giao diện sửa lỗi nếu OCD được kích hoạt và nguồn xung clock bên ngoài được chọn làm nguồn xung clock
    - Chân 10: (KH: P3.5)
    + P3.5: bit 5 port 3(xuất / nhập)
    + T1: ngõ ra bộ điều chế độ rộng xung hoặc ngõ vào bộ định thời 1
    - Chân 11: ( KH: P3.1)
    + P3.1: bit 1 port 3(xuất / nhập)
    + TXD: ngõ ra bộ phát port nối tiếp
    - Chân 12: ( KH: VDD) nguồn áp
    - Chân 13: ( KH: P1.0)
    + P1.0: bit 0 port 1(xuất / nhập)
    + AIN0: ngõ vào dương bộ so sánh tương tự
    + GPI0: ngõ vào 0 của bộ ngắt
    - Chân 14: (KH: P1.1)
    + P1.1: bit 1 port 1(xuất / nhập)
    + AIN0: ngõ vào âm bộ so sánh tương tự
    + GPI0: ngõ vào 1 của bộ ngắt
    - Chân 15: (KH: P1.4)
    + P1.4: bit 4 port 1(xuất / nhập)
    + /SS: ngõ vào chọn lựa SPI phụ
    + GPI4: ngõ vào 4 của bộ ngắt
    - Chân 16: (KH: P1.6)
    + P1.6: bit 6 port 1(xuất / nhập)
    + MISO: SPI master – out / slave – in. Khi vi điều khiển được thiết lập làm phần chính, chân này là ngõ vào; khi vi điều khiển được thiết lập làm phần phụ, chân này là ngõ ra
    + GPI6: ngõ vào 6 của bộ ngắt
    5. Sơ đồ khối:
    [​IMG]
    6. So sánh với 8051 chuẩn:
    AT89LP216 thuộc họ thiết bị với những đặc điểm cải tiến hoàn toàn tương thích với tập lệnh cua MSC-51. Hơn nữa, phần lớn địa chỉ thanh ghi đặc biệt, lệnh gán bit, chức năng chân đều đồng nhất với các sản phẩm 8051 tiêu chuấn hiện hành của Atmel. Tuy nhiên, để thiết bị đạt hiệu suất cao, một vài trạng thái hệ thống có sự khác biệt so với những sản phẩm 8051 khác của Atmel như AT89S52 hay AT89S2051.
    6.1. Đồng hồ CPU:
    Tần số xung clock CPU bằng tần số bên ngoài đưa vào chân XTAL1. Mạch dao động không chia đôi tần số để tạo ra xung clock bên trong và không hỗ trợ chế độ x2
    6.2. Thi hành lệnh với vòng nạp đơn:
    CPU nạp một byte từ bộ nhớ mỗi chu kỳ xung clock thay vì mỗi 6 chu kỳ. Điều này khiến công suất của CPU tăng lên đáng kể. Hệ quả là CPU không còn thực hiện lệnh trong khoảng 12 đến 48 chu kỳ xung clock. Mỗi lệnh chỉ thực hiện trong từ 1 đến 4 xung.
    6.3. Điều khiển ngắt:
    Bộ điều khiển ngắt kiểm tra cờ ngắt ở chu kỳ xung clock cuối của mỗi lệnh. Để tạo ra tín hiệu ngắt ở cuối mỗi lệnh, cờ ngắt cần phải được chốt ở mức cao trong suốt chu kỳ xung clock kề chót của lệnh, hoặc là trong chu kỳ xung clock cuối cùng của lệnh trước đó nếu như lệnh hiện tại thực thi trong một chu kỳ.
    Chân ngắt bên ngoài, /INT0 và /INT1, được lấy mẫu mỗi chu kỳ xung clock thay vì 12 xung clock 1 lần. Đi đôi với thời gian thực hiện lệnh ngắn hơn và đáp ứng ngắt nhanh hơn, điều này tạo thành mức sự cố tối đa cao hơn cho việc ngắt bên ngoài.
    6.4. Bộ định thời:
    Bộ định thời được mặc định tăng lên 1 mức mỗi chu kỳ xung clock thay vì 12 chu kỳ như trong 8051. Một bộ đếm gộp trước phân chia gốc thời gian cho tất cả các bộ định thời và giảm sự tăng định mức. Bit TPS trên thanh ghi CLKREG điều khiển bộ đếm gộp trước. Đặt TPS = 1011B sẽ khiến cho bộ định thời tăng lên mỗi 12 chu kỳ xung.
    Chân phía ngoài bộ định thời, T0 và T1, được lấy mẫu mỗi chu kỳ xung clock thay vì mỗi 12 chu kỳ.
    6.5. Port nối tiếp:
    Tốc độ truyền của UART ở mode 0 là ½ tần số xung so với 1/12 tần số xung ở 8051 chuẩn. Ngõ ra dữ liệu ổn định quanh biên của xung clock nối tiếp. Cần phải chú ý là khi dùng bộ định thời 1 để tạo ra tốc độ truyền ở trong mode 1 hay mode 3, bộ định thời sẽ đếm ở tần số xung chứ không phải ở 1/12 tần số xung. Để duy trì tốc độ truyền tương tự như AT89LP216 khi chạy ở cùng tần số với 8051, khoảng thời gian chờ phải dài hơn 12 lần. Mode 1 của bộ định thời 1 hỗ trợ chế độ 16 bit tự động nạp lại tạo điều kiện cho khoảng thời gian nghỉ dài hơn nhằm mục đích tạo ra tốc độ truyền chậm.
    6.6. Bộ định thời giám sát:
    Bộ định thời giám sát của AT89LP216 đếm 1 mức ở mỗi chu kỳ xung clock thay vì mỗi 12 chu kỳ xung clock như ở 8051. Một bộ đếm gộp trước phân chia gốc thời gian cho tất cả các bộ định thời và giảm mức đếm
    6.7. Port xuất nhập:
    Các port của AT89LP216 có thể được thiết lập ở 4 mode.Ở chế độ mặc định khi cấp nguồn hoặc reset, các port xuất nhập phục hồi chế độ chỉ cho phép nhập liệu (3 trạng thái). Ở 8051, tất cả port được kéo lên mức cao trong thời gian cấp nguồn hoặc reset. Để kích hoạt các port như 8051, các port phải được đặt chế độ 2 chiều bằng cách xóa P1M0 và P3M0 trên thanh ghi chức năng đặc biệt. Người dung cũng có thể thiết lập các port khởi động ở chế độ 2 chiều bằng cách ngắt cổng fuse 3 trạng thái. Khi fuse bị ngắt, P1M0 và P3M0 sẽ reset về 00H thay vì FFH và các port sẽ được kéo lên mức cao.
    6.8. Reset:
    Chân reset của AT89LP216 tích cực mức thấp thay vì mức cao như ở 8051. Hơn nữa, chân reset được lấy mẫu mỗi chu kỳ xung clock và phải được giừ ở mức thấp tôi thiểu là 2 chu kỳ xung clock, thay vì 24 chu kỳ xung clock, để được nhận ra là tín hiệu reset hợp lệ.
    7. Tố chức bộ nhớ:
    AT89LP216 sử dụng cấu trúc Harvard, với những vùng địa chỉ riêng biệt cho bộ nhớ chương trình và bộ nhớ dữ liệu. Bộ nhớ chương có một vùng địa chỉ tuyến tính hỗ trợ lên đến 64 KB mã ứng dụng định địa chỉ trực tiếp. Bộ nhớ dữ liệu có 128 byte RAM nội và 128 byte của vùng xuất nhập thanh ghi chức năng đặc biệt. AT89LP216 không hỗ trợ bộ nhớ chương trình ngoài hay bộ nhớ dữ liệu ngoài.
    7.1. Bộ nhớ chương trình:
    AT89LP216 chứa 2KB bộ nhớ flash on-chip có thể lập trình được dành cho lưu trữ chương trình. Bộ nhớ flash có độ bền tối thiểu 10000 lần ghi/xóa và thời gian duy trì dữ liệu ít nhất 10 năm. Các vector reset và ngắt nằm trong 59 byte đầu tiên của bộ nhớ chương trình. Bảng hằng số có thể được phân bố trong toàn bộ không gian 2 KB của bộ nhớ chương trình dành cho việc truy nhập bởi lệnh MOVC. AT89LP216 không hỗ trợ bộ nhớ chương trình bên ngoài.
    Sơ đồ bộ nhớ chương trình:
    [​IMG]
    Ngoài vùng mã 2 KB từ 0000H đến 07FFH, AT89LP216 còn hỗ trợ 64 byte mảng ký hiệu người sử dụng và 32 byte mảng ký hiệu Atmel chỉ có thể truy cập bởi CPU theo chế độ chỉ cho phép đọc. Để đọc được mảng ký hiệu,ta phải set bit SIGEN của thanh ghi AUXR1. Khi SIGEN = 1, lệnh MOVC A,@A+DPTR sẽ truy nhập mảng ký hiệu. Mảng ký hiệu người dùng được định địa chỉ từ 0040H đến 007FH và mảng ký hiệu Atmel được định địa chỉ từ 0000H đến 001FH. Bit SIGEN phải được xóa trước khi sừ dụng lệnh MOVC để truy cập bộ nhớ mã.
    Mảng ký hiệu Atmel được khởi tạo bằng thiết bị nhận dạng ở hãng sản xuất. Mảng ký hiệu người sử dụng có sẵn cho người sử dụng xác định mã số hoặc cố định tham số dữ liệu. Dữ liệu lưu trữ trong mảng ký hiệu này không an toàn. Bit an ninh sẽ không cho phép ghi vào mảng. Tuy nhiên, ta có thể đọc được chúng.
    AUXR1 – thanh ghi phụ 1 :
    [​IMG]
    7.2. Bộ nhớ dữ liệu:
    AT89LP216 chứa 128 byte SRAM bộ nhớ dữ liệu chung và 128 byte bộ nhớ xuất nhập được gán vào vùng địa chỉ 8 bit đơn. 128 byte của bộ nhớ dữ liệu có thể được truy cập thông qua cả hai địa chỉ trực tiếp và gián tiếp qua phần thấp của 128 địa chỉ byte. 128 byte bộ nhớ xuất nhập [​IMG]lưu trú ở phần cao của 128 địa chỉ byte (xem sơ đồ). Bộ nhớ xuất nhập chỉ có thể được truy cập thông qua địa chỉ trực tiếp và chứa thanh ghi chức năng đặc biệt (SFRs). Những sự truy cập gián tiếp đến phần cao của 128 địa chỉ byte sẽ trả lại giá trị sai. 32 byte thấp nhất của bộ nhớ dữ liệu sẽ được nhóm vào 4 dãy, mỗi dãy 8 thanh ghi. Bit RS0 và RS1 (PSW.3 và PSW.4) lựa chọn dãy thanh ghi được sử dụng. Các lệnh sử dụng địa chỉ thanh ghi sẽ chỉ truy cập vào dãy thanh ghi đang được chọn. AT89LP216 không hỗ trợ bộ nhớ dữ liệu bên ngoài.
    [​IMG]
    8. Thanh ghi chức năng đặc biệt:
    Sơ đồ của một vùng bộ nhờ trên chip gọi là thanh ghi chức năng đặc biệt được cho ở bảng dưới
    Chú ý là không phải tất cả các địa chỉ đều được sử dụng, và những địa chỉ không được sử dụng có thể không được thực thi trên chip. Nói chung, những truy nhập đọc tới các địa chỉ này sẽ trả lại dữ liệu ngẫu nhiên, và những truy nhập ghi sẽ gây ra những kết quả không xác định được. Phần mềm sử dụng không nên ghi vào những địa chỉ không có trong danh sách, vì chúng có thể được sử dụng trong các sản phẩm tương lai để phát triển các tính năng mới.
    [​IMG]
    9. CPU cải tiến:
    AT89LP216 dùng một CPU 8051 cải tiến chạy với tốc độ gấp 6 đến 12 lần so với thiết bị 8051 chuẩn. Sự tăng hiệu suất là do 2 yếu tố. Thứ nhất, CPU nạp 1 byte lệnh từ bộ nhớ mỗi chu kỳ xung clock. Thứ hai, CPU sử dụng một đường liên kết 2 bậc đơn giản để nạp và thực thi lệnh cùng lúc. Khái niệm đường lien kết cơ bản này cho phép CPU đạt được 1 triệu lệnh mỗi giây trên một MHz. Một ví dụ đơn giản được cho ở hình bên dưới
    Tập lệnh của MSC-8051 cho phép chiều dài lệnh thay đổi từ 1 đến 3 byte. Trong hệ thống 1 chu kỳ xung clock / 1 byte thì điều này dẫn đến việc để thực thi mỗi lệnh cần tốn số chu kỳ ít nhất bằng số byte của lệnh đó. Phàn lớn các lệnh của AT89LP216 tuân theo quy luật: thời gian thực thi lệnh tính theo chu kỳ xung clock bằng với số byte trên một lệnh. Các lệnh rẽ nhánh và các lệnh gọi yêu cầu them một chu kỳ bổ xung để tính toán địa chỉ đến và một vài lệnh phức tạp khác yêu cầu nhiều chu kỳ
    Nạp và thực thi lệnh cùng lúc:


    [​IMG]

    Hoạt động của ALU đối với lệnh 1 chu kỳ (ví dụ: INC R0):

    [​IMG]

    Hoạt động của ALU đối với lệnh 2 chu kỳ (ví dụ: ADD A,#data):

    [​IMG]
    10. Xung clock hệ thống:
    Xung clock được tạo ra trực tiếp từ một trong 3 nguồn xung clock. Ba nguồn này là: mạch dao động tinh thể trên chip, nguồn xung clock bên ngoài, và mạch dao động RC bên trong. Nguồn xung clock được lựa chọn bởi Clock Source User Fuses như bảng dưới.
    [​IMG]
    10.1. Mạch dao động tinh thể:
    Khi được kích hoạt, bộ khuếch đại vi sai của mạch dao động được nối giữa XTAL1 và XTAL2 để kết nối với một tinh thể thạch anh hoặc bọ cộng hưởng gốm bên ngoài như hình dưới. Chú ý rằng trong một vài trường hợp, tụ C1 và C2 có thể bỏ đi do dung kháng giữa chân XTAL1 và XTAL2 (khoảng 10pF). Khi sử dụng mạch dao động tinh thể, P3.2 và P3.3 sẽ nhận tín hiệu vào, còn tín hiệu ra bị ngắt. Khi sử dụng mạch dao động tinh thể, không nên dung XTAL2 để điều khiển xung clock board-level mà không có đệm
    [​IMG]

    10.2. Nguồn xung clock bên ngoài:
    Lựa chọn nguồn xung clock bên ngoài sẽ ngắt bộ khuếch đại của mạch cộng hưởng và cho phép XTAL1 được điều khiển trực tiếp bằng nguồn xung clock bên ngoài như hình dưới. XTAL2 có thể để lại không cần kết nối và sữ dụng làm P3.3 I/O, hoặc dùng để xuất các giá trị chia nhỏ của xung clock hệ thống.
    [​IMG]
    10.3. Mạch dao động RC:
    AT89LP216 có một mạch dao động RC bên trong được điều chỉnh đến 8MHz, sai số 1% ở 5V, 25 độ C. Khi bật nguồn xung clock, XTAL1 và XTAL2 có thể được sử dụng làm chân P3.2 và P3.3. Chân XTAL2 cũng có thể được thiết lập dùng để xuất các giá trị chia nhỏ của xung clock hệ thống. Tần số của mạch dao động có thể được đặt bằng cách thay đổi RC Adjust Fuses. Một bản sao của thiết lập ban đầu của nhà sản xuất được lưu giữ tại địa chỉ 0007H của mảng Atmel.
    10.4. Xung clock hệ thống bên ngoài:
    Khi AT89LP216 được thiết lập để sử dụng cả xung clock ngoài và mạch dao động RC bên trong, ta sẽ nhận được một giá trị chia nhỏ của xung hệ thống ở chân XTAL2(P3.3). Đặc điểm của xung clock ra được kích hoạt bằng cách set bit COE ở thanh ghi CLKREG. 2 bit CDV xác định tỉ số chia xung clock. Ví dụ: đặt COE = 1 và CDIV = 00 khi sử dụng mạch dao động bên trong sẽ cho kết quả xung clock tần số 4MHz ở chân P3.3. P3.3 phải được thiết lập làm ngõ ra để sử dụng được đặc điểm của xung clock ra.
    [​IMG]
    11. Bộ định thời cải tiến:
    AT89LP216 có 2 thanh ghi định thời 16 bit: Timer0 và Timer1. Theo mặc định, khi là bộ định thời, thanh ghi tăng lên ở mỗi chu kỳ xung clock. Do đó, các thanh ghi đếm chu kỳ xung clock. Khi một xung clock bao gồm một khoảng dao động, mức đếm sẽ bằng với tần số của mạch dao động.
    Khi là bộ đếm, thanh ghi sẽ tăng lên theo đáp ứng cạnh xuống tại ngõ vào tương ứng của nó, T0 hoặc T1. Ngõ vào được lấy mẫu mỗi chu kỳ xung clock. Khi mẫu chuyển từ mức cao sang mức thấp, số đếm sẽ tăng lên. Giá trị số đếm xuất hiện trong thanh ghi trong suốt chu kỳ kế tiếp của chu kỳ xung có sự thay đổi mức logic. Cần có 2 chu kỳ xung clock đề nhận dạng sự chuyển đổi từ mức 1 sang mức 0. Tần suất đếm tối đa là ½ tần số mạch dao động. Không có sự hạn chế về chu trình làm việc của tín hiệu vào, nhưng nó nên có giá trị ít nhất 1 chu kỳ xung clock để đảm bảo rằng mỗi mức được lấy mẫu ít nhất 1 lần trước khi nó thay đổi.
    Hơn nữa, bộ định thời hay bộ đếm của Timer0 và Timer1 có 4 chế độ hoạt động: bộ định thời thay đổi độ rộng, bộ định thời 16 bit tự động nạp lại, bộ định thời 8 bit tự động nạp lại, bộ định thời chia thời gian. Bit điều khiển C/T trên thanh ghi TMOD lựa chọn chức năng bộ định thời hay bộ đếm. Cặp bit M1,M0 trên thanh ghi TMOD xác định chế độ hoạt động
    11.1. Mode 0 – bộ định thời thay đổi độ rộng:
    Cả hai bộ định thời trong mode 0 đều là bộ đếm 8 bit với bộ đếm gộp trước biến đổi. Bộ đếm gộp trước có thể biến đổi từ 1 đến 8 bit tùy thuộc vào bit PSC trên thanh ghi TCONB, khiến bộ định thời thay đổi từ 9 đến 16 bit. Theo mặc định bộ định thời được thiết lập ở chế độ 13 bit, tương đương mode 0 trong 8051. Sơ đồ dưới đây cho thấy hoạt động của mode 0 như khi áp dung cho Timer1 ở chế độ 13 bit.
    [​IMG]
    Khi bộ đếm nhảy từ số đếm cao nhất về số đếm thấp nhất, cờ ngắt TF1 được set. Ngõ vào bộ đếm được kích hoạt khi TR1 = 1 và GATE = 0 hoặc /INT1 = 1. Set GATE = 1 sẽ cho phép bộ định thời được điều khiển bởi ngõ vào /INT1 để tạo điều kiện cho việc đo độ rộng xung. TR1 là bit điều khiển trong thanh ghi TCON, GATE là bit điều khiển trong thanh ghi TMOD. 13 bit của bộ định thời bao gồm 8 bit của thanh ghi TH1 và 5 bit thấp của thanh ghi TL1. 3 bit cao của thanh ghi TL1 bất định và nên bỏ qua.
    [​IMG]
    Timer1 không sử dụng RH1/RL1 trong thời gian mode 0 và chúng nên được sử dụng làm bộ lưu trữ tạm thời
    11.2. Bộ định thời 16 bit tự động nạp lại:
    Ở mode 1 các bộ định thời được thiết lập ở chế độ 16 bit tự động nạp lại. Thanh ghi Timer chạy cả 16 bit. Giá trị nạp lại 16 bit được chứa trong byte cao và thấp của thanh ghi reload (RH1/RL1). Khi thu được xung clock, bộ định thời sẽ đếm lên: 0000H, 0001H, 0002H, . . . . Khi giá trị đếm chuyển từ FFFFH sang 0000H, thanh ghi bộ định thời sẽ được nạp giá trị từ thanh ghi RH1/RL1 và cờ tràn trên thanh ghi TCON được set. Thanh ghi reload được mặc định là 0000H, cung cấp toàn bộ 16 bit, tương ứng với vi điều khiển 8051.
    [​IMG]
    [​IMG]
    11.3. Bộ định thời 8 bit tự động nạp lại:
    Mode 2 thiết lập thanh ghi bộ định thời ở chế độ 8 bit tự động nạp lại. Việc tràn TL1 không chỉ set bit TF1 mà còn nạp lại cho TL1 giá trị chứa trong TH1, đã được định sẵn bởi phần mềm. Việc nạp lại không thay đổi TH1.
    [​IMG]
    [​IMG]
    Timer1 không sử dụng RH1/RL1 trong thời gian mode 2 và chúng nên được sử dụng làm bộ lưu trữ tạm thời
    11.4. Mode 3 – bộ định thời chia thời gian:
    Bộ định thời 1 trong mode 3 chỉ giữ nguyên số đếm của nó. Hiệu quả giống như set bit TR1 = 0. Bộ định thời 0 trong mode 3 thiết lập TL0 và TH0 như 2 bộ đếm riêng biệt. TL0 sử dụng bit điều khiển của Timer0: C/T, GATE, TR0, /INT0 và TF0. TH0 bị khóa vào chức năng của bộ định thời ( bộ đếm chu kỳ) và giành quyền sử dụng TF1 và TR1 từ bộ định thời 1. Do đó, TH0 kiểm soát việc ngắt bộ định thời 1. Trong khi bộ định thời 0 ở trong mode 3, bộ định thời 1 sẽ phải tuân theo những thiết lập của nó trong TMOD nhưng không thể ngắt
    Mode 3 dành cho các ứng dụng đòi hỏi thêm 1 bộ định thời hay bộ đếm 8 bit. Với bộ định thời 0 trong mode 3, AT89LP216 có thể có 3 bộ định thời. Khi bộ định thời 0 trong mode 3, bộ định thời 1 có thể được bật/tắt bằng cách chuyển nó ra/vào mode 3. Trong trường hợp này, bộ định thời 1 chỉ có thể được sử dụng bởi port nối tiếp để làm máy phát tốc độ truyền hoặc bất cứ ứng dụng nào không yêu cầu ngắt.
    [​IMG]
    Timer0 không sử dụng RH1/RL1 trong thời gian mode 3 và chúng nên được sử dụng làm bộ lưu trữ tạm thời
    [​IMG]


     

    Bài viết khác:

Chia sẻ trang này