Tài liệu Đề tài Thiết kế bộ điều khiển PID số trên nền vi điều khiển PIC: Tr−ờng đại học bách khoa hμ nội
Khoa điện
Bộ môn điều khiển tự động
X\[ ]^W
ĐỒ ÁN TỐT NGHIỆP
Đề tài:Thiết kế bộ điều khiển PID số trờn nền
vi điều khiển PIC
Giỏo viờn hướng dẫn : PGS.TS Phan Xuõn Minh
Sinh viờn thực hiện : Phạm Văn Cường
Hoàng Văn Quõn
Lớp : ĐKTĐ1
Khoỏ : 49
Hà Nội 5 - 2009
Phạm Văn Cường - Hoàng Văn Quõn. Lớp ĐKTĐ1-K49 1
Mục lục
Lời mở đầu .......................................................................................... 5
Lời cảm ơn........................................................................................... 6
Chương 1 : Họ vi điều khiển PIC và vi điều khiển PIC18F4520 ..........................7
1.1 Giới thiệu chung .......................................................................................... 7
1.2 . Vi điều khiển Pic18F4520 ......................................................................... 8
1.2.1. Tổ chức bộ nhớ (Memory Organization) ........................................... 13
1...
111 trang |
Chia sẻ: haohao | Lượt xem: 1341 | Lượt tải: 0
Bạn đang xem trước 20 trang mẫu tài liệu Đề tài Thiết kế bộ điều khiển PID số trên nền vi điều khiển PIC, để tải tài liệu gốc về máy bạn click vào nút DOWNLOAD ở trên
Tr−êng ®¹i häc b¸ch khoa hμ néi
Khoa ®iÖn
Bé m«n ®iÒu khiÓn tù ®éng
X\[ ]^W
ĐỒ ÁN TỐT NGHIỆP
Đề tài:Thiết kế bộ điều khiển PID số trên nền
vi điều khiển PIC
Giáo viên hướng dẫn : PGS.TS Phan Xuân Minh
Sinh viên thực hiện : Phạm Văn Cường
Hoàng Văn Quân
Lớp : ĐKTĐ1
Khoá : 49
Hà Nội 5 - 2009
Phạm Văn Cường - Hoàng Văn Quân. Lớp ĐKTĐ1-K49 1
Mục lục
Lời mở đầu .......................................................................................... 5
Lời cảm ơn........................................................................................... 6
Chương 1 : Họ vi điều khiển PIC và vi điều khiển PIC18F4520 ..........................7
1.1 Giới thiệu chung .......................................................................................... 7
1.2 . Vi điều khiển Pic18F4520 ......................................................................... 8
1.2.1. Tổ chức bộ nhớ (Memory Organization) ........................................... 13
1.2.2. 8 x 8 HARDWARE MULTIPLIER ................................................... 22
1.2.3. Ngắt (Interrupts) ................................................................................. 23
1.2.4. Cổng vào ra (I/O Port)........................................................................ 32
1.2.5. Bộ định thời (Timer) .......................................................................... 33
1.2.6. Bộ truyền nhận dữ liệu đồng bộ (EUSART-Enhanced Universal
Synchronous Asynchronous Receiver Transmitter)..................................... 37
1.2.7. Module chuyển đổi tưong tự sang số 10 bit (A/D) ............................ 50
Chương 2 : Thiết kế bộ điều khiển PID số...........................................................57
2.1 Thiết kế mô hình phần cứng mạch điều khiển........................................... 57
2.1.1. Yêu cầu thiết kế .................................................................................. 57
2.1.2. Các khối chức năng trên kit điều khiển.............................................. 58
a) Khối vi điều khiển trung tâm....................................................................................58
b) Khối giao tiếp máy tính qua cổng nối tiếp ...............................................................59
c) Khối bàn phím ..........................................................................................................60
d) Khối hiển thị LCD 2x16(2 dòng, 16cột) ..................................................................61
e) Khối mạch động lực điều khiển................................................................................62
f) Khối nguồn 12V/5V..................................................................................................62
g) Các khối khác ...........................................................................................................63
2.2 Thiết kế phần mềm trên nền vi điều khiển PIC ......................................... 64
2.2.1. Yêu cầu phần mềm ............................................................................. 64
2.2.2. Giải thuật chương trình ...................................................................... 65
a) Loop điều khiển........................................................................................................65
b) Thuật toán PID số.....................................................................................................66
2.2.3. Thiết kế phần mềm điều khiển và giám sát trên máy tính ................. 69
2.3 Kit điều khiển............................................................................................. 71
Chương 3 : Ứng dụng bộ điều khiển PID số điều khiển động cơ một chiều.......72
3.1 Đối tượng điều khiển ................................................................................. 72
3.1.1. Thông số kĩ thuật ................................................................................ 72
Phạm Văn Cường - Hoàng Văn Quân. Lớp ĐKTĐ1-K49 2
3.1.2. Nhận dạng mô hình động học của động cơ điện một chiều ............... 72
3.1.3. Thu thập dừ liệu vào/ra của động cơ điện một chiều từ thựcnghiệm. 72
3.1.4. Nhận dạng động cơ điên một chiều bằng Toolbox Identification cảu
Matlab........................................................................................................... 74
3.1.5. Đánh giá chất lượng mô hình ............................................................. 76
3.2 Thiết kế luật điều khiển PID...................................................................... 77
3.2.1. Phương pháp Ziegler-Nichols1 .......................................................... 77
3.2.2. Phương pháp IMC .............................................................................. 77
3.2.3. Mô phỏng và đánh giá chất lượng bộ điều khiển............................... 78
3.3 Thiết bị chấp hành(IC L298) ..................................................................... 78
3.4 Cảm biến (Encoder) ................................................................................... 81
3.5 Hệ thống điều khiển................................................................................... 84
3.6 Một số hình ảnh về Kit điều khiển động cơ sử dụng vi điều khiển PIC .. 86
3.7 :Kết quả thực nghiệm................................................................................. 87
3.8 So sánh kết quả mô phỏng và thực tế ........................................................ 88
Kết luận ............................................................................................. 89
Tài liệu tham khảo ............................................................................. 91
Phụ lục Code phần mềm.................................................................... 92
Phạm Văn Cường - Hoàng Văn Quân. Lớp ĐKTĐ1-K49 3
MỤC LỤC HÌNH VẼ
Hình 1.1 Sơ đồ khối kiến trúc vi điều khiển PIC18F4520 ............................................. 9
Hình 1.2 Sơ đồ chân vi điều khiển Pic18F4520........................................................... 10
Hình 1.3: Tổ chức bộ nhớ chương trình ....................................................................... 13
Hình 1.5: Clock/Instruction Cycle................................................................................ 15
Hình 1.6 Instruction Pipeline Flow .............................................................................. 15
Hình 1.7 Instruction In Program Memory.................................................................... 16
Hình 1.8 Sơ đồ cấu trúc bộ nhớ dữ liệu Pic18F4520 ................................................... 16
Hình 1.9 Sơ đồ cấu trúc thanh ghi của Pic18F4520 ..................................................... 17
Hình 1.10 Pic 18 Interrup logic .................................................................................... 23
Hình 2.1 Mô hình khối mạch điều khiển...................................................................... 57
Hinh 2.2.Sơ đồ khối vi điều khiển trung tâm ............................................................... 58
Hinh 2.3 Mạch nạp cho vi điều khiển trung tâm .......................................................... 58
Hinh 2.4 Khối giao tiếp máy tính Max232................................................................... 59
Hình 2.5 : Cấu tạo cổng COM...................................................................................... 59
Hinh 2.6 Modul bàn phím ............................................................................................ 60
Bảng sơ lược chức năng LCD 2x16 ............................................................................. 61
Hình 2.7 Khối hiển thị LCD ......................................................................................... 62
Hinh 2.8 Khối thiết bị chấp hành.................................................................................. 62
Hình 2.9 Sơ đồ khối nguồn........................................................................................... 62
Sơ đồ nguyên lý kit điều khiển..................................................................................... 63
Sơ đồ mạch in hai lớp................................................................................................... 64
Hình 2.10 Lưu đồ loop điều khiển................................................................................ 65
Hình 2.11 Lưu đồ hàm ngắt dùng tạo chu lì trích mẫu................................................. 66
Hình 2.12 Sơ đồ bộ điều khiển PID số ......................................................................... 67
Hình 2.13 Chống bão hào tích phân ............................................................................. 68
Hình 2.14. Giao diện giao tiếp PC................................................................................ 69
Hình 3.1 Động cơ sủ dụng trong đồ án......................................................................... 72
Hinh 3.2 Sơ đồ thu thập dữ liệu nhận dạng .................................................................. 72
Hình 3.2 Đặc tính thu thập dữ liệu nhận dạng............................................................. 73
Hình 3.3Chọn đầu vào và mô hình nhận dạng của đối tượng ...................................... 75
Hình 3.4Phương thức nhận dạng và đánh giá mô hình thu được ................................. 75
Hình 3.5 Đặc tính quá độ đối tượng sau khi nhận dang ............................................... 76
Hình 3.6 Sai lệch mô hình nhận dạng........................................................................... 76
Phạm Văn Cường - Hoàng Văn Quân. Lớp ĐKTĐ1-K49 4
Hình 3.7 Mô phỏng trên Simulink các phương pháp điều khiển ................................ 78
Hình 3.9 Đặc tính mô phỏng ........................................................................................ 78
Hình 3.10 Sơ đồ chân L298.......................................................................................... 79
Hình 3.11: Các chế độ của L298 .................................................................................. 80
Hình 3.12 : Sơ đồ giải pháp.......................................................................................... 81
Hình 3.13 : Mô hình1 - En coder quang tương đối ...................................................... 81
Hình 3.14 : Phương thức hoạt động Encoder quang tương đối.................................... 82
Hình 3.15 : Mô hình 2 -En coder quang tương đối ...................................................... 82
Hình 3.16 : Sơ đồ xung của En coder quang tương đối(mô hình 2) ............................ 83
Hình 3.17 Sơ đồ hệ thốngđiều khiển động cơ .............................................................. 84
Hình 3.18 Cấu trúc hệ thống điều khiển....................................................................... 84
Hình 3.19 Cấu trúc khối điều khiển động cơ................................................................ 85
Một số hình ảnh mạch điều khiển động cơ một chiều.................................................. 86
Hình 3.20 Đặc tính với bộ điều khiển PI...................................................................... 87
Hình 3.21 Đặc tính với bộ đièu khiển PID................................................................... 87
Hình 3.22 Hệ thống khi có nhiễu................................................................................. 88
Hình 3.23 Đặc tính khi hệ thống có thay đỏi giá trị đặt ............................................... 88
Phạm Văn Cường - Hoàng Văn Quân. Lớp ĐKTĐ1-K49 5
Lời mở đầu
Khoa học công nghệ hiện đại đã có những bước tiến nhanh và xa đi theo đó là
những thành tựu ứng dụng trong mọi lĩnh vực dời sống, công nghiệp. Kĩ thuật điều
khiển trong tiến trình hoàn thiện lý thuyết cũng tạo cho mình nhiều phát triển có ý
nghĩa. Bây giờ khi nhắc tới điều khiển con người dưòng như hình dung đến sự chính
xác, tốc độ xử lý và thuật toán thông minh đồng nghĩa là lượng chất xám cao hơn.
Có thể nói trong lĩnh vực điều khiển và trong công nghiệp thì bộ điều khiển PID
có ứng dụng kha rộng rãi, một giả pháp đa năng chocác ứng dụng cả Analog cũng như
Digital. Thống kê cho thấy có tới hơn 90% các bộ điều khiển sử dụng trong thực tế là
PID. Rõ ràng nếu có thiết kế và chọn lựa các thông số hợp lý cho bộ điều khiển PID
thì việc đạt được các chỉ tiêu chất lượng mong muốn là khả thi Bộ điều khiển PID
cũng giúp người sử dụng dễ dàng tích hợp cũng như chọn các luật điều khiển như : tỉ
lệ(P), tích phân(I), tỉ lệ tích phân(PI), tỉ lệ vi phân(PD)… sao cho phù hợp đối với các
đối tượng điều khiển. Nhiều quá trình trong công nghiệp việc sử dụng bộ điều khiển
PID là không thể thay thế như khống chế nhiệt độ, mức, tốc độ…? Ngay cả những lý
thuyết điều khiển hiện đại cũng không cho ta những hiệu quả cao như bộ điều khiển
PID mang lại.Ngoài ra bộ điều khiển PID còn ứng dụng nhiều trong điều khiển thích
nghi,bền vững vẫn mang lại hiệu quả cao trong các cơ cấu chỉnh định.
Bài toán thiết kế và điều khiển động cơ một chiều là bài toán cơ bản và quen thuộc
trong ngành điều khiển tự động. Có thể thiết kế điều khiển cho đối tượng độngcơ điện
một chiều theo nhiều phương pháp như :dùng PLC & biến tần, điện tử công suất, vi
điều khiển… Mỗi phương pháp có ưu và nhược điểm khác nhau nhưng đều có mục
đích ổn định và điều khiển được tốc độ động cơ. Ngày nay vi điều khiển phát triển sâu
rộng và ngày càng ứng dụng nhiều trong cài đặt thiết kế bộ điều khiển cho các đối
tượng công nghiệp. Trên cơ sở muốn tìm hiểu về lĩnh vực vi điều khiển chúng em
chọn đề tài: Thiết kế bộ điều khiển PID số trên nền vi điều khiểnPIC. Vì khả năng
và thời gian có hạn nên không thể tránh khỏi những thiếu sót trong đồ án. Do vậy
chúng em rất mong được thầy cô và bạn bè đóng góp xây dựng để đồ án của chúng em
được hoàn thiện hơn.
Hà Nội, ngày tháng năm 2009
Sinh viên
Phạm Văn Cường
Hoàng Văn Quân
Lớp ĐKT1 - K49
Phạm Văn Cường - Hoàng Văn Quân. Lớp ĐKTĐ1-K49 6
Lời cảm ơn
Đầu tiên chúng em xin chân thành gửi lời cảm ơn tới nhà truờng, khoa điện, bộ
môn ĐKTĐ, các thầy cô đã dạy dỗ và dìu dắt chúng em trong suốt 5 năm học vừa qua
để có được những kiến thức chuyên môn cơ sở sau này chúng em có thể vào đời làm
việc, sử dụng có ích cho xã hội.
Để thực hiện thành công đồ án là sự hướng dẫn, chỉ bảo tận tình của PGS.TS Phan
Xuân Minh, Người đã hướng dẫn tận tình , giúp chúng em định hướng, góp ý và cung
cấp ý tưởng cũng như chỉ dẫn tài liệu và các tiến trình thực hiện đồ án .Sự hướng dẫn
của cô là một yếu tố quan trọng để chúng em có thể hoàn thành đồ án này .
Cuối cùng chúng em xin chân thành gửi những lời cảm ơn sâu sắc đến cha mẹ và
gia đình, những người luôn sát cánh cùng chúng em, nuôi dưỡng chăm sóc chúng em
tạo điều kiện tốt nhất cho chúng em học tập để có kết quả như ngày hôm nay.
Chúng em xin chân thành cảm ơn
Vi điều khiển Pic
Phạm Văn Cường - Hoàng Văn Quân. Lớp ĐKTĐ1-K49 7
Chương 1: Họ vi điều khiển PIC và vi điều
khiển PIC18F4520
1.1 Giới thiệu chung
Ngày nay, những ứng dụng của vi điều khiển đã đi sâu vào đời sống sinh hoạt và
sản xuất của con người. Thực tế hiện nay là hầu hết các thiết bị điện hiện nay đều có
sự góp mặt của vi điều khiển và vi xử lí. Ứng dụng vi điều khiển trong thiết kế hệ
thống làm giảm chi phí thiết kế và hạ giá thành sản phẩm đồng thời nâng cao tính ổn
định của thiết bị và hệ thống.
Trên thị trường hiện nay có nhiều họ vi điều khiển để lựa chọn như: 8051,
Motola68HC, AVR, ARM, Pic…và có lẽ 8051 là dòng mà chúng ta được làm quen
nhiều nhất trong môi trường đại học nhưng tại sao chúng ta chọn dòng vi điều khiển
Pic để thực hiện ứng dụng và phát triển không ngoài những nguyên nhân sau:
- Họ vi điều khiển Pic phát triển và sử dụng phổ biến ở nước ta => việc tìm
mua và trao đổi kinh nghiệm là hết sức thuận lợi.
- Giá thành các dòng Pic là không quá mắc.
- Các dòng Pic có đầy đủ tính năng để hoạt động độc lập.
- Là sự bổ sung hợp lý về kiến thức cũng như ứng dụng cho họ vi điều khiển
8051
- Có sự hỗ trợ cao của nhà sản xuất về các công cụ lập trình, trình biên dịch,
mạch nạp Pic từ đơn giản tới phức tạp. Không những vậy các tính năng đa
dạng của các đòng Pic không ngừng được phát triển.
- Có nhiều bộ phận ngoại vi ngay trên chip, bao gồm: Cổng và/ra số, bộ biến
đổi ADC, bộ nhớ EEFROM, bộ định thời, bộ điều chế độ rộng xung
(PWM)…
- Bộ nhớ chương trình và bộ nhớ dữ liệu được tích hợp ngay trên chip.
Đây là họ VĐK được chế tạo theo kiến trúc RISC (Reduced Intruction Set
Computer) có cấu trúc khá phức tạp. Ngoài các tính năng như các họ VĐK khác, nó
còn tích hợp nhiều tính năng mới rất tiện lợi cho người thiết kế và lập trình.
Pic18F4520 nằm trong dòng sản phẩm PIC18F2420/2520/4420/4520 của nhà sản
xuất Microchip với đặc điểm 28/40/44 -Pin Enhanced Flash Microcontrollers with 10-
Bit A/D and nanoWatt Technology. Dòng sản phẩm này có nhiều cải tiến đáng kể về
tính năng so các dòng Pic trước đó như :
- Bộ nhớ chương trình được tăng cường (16Kbytes for PIC18F2420/4420
devices and 32Kbytes for PIC18F2520/4520 devices).
Vi điều khiển Pic
Phạm Văn Cường - Hoàng Văn Quân. Lớp ĐKTĐ1-K49 8
- I/O ports (3 bidirectional ports on 28-pin devices, 5 bidirectional ports on
40/44-pin devices).
- Tăng cường modul CCP.
- Sử dụng công nghệ nanoWatl
Dòng sản phẩm này nói chung có nhiều sự tương đồng về tính năng nhưng có thể
chia làm hai nhóm Pic18F2420/2520 với 28 chân và Pic 18F4420/4520 với 40 hoặc 44
chân ghép nối. Phần này chủ yếu chúng ta tìm hiểu Pic18F4520 nhưng những đặc
điểm các Pic khác thuộc dòng này sẽ hoàn toàn tương tự với các kí hiệu tương ứng.
Trong đồ án chúng ta quan tâm chủ yếu Pic18F4520 loại PDIP sử dụng trong mạch
thiết kế.
1.2 . Vi điều khiển Pic18F4520
Vi điều khiển Pic18F4520 có các đặc điểm cơ bản:
- Sử dụng công nghệ nanoWatl: Hiệu năng cao, tiêu thụ năng lượng ít
- Kiến trúc RISC
¾ 75 lệnh mạnh, hầu hết các lệnh thực hiện trong bốn chu kì xung.
¾ Tốc độ thực hiện lên tới 10 triệu lệnh trong 1s với tần số 40Mhz
¾ Có bộ nhân cứng .
- Các bộ nhớ chương trình và dữ liệu cố định
¾ 32 Kbytes bộ nhớ flash có khả năng tự lập trình trong hệ thống có
thể thực hiện được 100.000 lần ghi/xóa
¾ 256 bytes EEPROM có thể thực hiện được 1.000.000 lần ghi/xóa-
¾ 256 bytes SRAM
- Những ngoại vi tiêu biểu
¾ 4 bộ định thời/bộ đếm 8 bit với các chế độ tỉ lệ đặt trước và chế độ
so sánh.
¾ Bộ đếm thời gian thực với bộ tạo dao động riêng biệt
¾ 2 kênh PWM
¾ 13 kênh ADC 10 bit
¾ Bộ truyền tin nối tiếp USART khả trình
¾ Watchdog Timer khả trình với bộ tạo dao động bên trong riêng biệt
¾ Bộ so sánh tương tự
- Các đặc điểm đặc biệt khác
¾ Power on Reset và dò Brown out khả trình
Vi điều khiển Pic
Phạm Văn Cường - Hoàng Văn Quân. Lớp ĐKTĐ1-K49 9
¾ Bộ tạo dao động RC được định cỡ bên trong
¾ Các nguồn ngắt bên trong và bên ngoài
- I/O và các kiểu đóng gói
¾ 32 đường I/O khả trình
¾ Đóng gói 40-pin PDIP, 44-lead TQFP, và 44-pad MLF
Hình 1.1 Sơ đồ khối kiến trúc vi điều khiển PIC18F4520
Vi điều khiển Pic
Phạm Văn Cường - Hoàng Văn Quân. Lớp ĐKTĐ1-K49 10
Sơ đồ chân của các vi điều khiển Pic18F4420/4520
Hình 1.2 Sơ đồ chân vi điều khiển Pic18F4520
Sau đây là giới thiệu cấu tạo chân loại 40 chân (40 Pin PDIP):
• Chân 1( MCLR /VPP/RE3) :
- MCLR là đầu vào Master Clear (reset) hoạt động ở mức thấp dể reset toàn bộ
thiết bị.
- VPP dùng để thay đổi điện áp đầu vào.
- RE3 đầu vào số.
Các chân thuộc cổng vào ra Port A
• Chân 2(RA0/AN0):với RA0 là cổng vào ra số, AN0 là đầu vào tương tự Input0.
• Chân 3(RA1/AN1): RA1 là cổng vào ra số, AN1 là đầu vào tương tự Input1.
• Chân 4(RA2/AN2/VREF+): RA2 là cổng vào ra số, AN2 là đầu vào tương tự
Input2. VREF+ đầu vào tương tự chuyển đổi A/D điện áp tham chiếu(mức thấp),
còn CVREF là đầu ra tương tự để so sánh điện áp chuẩn.
• Chân 5(RA3/AN3/VREF-/CVREF ): RA3 là cổng vào ra số, AN3 là đầu vào tương
tự Input3. VREF- đầu vào tương tự chuyển đổi A/D điện áp tham chiếu(mức cao).
• Chân 6(RA4/T0CKI/C1OUT): RA4 là đầu vào ra số,T0CKI dầu vào xung bên
ngoài của Timer0, C1OUT là đầu ra bộ so sánh 1.
• Chân 7(RA5/AN4/ SS /HLVDIN/C2OUT): trong đó RA5 là cổng vào ra só, AN4
là đầu vào tương tự Input 4, SS chọn đầu vào phụ thuộc SPI, HLVDINđầu vào
tương tự để dò điện áp, C2OUT đầu ra bộ so sánh 2.
Vi điều khiển Pic
Phạm Văn Cường - Hoàng Văn Quân. Lớp ĐKTĐ1-K49 11
• Chân 13(OSC1/CLKI/RA7): với OSC1là đầu vào bộ dao động thạch anh hoặc là
đầu vào nguồn xung từ bên ngoài, khi ta nối dây với các thiết bị tương tự thì đầu
vào này dạng ST( Schmitt Trigger input ưith CMOS levels).CLKI là đầu vào
CMOS cho nguồn xung bên ngoài và luôn được ghép nối với chân OSC1. Còn
RA7 là chân vào ra sử dụng chung .
• Chân 14(OSC2/CLKO/RA6): OSC2 là đầu ra bộ dao động thạch anh được nối
với thạch anh hoặc bộ công hưởng dể lựa chọn dạng bộ dao động thạch anh.
CLK0 có tần số bằng ¼ tần số của OSC1 đọ rộng chu kì lệnh, RA6 là đầu vào ra
chung.
Các chân cổng vào ra hai chièu Port B. Port B có thể lập trình bằng phần mềm khi
cho kéo đầu vào bên trong yếu lên trên toàn bộ đầu vào.
• Chân 33(RB0/INT0/FLT0/AN12): Với RB0 là cổng vào ra số, INT0 là đầu vào
ngắt ngoài Interrup 0, FLT0 là đầu vào báo lỗi PWM được tăng cường CCP1,
AN12 đầu vào tương tự Input 12.
• Chân 34(RB1/INT1/AN10): RB1 là đầu vào ra số, INT1 đầu vào ngắt ngoài
Interrup1, AN10 đầu tương tự Input 10.
• Chân 35(RB2/INT2/AN8): RB2 là đầu vào ra số, INT2 đầu vào ngắt ngoài
Interrup2, AN8 đầu tương tự Input 8.
• Chân 36 (RB3/AN9/ccp2): RB3 là đầu vào ra số, AN9 đầu tương tự Input 9,
CCP2 ( Capture 2 input/Compare 2 output/PWM2 output.)
• Chân 37(RB4/KBI0/AN11):): RB4 là đầu vào ra số, KBI0 thay đổi mở ngắt,
AN11 đầu tương tự Input 9.
• Chân 38(RB5/KBI1/PGM): RB5 đầu vào ra số, KBI1 thay đổi mở ngắt, PGM
cho phép có thể lập trình ISCPTM ở điện áp thấp.
• Chân 39(RB6/KBI2/PGC): RB6 là đầu vào ra số, KBI2 thay đổi mở ngắt, PGC
chân dùng trong mạch chạy và xung lập trình ICSP.
• Chân 40(RB7/KBI3/PGD): RB7 đầu vào ra số, KBI3 thay đổi mở ngắt, PGD
chân dùng trong mạch chạy và xung lập trình ICSP.
Các chân công Port C
• Chân 15(RC0/T1OSO/T13CKI):RC0 đầu vào ra số, T1OSO đầu ra bộ dao động
Timer1, T13CKI đầu vào xung bên ngoài Timer1/Timer3.
• Chân 16(RC1/T1OSI/CCP2): RC1 đầu vào ra số, T1OSI đầu vào bộ dao động
Timer1, CCP2(Capture 2 input/Compare 2 output/PWM2 output.).
• Chân 17(RC2/CCP1/P1A): RC2 lầ đầu vào ra số, CCP1(Capture1 input/Compare
1 output/PWM1 output.), P1A đầu ra tăng cường CCP1.
• Chân 18(RC3/SCK/SCL): RC3 là đầu vào ra số, SCK đầu vào ra đư chuỗi xung
vào ra cho SPI lựa chọn, SCL đầu vào ra đưa chuỗi xung vào ra cho I2CTM lựa
chọn.
Vi điều khiển Pic
Phạm Văn Cường - Hoàng Văn Quân. Lớp ĐKTĐ1-K49 12
• Chân 23(RC4/SDI/SDA): RC4 là đầu vào ra số, SDI đầu vào dữ liệu API, SDA
đầu vào ra dữ liệu cho I2C.
• Chân 24(RC5/SDO): RC5 đầu vào ra số, SDO đầu ra dữ liệu SPI.
• Chân 25(RC6/TX/CK): RC6 đầu vào ra số, TX đầu ra chuyển đổi dị bộ
EUSARRT, CK dầu vào ra xung đồng bộ EUSART.
• Chân 26(RC7/RX/DT): RC7 đầu vào ra số, RX đầu vào nhận dị bộ EUSART, DT
đầu vào ra dữ liệu đồng bộ EUSART.
Các chân cổng Port D( Port D có thể vào ra hai hướng hoặc cổng song song phụ
thuộc(PSP) cho giao diên vi xử lý và khi đó các đầu vào phải là TTL..
• Chân 19(RD0/PSP0): RD0 đầu vào ra số, PSP0 cổng dữ liệu song song phụ
thuộc.
• Chân 20(RD1/PSP1): RD1 đầu vào ra số, PSP1cổng dữ liệu song song phụ thuộc
• Chân 21(RD2/PSP2): RD2đầu vào ra số, PSP2 cổng dữ liệu song song phụ thuộc
• Chân 22(RD3/PSP3): RD3 đầu vào ra số, PSP3 cổng dữ liệu song song phụ thuộc
• Chân 27(RD4/PSP4): RD4 đầu vào ra số, PSP4 cổng dữ liệu song song phụ thuộc
• Chân 28(RD5/PSP5/P1B): RD5 đầu vào ra số, PSP5 cổng dữ liệu song song phụ
thuộc, P1B đầu ra được tăng cường CCP1.
• Chân 29(RD6/PSP6/P1C): RD6 đầu vào ra số, PSP6 cổng dữ liệu song song phụ
thuộc, P1C đầu ra được tăng cường CCP1.
• Chân 30(RD7/PSP7/P1D): RD7 đầu vào ra số, PSP7 cổng dữ liệu song song phụ
thuộc, P1D đầu ra được tăng cường CCP1.
Các chân cổng Port E
• Chân 8(RE0/ RD /AN5): RE0 đầu vào ra số, RD đầu vào điều khiển đọc cho cổng
PSP, AN5 đầu vào tương tự Input5.
• Chân 9(RE1/ WR /AN6): RE1 đầu vào ra số, WR đầu vào điều khiển viết dữ liệu
cổng PSP, AN6 đầu vào tương tự Input6.
• Chân 10(RE2/CS /AN7): RE2 đầu vào ra số, CS điều khiển chọn Chip cho cổng
PSP, AN7 đầu vào tương tự Input7.
- Đầu RE3 nằm ở chân 1
Các chân khác
• Chân 12,31(VSS): nối đất chuẩn cho I/O và logic.
• Chân 11,32(VDD): cungcấp nguồn dương cho I/O và logic.
Loại 44 chân có thêm một số chân phụ khác khi cần thiết ta có thể dễ dàng tra
trong DataSheet. Chi tiết hơn chúng ta có thể thấy qua sơ đồ khối của
Pic18F4420/4520 trong tài liệu do microchip cung cấp sẽ có hoàn toàn đầy đủ thông
tin. đặc điểm cấu tạo.
Vi điều khiển Pic
Phạm Văn Cường - Hoàng Văn Quân. Lớp ĐKTĐ1-K49 13
1.2.1. Tổ chức bộ nhớ (Memory Organization)
Dòng Pic18Fxxxx được tổ chức bộ nhớ thành ba loại:
• Bộ nhớ chương trình (Program Memory).
• Bộ nớ dữ liệu RAM (Data RAM).
• Bộ nhớ dữ liệu EEPROM (Data EEPROM ).
Tổ chức các bộ nhớ chương trình theo kiến trúc Harvard được sắp xếp theo sơ đồ:
Hình 1.3: Tổ chức bộ nhớ chương trình
Tổ chức bộ nhớ chương trình(Program Memory Organization)
Dòng vi điều khiển Pic18xxxx là thiết bị với 21bit bộ đếm chương trinh PC
(Program counter) có thể quản lý 2Mbyte bộ nhớ chương trình. Với Pic18F4520 có
32Kbytes bộ nhớ Flash có thể lưu trữ lên tới 16,384 câu lệnh đơn, dòng Pic này có
hai vector ngắt: Reset vector có địa chỉ 0000h và Interrupt vector ở địa chỉ 0008h
và 0018h.
• Bộ đếm chương trình – PC (Program Counter)
PC có độ rộng 21 bits phân chia trên 3 thanh ghi 8 bits: thanh ghi PCL, thanh ghi
PCH, thanh ghi PCU. Dữ liệu bytes địa chỉ của PC được lưu trong bộ nhớ chương
trình. Khi sử dung cần lưu ý tới cấu trúc lệnh có làm thay đổi giá trị PC hay không.
Vi điều khiển Pic
Phạm Văn Cường - Hoàng Văn Quân. Lớp ĐKTĐ1-K49 14
• Khôi phục dịa chỉ ngăn xếp (RETURN ADDRESS STACK)
Ở đây ta có thể cho phép lưu trữ gọi 31 chương trình và các ngắt xảy ra. Trong
thực thi ngăn xếp cấu trúc lệnh CALL và RCALL là được quan tâm. Sơ đồ ngăn
xếp dạng:
Hình 1.4: Sơ đồ địa chỉ ngăn xếp
Trong vùng ngăn xếp này cần quan tâm tới::
- Top-of-Stack Access
- Return Stack Pointer (STKPTR)
- Stack Full and Underflow Resets
Khi chúng ta lập trình cần thiết chính xác khi gọi chương trình qua lệnh Call và
Rcall nên khi tác động cần quan tâm sự thay đổi các ngăn xếp cũng như quản lý
con trỏ (Pointer). Ta có thể dùng các lệnh Push và Pop để điều khiển con trỏ. Một
quan tâm khác nữa đó là Stack Pointer Register (STKPTR) - thanh ghi con trỏ
ngăn xếp:
Bit 7 (STKFUL): bit cờ báo ngăn xếp đầy
− Giá tri 1 có nghĩa là ngăn xếp đã đầy hoặc tràn
− Giá trị 0 thì ngăn xếp vẫn chưa bị đầy hoặc tràn
Bit 6 (STKUNF): bit cờ báo tràn dưới
− Giá trị 1: xảy ra tràn dưới
− Giá trị 0: không có tràn dưới
Bit 5 (Unimplementad): mang giá trị “0”
Bit 4-0 (SP:Các bit xác định con trỏ ngăn xếp
Chúng ta có thể xóa bit 6 và bit 7 nhờ phần mềm hoạc bởi một POR
• FAST REGISTER STACK
Nhóm thanh ghi này gồm có các thanh ghi: Status, WREG, BSR giúp việc khôi
phục nhanh lựu chọn cho các ngắt. Ví dụ một chương trình:
Vi điều khiển Pic
Phạm Văn Cường - Hoàng Văn Quân. Lớp ĐKTĐ1-K49 15
Việc quản lý tốt bộ nhớ chương trình sẽ giúp ta thực hiện chương trình tốt hơn
cũng như tối ưu câu lệnh.
• Chu kì lệnh Pic 18Fxxx
Bất kì một vi điều khiển Pic nào khi nhận một xung từ bên trong hay bên ngoài
đều xử lý theo một chu kì gồm 4 bước. Họ 18Fxxxx cũng vậy chu kì lệnh được xử
lý song song (Pipelining) qua 4 bước Q1,Q2,Q3,Q4.
Hình 1.5: Clock/Instruction Cycle
Hình 1.6 Instruction Pipeline Flow
Vi điều khiển Pic
Phạm Văn Cường - Hoàng Văn Quân. Lớp ĐKTĐ1-K49 16
Hình 1.7 Instruction In Program Memory
Tổ chức dữ liệu bộ nhớ(Data Memory Organization)
Pic18Fxxxx là họ Statis Ram mỗi thanh ghi bộ nhớ dữ liệu có 12 bit địa chỉ,
cho phép truy nhập tới 4096 bytes dữ liệu bộ nhớ. Không gian bộ nhớ chia làm
16 bank gồm 256 byte mỗi bank Pic18F4520 như sơ đồ phía sau.
Bộ nhớ dữ liệu bao gồm : thanh ghi chức năng đặc biệt (SFRs), thanh ghi mục
đích chung (GPRs). Thanh ghi SFR dùng để điều khiển trạng thái và chức năng
thiết bị ngoại vi, trong khi thanh ghi GPR dùng để lưu trữ hoặc làm vùng nhớ tạm
thời đang hoạt động của các ứng dụng.
Hình 1.8 Sơ đồ cấu trúc bộ nhớ dữ liệu Pic18F4520
Theo cấu trúc lệnh và kiến trúc dòng Pic18Fxxxx cho phép các bank hoạt động
đồng thời. Toàn bộ bộ nhớ dữ liệu có thể cho phép truy nhập có hướng, vô hướng hay
địa chỉ có chỉ số, đặc điểm chung của các thanh ghi là cho phép xử lý trong một chu kì
Vi điều khiển Pic
Phạm Văn Cường - Hoàng Văn Quân. Lớp ĐKTĐ1-K49 17
đơn. Pic 18Fxxxx cung cấp một AccesBank gồm 256 byte bộ nhớ cho phép truy cập
nhanh tới SFRs và phần Bank0 của GPR nếu không sử dụng BSR.
Chi tiết các bank thanh ghi và chức năng ta có thể theo dõi kĩ hơn trong
dataSheet
Sau đây là một số cấu trúc các thanh ghi điển hình:
Hình 1.9 Sơ đồ cấu trúc thanh ghi của Pic18F4520
Thanh ghi Status (Status Register)
Bit 7-5 (Unimplemented): mang giá trị “0”
Bit 4 (N): bit xác định dấu(Negative bit) dược sử dụng cho số có dấu(số bù 2), nó
được xác dịnh khi kết quả mang dấu âm(ALU MSB=1)
− Giá trị 1: kết quả là âm
− Giá trị 0: kết quả là dương
Bit 3 (OV): bít báo tràn(overflow bit) được sử dụng cho số có dấu (số bù 2), nó
xác định báo tràn cho độ dài 7 bit cái là nguyên nhân thayđổi trạng
thái và dấu bit 7.
− Giá trụ 1: xảy ra tràn
− Giá trị 0 : không xáy ra tràn
Bit 2 (Z): bít không (Zero bit)
− Giá trụ 1: kết quả các phép toán số học và logic là bằng “0”
− Giá trị 0 : kết quả các phép toán khác “0”
Bit 1 (DC): Digit Carry/borrow bit. Sử dụng cho các lệnh ADDWF, ADDLW,
SUBLW và SUBWF
− Giá trụ 1: xảy ra việc thao tác 4 bit thấp.
Vi điều khiển Pic
Phạm Văn Cường - Hoàng Văn Quân. Lớp ĐKTĐ1-K49 18
− Giá trị 0 : không xảy ra việc thao tác 4 bit thấp.
Bit 1 (DC): Carry/borrow bit. Sử dụng cho các lệnh ADDWF, ADDLW,
SUBLW và SUBWF
− Giá trụ 1: xảy ra việc thao tác bit quan trọng.
− Giá trị 0 : không xảy ra việc thao tác với bit quan trọng.
• Các kiểu địa chỉ dữ liệu(Data Addressing Modes)
Có bốn kiểu địư chỉ như sau:
• Địa chỉ có sẵn (Inherent addressing)
• Địa chỉ bằng chữ (Literal addressing)
• Địa chỉ có hướng (Direct addressing)
• Địa chỉ vô hướng (Indirect addressing)
Các chế độ này có chế độ địa chỉ theo hướng khi sử dụng có liên hệ thanh ghi
FSR
• Bộ nhớ dữ liệu và cấu trúc lệnh được mở rộng(Data Memory and the
Extended Instruction Set)
Pic 18 có khả năng cho ta mở rộng cấu trúc lệnh nhờ Access Bank và cho ta gấp
dôi lệnh khi lựa chon địa chỉ không gian bộ nhớ. Nó có thể mang lại nhiều ý nghĩa về
kích thước bộ nhớ. Với chế độ này chủ yếu thay đổi cấu trúc kiểu địa chỉ có hướng và
vô hướng còn hai chế độ địa chỉ bàng chữ và có sẵn là không thay đổi, cụ thể ta có thể
theo đõi như hình vẽ
Vi điều khiển Pic
Phạm Văn Cường - Hoàng Văn Quân. Lớp ĐKTĐ1-K49 19
Bộ nhớ chương trình Flash (Flash Program Memory)
Đặc điểm bộ nhớ Flash là có khả năng đọc viết và xoá trong thời gian hoạt động
dựa vào khoảng điện áp VDD một cách dễ dàng.
Tại một thời điểm chúng ta có thể thực hiện đọc một byte, Viết một khối 32 byte,
xoá một khối 64 byte. Hoạt động xoá một khối lớn không có khả năng từ mã người
sử dụng.
Khi ta xoá hoặc viết vào bộ nhớ chương trình sẽ ngừng chỉ dẫn cho khi hoàn
thành hoạt động.Và không có sự truy nhập trong suốt quá trình viết hoặc xoá dữ
liệu. Sẽ có một bộ đếm thời gian khi có hoạt động xoá hoặc viết.
Sau đây chúng ta sẽ tìm hiểu một số thuộc tính cơ bản khi thao tác bộ nhớ Flash.
• Table Reads and Table Writes
Theo thứ tự đọc và viết dữ liệu cho phép vi xử lý di chuyển các byte giữa không
gian bộ nhớ chương trình và dữ liệu trong RAM thông qua: Table Reads and Table
Writes. Nhưng do bộ nhớ chương trình có độ rông 16bit còn bộ nhớ Ram chỉ là 8
bit nên để di chuyển dữ liệu giữa chúng cần thanh ghi 8bit (TABLAT):
Bảng đọc hoạt động lấy ra dữ liệu từ bộ nhớ chương trình đưa chúng tới khoảng
nhớ của RAM.:
Bảng viết hoạt động lưu trữ dữ liệu từ bộ nhớ dữ liệu htông qua đó giữ trong bộ
nhớ chương trình:
Vi điều khiển Pic
Phạm Văn Cường - Hoàng Văn Quân. Lớp ĐKTĐ1-K49 20
• Control Registers
Có bốn thanh ghi điều khiển:
• EECON1 register
• EECON2 register
• TABLAT (TABLE LATCH ) register
• TBLPTR(TABLE POINTER) registers
Ta đưa ra thanh ghi EECON1 ví dụ:
Bit 7 (EEPGD): bit lựa chọn bộ nhớ Flash và bộ nhớ dữ liệu EEPROM
− Giá trị 1:Cổng vào cho bộ nhớ Flash.
− Giá trị 0: Cổng vào cho bộ nhớ EEPROM.
Bit 6 (CFGS): bit lựa chọn bộ nhớ Flash , bộ nhớ dữ liệu EEPROM hoặc thanh
ghi cấu hình (Configuration register):
− Giá trị 1:Cổng vào cho thanh ghi cấu hình.
− Giá trị 0: Cổng vào cho bộ nhớ EEPROM hoặc bộ nhớ Flash .
Bit 5 (Unimplemented): mang giá trị “0”
Bit 4 (FREE): bit cho phép xóa bộ nhớ Flash theo hàng:
− Giá trị 1: Xoá bộ nhớ chương trình theo địa chỉ hàng bởi
TBLPTR trên cơ sỏ lệnh WR kế tiếp.
− Giá trị 0: Chỉ thực hiện hoạt động viết.
Bit 3 (WRERR): bit cờ để báo lỗi trren bộ nhớ Flash và bộ nhớ dữ liệu
EEPROM.
− Giá trị 1: Một hoạt động viết kết thúc sớm.
− Giá trị 0: Hoạt động viết được hoàn tất.
Bit 2 (WREN): bít cho phép hoạt động viết trên bộ nhớ Flash và bộ nhớ dữ liệu
EEPROM.
− Giá trị 1: Cho phép viết theo chu kỳ trên bộ nhớ Flash và bộ nhớ
dữ liệu EEPROM.
− Giá trị 1: Ngăn cản viết theo chu kỳ trên bộ nhớ Flash và bộ nhớ
dữ liệu EEPROM.
Bit 1 (WR): bit điều khiển hoạt động viết.
− Giá trị 1: Bắt đầu chu kỳ xóa/viết dữ liệu trên bộ nhớ dữ liệu
EEPROM hoặc bộ nhớ chương trình.
− Giá trị 0: Chu kỳ viết trên bộ nhớ EEPROM hoàn tất.
Bit 0 (RD): Bit điều khiển hoạt động đọc.
− Giá trị 1: Bắt đầu hoạt động đọc dữ liệu EEPROM.
− Giá trị 0: Chưa bắt đầu hoạt động đọc dữ liệu.
Ta có thể xác định hoặc điều khiển các bit 0 và bit 1 nhờ phần mềm.
Vi điều khiển Pic
Phạm Văn Cường - Hoàng Văn Quân. Lớp ĐKTĐ1-K49 21
• Reading the Flash Program Memory
Khi đọc dữ liệu chúng ta sử dụng cấu trúc lệnh TBLRD để lấy dữ liệu từ bộ nhớ
tới bộ nhớ RAM. Hoạt động theo hình sau:
• Erasing Flash Program Memory
Việc thực hiện xoá dữ liệu có thể thông qua người lập trình hoặc thông qua điều
khiển ISCP. Chúng ta có thể xoá khối nhỏ nhất 32 từ tới 64 byte, có khả nưng cho
ta xoá khối lớn nhưng thông qua cổng điều khiển. Hoạt đông này được hỗ trợ từ
thanh ghi EECON1.
• Writing to Flash Program Memory
Ta có thể thực hiện viết dữ liệu từ bên trong để tải dữ liệu cần thiết tới bộ nhớ.
khả năng viết có thể từ 16 từ tới 32 byte và thông qua bảng viết với hỗ trợ khoảng
32 thanh ghi cho lập trình.
• Flash Program Operation During Code Protection
Vi điều khiển Pic
Phạm Văn Cường - Hoàng Văn Quân. Lớp ĐKTĐ1-K49 22
Bộ nhớ dữ liệu EEPROM (Data EEPROM Memory)
Dữ liệu EEPROM là một mảng bộ nhớ bất biến được phân chia từ bộ nhớ RAM
và bộ nhớ chương trình, dược dùng để lưu trữ lâu dài dữ liệu chương trình. Nó coi là
ánh xạ có hướng tới không gian bộ nhớ chương trình nhưng lại là địa chỉ vô hướng
thong qua thanh ghi SFRs. Bộ nhớ EEPROM có khả năng đọc và viết trong quá trình
hoạt đông thông qua khoảng điên áp VDD.
Năm thanh ghi SFRs được sử dụng để đọc và viết dữ liệu bộ nhớ EEPROM gồm:
EECON1, EECON2, EEDATA, EEADR.
Khi có giao diện tới khối dữ liệu bộ nhớ thì EEDATA nhiệm vụ giữ dữ liệu 8bit để
đọc viết còn thanh ghi EEADR là để chốt địa chỉ EEPROM cho phép truy nhập..
Một byte được viết ngay lập tức xoá tai vị trí đó và viết dữ liệu mới, quá trình này
được điều khiển bới bộ đếm thời gian on-Chip.
• Thanh ghi EEADR (EEADR Register)
Chức năng thanh ghi này dùng dể đưa địa chỉ dữ liệu trong hoạt động đọc/viết.
Thanh ghi này độ rộng 8 bit có khả năng quản lý bộnhớ rộng 256byte(00h-FFh).
• EECON1 and EECON2 Registers
Cả hai thanh ghi này dùng để điều khiển truy nhập dữ liệu EEPROM, hoạt động
thanh ghi này hoàn toàn tương tự như các thanh gi điều khiển truy nhập bộ nhớ
chương trình nhưng ở đây là để điều khiển truy nhập dữ liệu EEPROM. Chúng có
cấu trúc tương tự nhau, cấu trúc thanh ghi EECON1 chúng ta có phần bộ nhớ Flash.
• Reading the Data EEPROM Memory
Quá trình đọc dữ liệu nhờ thanh ghi EEDATA, thanh ghi này sẽ giữ giá trị cần đọc
tới khi nó được viết bới người sử dụng. Nhưng để đọc dược dữ liệu người sử dụng
phải viết dữ liệu lên thanh ghi EEADR, xoá bit điều khiển EEPGD Thuộc thanh gi
EECON1, sau dó set bit điều khiển EECON.
• Writing to the Data EEPROM Memory
Quá trình viết dữ liệu vào bộ nhớ EEPROM trước tiên là nạp địa chỉ vào thanh ghi
EEADR, sau đó viết dữ liệu lên thanh ghi EEDATA.
• Kiểm tra lại quá trình viết dữ liệu (Write Verify)
Hoạt đông này phụ thuộc vào từng ứng dụng và nó đảm bảo ta có bài lập trình tốt.
• Operation During Code-Protect
• Protection Against Spurious Write
• Using the Data EEPROM
1.2.2. 8 x 8 HARDWARE MULTIPLIER
Tất cả các thiết bị Pic 18Fxxxx đều có bộ nhân phần cứng giống như một phần ALU.
Bộ nhân có hình thức nhân không đấu và cho kết quả 16 bit lưu trữ trong thanh ghi kết
quả PRODH:PRODL. Hoạt động bộ nhân không ảnh hưởng gì tới các cờ của thanh ghi
trạng thái STATUS.
Hoạt động bộ nhân cho phép trong một chu kì lệnh góp phần nâng cao tốc độ tính
toán và giảm bớt kích thước thuật toán giúp Pic18 sử dụng nhiều ứng dụng hơn trong
phần cứng và phần mềm.
Vi điều khiển Pic
Phạm Văn Cường - Hoàng Văn Quân. Lớp ĐKTĐ1-K49 23
1.2.3. Ngắt (Interrupts)
Dòng Pic18Fxxxx này cung cấp cho người sử dụng nhiều nguồn ngắt và một đăc
trưng ưu tiên ngắt là hầu hết các ngắt đều có cả mức ưu tiên cao và thấp. Ngắt ưu tiên
cao ở địa chỉ 0008h, ngắt ưu tiên thấp ở địa chỉ 0018h. Những ngắt ưu tiên cao thực
hiện ngắt còn các ngắt ưu tiên thấp phải được gọi trong chương trình.
Có tất cả mười thanh ghi sử dụng dể điều khiển hoạt dộng ngắt gồm:
• RCON
• INTCON
• INTCON2
• INTCON3
• PIR1, PIR2
• PIE1, PIE2
• IPR1, IPR2
Nói chung các nguồn ngắt có 3 bit dể điều khiển hoạt động ngắt;
• Flag bit : để xác định sự kiện ngắt xảy ra.
• Enable bit : Cho phép thực hiện ngắt tại địa chỉ Flag bit trỏ tới.
• Priority bit : Để chọn mức ưu tiên cho ngắt
Ngoài ra ở các thanh ghi chức năng cụ thể phục vụ cho các ngắt thì có các bit riêng
với các chức năng giúp người lập trình có thể quản lý và sử dụng các ngắt hiệu quả.
Sơ đồ trạng thái Logic các ngắt có thể mô tả :
Hình 1.10 Pic 18 Interrup logic
Vi điều khiển Pic
Phạm Văn Cường - Hoàng Văn Quân. Lớp ĐKTĐ1-K49 24
Bây giờ chúng ta sẽ tìm hiểu cấu trúc mọt số thanh ghi điển hình sử dụng phục vụ
hoạt động ngắt:
• INTCON Registers
Thanh ghi này cho phép dọc ghi các ngắt và cho phép ưu tiên ngắt có cờ Flag bit.
INTCON 1 Registers
bit 7 (GIE/GIEH): bit cho phép ngắt toàn cục.
• Khi IPEN = 0:
− Giá trị 1: Cho phép toàn bộ hoạt động ngắt.
− Giá trị 0: Không thực hiện toàn bộ hoạt động ngắt.
• Khi IPEN = 1:
− Giá trị 1: Cho phép toàn bộ hoạt động ngắt với mức ưu tiên
cao.
− Giá trị 0: Không thực hiện toàn bộ hoạt động ngắt từ ngoại vi.
bit 6 (PEIE/GIEL): bit cho phép các ngắt từ ngoại vi thực hiện.
• Khi IPEN = 0:
− Giá trị 1: Cho phép toàn bộ hoạt động ngắt từ ngoại vi.
− Giá trị 0: Không thực hiện toàn bộ hoạt động ngắt từ ngoại vi.
• Khi IPEN = 1:
− Giá trị 1: Cho phép toàn bộ hoạt động ngắt từ ngoại vi với
mức ưu tiên thấp.
− Giá trị 0: Không thực hiện toàn bộ hoạt động ngắt từ ngoại vi
với mức ưu tiên thấp.
bit 5 (TMR0IE): bit cho phép ngắt báo tràn TMR0
− Giá trị 1: Cho phép ngắt báo tràn TMR0.
− Giá trị 0: Không cho phép ngắt báo tràn TMR0.
bit 4 (INT0IE): bit cho phép ngắt ngoài INT0
− Giá trị 1: Cho phép ngắt ngoài INT0 .
− Giá trị 0: Không cho phép ngắt ngoài INT0
bit 3 (RBIE): bit cho phép thay đổi RB Port
− Giá trị 1: Cho phép ngắt thay đổi RB Port .
− Giá trị 0: Không cho phép ngắt thay đổi RB Port .
bit 2 (TMR0IF): bit cờ ngắt báo trànTMR0
− Giá trị 1: thanh ghi TMR0 xảy ra tràn (có thể xoá bằng phần
mềm).
− Giá trị 0: Không xảy ra tràn thanh ghi TMR0.
bit 1 (INT0IF): bit cờ báo ngắt ngoài INT0
Vi điều khiển Pic
Phạm Văn Cường - Hoàng Văn Quân. Lớp ĐKTĐ1-K49 25
− Giá trị 1: xảy ra ngắt ngoài INT0 (có thể xoá bằng phần
mềm).
− Giá trị 0: Không xảy ra ngắt ngoài INT0.
bit 0 (RBIF): bit cờ báo thay đổi RB Port
− Giá trị 1: có thay đổi trạng thái của chân mang giá trị nhỏ nhất
của RB(có thể xoá bằng phần mềm).
− Giá trị 0: Không có thay đổ trạng thái các chân RB.
INTCON 2 Registers
bit 7 ( RBPU ): bit cho phép kéo lên cổng PORT B.
− Giá trị 1: toàn bộ PORT B không được kéo lên.
− Giá trị 0: Cho phép toàn bộ PORT B được kéo lên bơỉi một
giá trị cổng chốt riêng lẻ..
bit 6 (INTEDG0): bit lựa chọn biên ngắt ngoài số 0.
− Giá trị 1: tăng biên độ ngắt.
− Giá trị 0: giảm biên độ ngắt
bit 5 (INTEDG1): bit lựa chọn biên ngắt ngoài số 1.
− Giá trị 1: tăng biên độ ngắt.
− Giá trị 0: giảm biên độ ngắt
bit 4 (INTEDG2): bit lựa chọn biên ngắt ngoài số 2.
− Giá trị 1: tăng biên độ ngắt.
− Giá trị 0: giảm biên độ ngắt
bit 3 (Unimplemented): mang giá trị “0”
bit 2 (TMR0IP): bit ưu tiên ngắt báo tràn TMR0
− Giá trị 1: mức ưu tiên cao
− Giá trị 0: mức ưu tiên thấp.
bit 1 (Unimplemented): mang giá trị “0”
bit 0 (RBIP): bit ưu tiên ngắt thay đổi RB Port
− Giá trị 1: mức ưu tiên cao
− Giá trị 0: mức ưu tiên thấp.
INTCON 3 Registers
Vi điều khiển Pic
Phạm Văn Cường - Hoàng Văn Quân. Lớp ĐKTĐ1-K49 26
bit 7 (INT2IP): bit ưu tiên ngắt ngoài INT2.
− Giá trị 1: mức ưu tiên cao
− Giá trị 0: mức ưu tiên thấp.
bit 6 (INT1IP): bit ưu tiên ngắt ngoài INT1.
− Giá trị 1: mức ưu tiên cao
− Giá trị 0: mức ưu tiên thấp.
bit 5 (Unimplemented): mang giá trị “0”
bit 4 (INT2IE): bit cho phép ngắt ngoài INT 2.
− Giá trị 1: Cho phép ngắt ngoài INT2 thực hiện.
− Giá trị 0: Không cho phép ngắt ngoài INT2 thực hiện.
bit 3 (INT1IE): bit cho phép ngắt ngoài INT 1.
− Giá trị 1: Cho phép ngắt ngoài INT1 thực hiện.
− Giá trị 0: Không cho phép ngắt ngoài INT1 thực hiện.
bit 2 (Unimplemented): mang giá trị “0”
bit 1 (INT2IF): bit cờ báo ngắt ngoài INT2
− Giá trị 1: xảy ra ngắt ngoài INT2 (có thể xoá bằng phần
mềm).
− Giá trị 0: Không xảy ra ngắt ngoài INT2.
bit 0 (INT1IF): bit cờ báo ngắt ngoài INT1
− Giá trị 1: xảy ra ngắt ngoài INT1 (có thể xoá bằng phần
mềm).
− Giá trị 0: Không xảy ra ngắt ngoài INT1.
• PIR Registers
Các thanh ghi này xác định cờ ngắt cho thiết bị ngoại vi. Cùng lúc có hai thanh
ghi phục vụ cho hai thiết bị ngoại vi là PIR1 và PIR2.
PIR1 Registers
bit 7 (PSPIF): bit cờ thực hiện ngắt khi đọc/viết cổng song song phụ thuộc
(Parallel Slave Port)
− Giá trị 1: hoạt động đọc hoặc viết có thể dưa tới(có thể xoá bằng
phần mềm)
− Giá trị 0: Không có hoạt dộng đọc viết.
bit 6 (ADIF): A/D Converter Interrupt Flag bit
− Giá trị 1: Một hoạt động chuyển đổi A/D hoàn tất (có thể xoá bởi
phần mềm).
− Giá trị 0 : Hoạt động chuyển đổi A/D chưa hoàn tất.
bit 5 (RCIF): bit cờ báo ngắt nhận EUSART .
Vi điều khiển Pic
Phạm Văn Cường - Hoàng Văn Quân. Lớp ĐKTĐ1-K49 27
− Giá trị 1:EUSART nhận từ bộ đệm và RCREG là đầy(được xoá
khi RCREG được đọc)
− Giá trị 0: EUSART nhận từ bộ đệm là rỗng.
bit 4 (TXIF): bit cờ báo ngắt việc truyền từ EUSART
− Giá trị 1:EUSART truyền tới bộ đệm và TXREG là đầy(được xoá
khi TXREG được viết)
− Giá trị 0: EUSART nhận từ bộ đệm là rỗng.
bit 3 ( SSPIF): bit cờ báo ngắt cổng Master Synchronous Serial Port
− Giá trị 1:Hoạt động truyền/nhận hoàn tất (có thể xóa bởi phần
mềm)
− Giá trị 0:đang đợi truyền nhận.
bit 2 (CCP1IF): bit cờ báo ngắt CCP1
• Lựa chọn kiểu Capture :
− Giá trị 1: thanh ghi TMR1 theo kiểu capture xảy ra (phải xoá bởi
phần mềm)
− Giá trị 0: Không xảy ra kiểu capture trên với thanh ghi TMR1 .
• Lựa chọn kiểu Compare :
− Giá trị 1: thanh ghi TMR1 theo kiểu compare xảy ra (phải xoá bởi
phần mềm)
− Giá trị 0: Không xảy ra kiểu compare trên với thanh ghi TMR1 .
• Lựa chọn kiểu PWM: không sử dụng kiểu lựa chon này.
bit 1 (TMR2IF):bit cờ báo ngắt liên kếtTMR2 tới PR2
− Giá trị 1:Xảy ra liên kết TMR2 tới PR2 (phải được xoá bởi phần
mềm)
− Giá trị 0:Không xảy ra liên kết TMR2 tới PR2.
bit 0 (TMR1IF): bit cờ báo ngắt trànTMR1
− Giá trị 1: thanh ghi TMR1 đã tràn (phải được xoá bởi phần mềm)
− Giá trị 0: Không có tràn trên thanh ghiTMR1.
PIR 2 Register
bit 7 (OSCFIF): bit cờ báo ngắt khi có lỗi bộ dao động Oscillator
− Giá trị 1:thiết bị bộ dao động lỗi, xung đầu vào tác động thay đổi tới
INTOSC (phải được xóa bởi phần mềm).
− Giá trị 0:Xung thiết bị hoạt động.
bit 6 (CMIF): Bit cờ báo ngắt bộ so sánh.
− Giá trị 1: Đầu vào bộ so sánh là thay đổi (phải xoá bởi phần mềm).
− Giá trị 0: Không có thay đổi đầu vào bộ so sánh.
bit 5 (Unimplemented): mang giá trị ‘0’
Vi điều khiển Pic
Phạm Văn Cường - Hoàng Văn Quân. Lớp ĐKTĐ1-K49 28
bit 4 (EEIF):bit cờ báo ngắt hoạt động viết dữ liệu bộ nhớ EEPROM/Flash
− Giá trị 1: Hoạt động viết hoàn tất (phải xoá bởi phần mềm).
− Giá trị 0: Hoạt động viết chưa hoàn tất hoặc chưa bắt đầu.
bit 3 (BCLIF): bit cờ báo ngắt có xung đột Bus
− Giá trị 1: xảy ra xung đột trên Bus (phải xoá bởi phần mềm)
− Giá trị 0: Không xảy ra xung đột Bus.
bit 2 (HLVDIF): Bit cờ báo ngắt có dò điện áp (High/Low-Voltage)
− Giá trị 1: điều kiện xảy ra điện áp mức cao/thấp (hướng xavs địng bởi
VDIRMAG bit, HLVDCON)
− Giá trị 0: Không xảy ra với mức điện áp cao/thấp.
bit 1 (TMR3IF): bit cờ báo tràn TMR3
− Giá trị 1: Có tràn trên thanh ghi TMR3 (phải xóa bởi phần mềm)
− Giá trị 0: Không có tràn thanh ghi TMR3.
bit 0 (CCP2IF): bit cờ báo ngắt trên CCP2
• Lựa chọn kiểu Capture :
− Giá trị 1: thanh ghi TMR1 theo kiểu capture xảy ra (phải xoá bởi
phần mềm)
− Giá trị 0: Không xảy ra kiểu capture trên với thanh ghi TMR1 .
• Lựa chọn kiểu Compare :
− Giá trị 1: thanh ghi TMR1 theo kiểu compare xảy ra (phải xoá bởi
phần mềm)
− Giá trị 0: Không xảy ra kiểu compare trên với thanh ghi TMR1 .
• Lựa chọn kiểu PWM: không sử dụng kiểu lựa chon này.
• PIE Registers
Giống như các thanh ghi PIR nhưng thanh ghi PIE dùng cho phép ngắt ở thiết
bị ngoại vi và cũng gồm hai thanh ghi PIE1 và PIE2.
PIE1 Registers
bit 7 (PSPIE): bit cho phép ngắt khi đọc/viết qua cổng song song phụ thuộc
− Giá trị 1:cho phép ngắt khi đọc/viết qua cổng sông song phụ thuộc
− Giá trị 0:không cho phép ngắt khi đọc/viết qua cổng sông song phụ thuộc
bit 6 (ADIE): Bit cho phép ngắt khi có chuyển đổi A/D
− Giá trị 1: cho phép ngắt khi có chuyển đổi A/D
− Giá trị 0: Không cho phép ngắt khi có chuyển đổi A/D
bit 5 (RCIE): Bit cho phép ngắt khi ÊUSART nhận
− Giá trị 1: cho phép ngắt khi EUSART nhận
− Giá trị 0: Không cho phép ngắt khi EUSART nhận
bit 4 (TXIE):Bit cho phép ngắt khi EUSART truyền
Vi điều khiển Pic
Phạm Văn Cường - Hoàng Văn Quân. Lớp ĐKTĐ1-K49 29
− Giá trị 1: cho phép ngắt khi EUSART truyền
− Giá trị 0: Không cho phép ngắt khi EUSART truyền
bit 3 (SSPIE): bit cho phép ngắt khi giao tiếp cổng Master Synchronous
− Giá trị 1: cho phép ngắt khi giao tiếp cổng Master Synchronous
− Giá trị 0: Không cho phép ngắt khi giao tiếp cổng Master Synchronous.
bit 2 (CCP1IE): Bit cho phép ngắt CCP1
− Giá trị 1: cho phép ngắt CCP1
− Giá trị 0: Không cho phép ngắt CCP1 .
bit 1 (TMR2IE): bit cho phép ngắt khi có liên kết TMR2 tới PR2.
− Giá trị 1: cho phép ngắt khi có liên kết TMR2 tới PR2.
− Giá trị 0: Không cho phép ngắt khi có liên kết TMR2 tới PR2.
bit 0 (TMR1IE): bit cho phép ngắt khi có tràn TMR1
− Giá trị 1: cho phép ngắt khi có tràn TMR1
− Giá trị 0: Không cho phép ngắt khi có tràn TMR1
PIE2 Registers
bit 7 (OSCFIE): bit cho phép ngắt khi có lỗi bộ dao động Oscillator
− Giá trị 1:cho phép
− Giá trị 0:Không cho phép
bit 6 (CMIE): Bit cho phép báo ngắt bộ so sánh.
− Giá trị 1: cho phép .
− Giá trị 0: Không cho phép .
bit 5 (Unimplemented): mang giá trị ‘0’
bit 4 (EEIE):bit cho phép báo ngắt hoạt động viết dữ liệu bộ nhớ EEPROM/Flash
− Giá trị 1: cho phép
− Giá trị 0: Không cho phép
bit 3 (BCLIE): bit cho phép báo ngắt có xung đột Bus
− Giá trị 1: cho phép
− Giá trị 0: Không cho phép.
bit 2 (HLVDIE): Bit cho phép báo ngắt có dò điện áp (High/Low-Voltage)
− Giá trị 1: cho phép.
− Giá trị 0: Không cho phép.
bit 1 (TMR3IE): bit cho phép báo tràn TMR3
− Giá trị 1: cho phép.
− Giá trị 0: Không cho phép.
bit 0 (CCP2IE): bit cho phép báo ngắt trên CCP2
− Giá trị 1: cho phép.
− Giá trị 0: Không cho phép.
Vi điều khiển Pic
Phạm Văn Cường - Hoàng Văn Quân. Lớp ĐKTĐ1-K49 30
• IPR Registers
Giống như các thanh ghi PIR,PIE để phuc vụ hoạt động ngắt, thanh ghi IPR
dùng xác định giá trị ưu tiên cho phép ngắt ở thiết bị ngoại vi và cũng gồm hai
thanh ghi IPR1 và IPR2.
IPR1 Registers
bit 7 (PSPIP): bit ưu tiên ngắt khi đọc/viết qua cổng sông song phụ thuộc
− Giá trị 1:mức ưu tiên cao.
− Giá trị 0:mức ưu tiên thấp.
bit 6 (ADIP): Bit ưu tiên ngắt khi có chuyển đổi A/D
− Giá trị 1:mức ưu tiên cao.
− Giá trị 0:mức ưu tiên thấp.
bit 5 (RCIE): Bit cho phép ngắt khi ÊUSART nhận
− Giá trị 1:mức ưu tiên cao.
− Giá trị 0:mức ưu tiên thấp.
bit 4 (TXIP):Bit ưu tiên ngắt khi EUSART truyền
− Giá trị 1:mức ưu tiên cao.
− Giá trị 0:mức ưu tiên thấp.
bit 3 (SSPIP): bit ưu tiên ngắt khi giao tiếp cổng Master Synchronous
− Giá trị 1:mức ưu tiên cao.
− Giá trị 0:mức ưu tiên thấp.
bit 2 (CCP1IP): Bit ưu tiên ngắt CCP1
− Giá trị 1:mức ưu tiên cao.
− Giá trị 0:mức ưu tiên thấp.
bit 1 (TMR2IP): bit ưu tiên ngắt khi có liên kết TMR2 tới PR2.
− Giá trị 1:mức ưu tiên cao.
− Giá trị 0:mức ưu tiên thấp.
bit 0 (TMR1IP): bit ưu tiên ngắt khi có tràn TMR1
− Giá trị 1:mức ưu tiên cao.
− Giá trị 0:mức ưu tiên thấp.
IPR2 Registers
Vi điều khiển Pic
Phạm Văn Cường - Hoàng Văn Quân. Lớp ĐKTĐ1-K49 31
bit 7 (OSCFIP): bit ưu tiên ngắt khi có lỗi bộ dao động Oscillator
− Giá trị 1:mức ưu tiên cao.
− Giá trị 0:mức ưu tiên thấp.
bit 6 (CMIP): Bit ưu tiên báo ngắt bộ so sánh.
− Giá trị 1:mức ưu tiên cao.
− Giá trị 0:mức ưu tiên thấp.
bit 5 (Unimplemented): mang giá trị ‘0’
bit 4 (EEIP):bit ưu tiên báo ngắt hoạt động viết dữ liệu bộ nhớ EEPROM/Flash
− Giá trị 1:mức ưu tiên cao.
− Giá trị 0:mức ưu tiên thấp.
bit 3 (BCLIP): bit ưu tiên báo ngắt có xung đột Bus
− Giá trị 1:mức ưu tiên cao.
− Giá trị 0:mức ưu tiên thấp.
bit 2 (HLVDIP): Bit ưu tiên báo ngắt có dò điện áp (High/Low-Voltage)
− Giá trị 1:mức ưu tiên cao.
− Giá trị 0:mức ưu tiên thấp.
bit 1 (TMR3IP): bit ưu tiên báo tràn TMR3
− Giá trị 1:mức ưu tiên cao.
− Giá trị 0:mức ưu tiên thấp.
bit 0 (CCP2IP): bit ưu tiên báo ngắt trên CCP2
− Giá trị 1:mức ưu tiên cao.
− Giá trị 0:mức ưu tiên thấp.
• RCON Register
Thanh ghi này có bit cờ (Flag bit) sử dụng để xác định ngưyên nhân Reset và
khởi dộng các trạng thái Idle và Sleep. Thanh ghi này chứa bit IPEN cho phép
mức ưu tiên ngắt.
bit 7 (IPEN): bit cho phép ưu tiên ngắt
− Giá trị 1:cho phép mức ưu tiên ngắt
− Giá trị 0: không cho phép mức ưu tiên ngắt
bit 6 (SBOREN): Bit cho phép lập trình phần mềm BOR
• Với BOREN1:BOREN0 = 01:
− Giá trị 1 : Cho phép BOR
− Giá trị 0 : Không cho phép BOR
• Với BOREN1:BOREN0 = 00,10or11 không cho phép và mang giá trị “0”
bit 5 (Unimplemented): mang giá trị ‘0’
bit 4 (RI): bit cờ của cấu trúc lệnh RESET
− Giá trị 1:Không thực hiện cấu trúc lệnh RESET
− Giá trị 0: không thực hiện cấu trúc lệnh RESET đẻ RESET thiết bị.
Vi điều khiển Pic
Phạm Văn Cường - Hoàng Văn Quân. Lớp ĐKTĐ1-K49 32
bit 3 (TO ):Bit cờ báo bộ định thời Watchdog Time-out
− Giá trị 1:Cấp nguồn điện bởi cấu trúc lệnh CLRWDT hoặc SLEEP.
− Giá trị 0: Xảy ra trên bộ định thời WDT time-out .
bit 2 (PD): Bit cờ báo dò mất nguồn
− Giá trị 1:Cấp nguồn điện bởi cấu trúc lệnh CLRWDT .
− Giá trị 0: Thực hiện thiết lập bởi cấu trúc lệnh SLEEP.
bit 1 (POR): bit dể RESET trậng thái nguồn khi chạy
− Giá trị 1:Không xảy ra RESET nguồn (được thiét lập bởi vi chương trình) .
− Giá trị 0:Xảy ra RESET nguồn(cần phải thiết lập bởi phần mềm sau khi
RESET xảy ra)
bit 0 (BOR): Bit cho biết trạng thái RESETyếu nguồn
− Giá trị 1:Không xảy ra RESET yếu nguồn (được thiét lập bởi vi chương
trình) .
− Giá trị 0:Xảy ra RESET yếu nguồn(cần phải thiết lập bởi phần mềm sau
khi RESET xảy ra)
Ngoài ra Pic18 cũng cung cấp cho ta các công cụ phục vụ ngắt khác như :
• INTx Pin Interrupts
• TMR0 Interrupt
• PORTB Interrupt-on-Change
• Context Saving During Interrupts
1.2.4. Cổng vào ra (I/O Port)
Như đã tìm hiểu cấu trúc chân Pic18F4520 loại PDIP chúng ta biết có tất cả 5
cổng vào ra PortA, PortB, Port C, PortD, PortE. Việc sử dụng lựa chọn các cổng
vào ra này phụ thuộc nhiều vào các ứng dụng và thiết bị ngoại vi. Mỗi cổng này
đều gồm ba thanh ghi hoạt động chính đó là:
− Thanh ghi TRIS (thanh ghi dữ liệu có hướng)
− Thanhghi của chính các cổng (PORT register)
− Thanh ghi LAT(thanh ghi chốt dữ liệu)
• PORTA, TRISA and LATA Registers
Port A là cổng vào ra hai hướng 8 bit. Thanh ghi TRISA dùng điều khiển dữ
liệu có hướng. Khi bit TRISA(=1) thì tương ứng các chân Port A là đầu vào, ngược
lại (=0) tương ứng các chân Port A là đầu ra.. Thanh ghi LATA kiểm soát hoạt
động đọc viết hiệu chỉnh của Port A. Cụ thể chức năng các chân của cổng này đã
nói chi tiết ở cấu trúc chân của vi điều khiển.
• PORTB, TRISB and LATB Registers
• PORTC, TRISC and LATC Registers
• PORTD, TRISD and LATD Registers
Về cơ bản Port B, PortC, PortD có nguyên tắc hoạt động giống PortA. Còn các
chức năng cơ bản khác trong sơ đồ chân phần cứng đã giải thích cụ thể. Riêng
PortD có thêm sự đặc biệt do nó có thể chuyển tiếp thành cổng song song phụ
thuộc(PSP).
• PORTE, TRISE and LATE Registers
Port E có độ rộng 4 bit các chân chúng ta đã tìm hiểu ở trên. Hoạt động thanh
ghi TRISE cũng tươngtự như các thanh ghi có cùng chức năng ở các cổng khác.
Vi điều khiển Pic
Phạm Văn Cường - Hoàng Văn Quân. Lớp ĐKTĐ1-K49 33
bit 7 (IBF): bit báo trạng thái đầu vào bộ đệm đầy.
− Giá trị 1:Một từ đã được nhân và đang chờ CPU đọc.
− Giá trị 0: Không nhận một từ nào.
bit 6 (OBF): bit báo trạng thái đầu ra bộ đệm đầy
− Giá trị 1:đầu ra bộ đệm vẫn giữ dể viết một từ trước đó..
− Giá trị 0: Đầu ra bộ điệm đã đọc.
bit 5 (IBOV): bit lựa chọn kiểm tra dò tràn đầu vào bộ đệm
− Giá trị 1:xảy ra hoạt động viết khi mà một từ trước đó ở bộ đệm chưa
được đọc(cần xoá bởiphần mềm)
− Giá trị 0: Không xảy ra tràn.
bit 4 (PSPMODE): bit lựa chon kiểu cho cổng PSP
− Giá trị 1:hoạt động cổng PSP
− Giá trị 0: hoạt động như cổng vào ra thông thường.
bit 3 (Unimplemented): mang giá trị ‘0’
bit 2 (TRISE2): bít điều khiển hướng cho RE2
− Giá trị 1:đầu vào
− Giá trị 0: đầu ra
bit 1 (TRISE1): bít điều khiển hướng cho RE1
− Giá trị 1:đầu vào
− Giá trị 0: đầu ra
bit 0 (TRISE0): bít điều khiển hướng cho RE0
− Giá trị 1:đầu vào
− Giá trị 0: đầu ra
• Parallel Slave Port(PSP)
Đây có thể coi là sự thêm chức năng của các cổng vào ra nói chung. PSP được
chuyển đổi từ các chân PortD. PSP được điều khiển bởi 4 bit cao của thanh ghi
TRISE. Trong đó TRISE-PSPMODE coi là bít diều khiển cổng. PSP cũng
được tăng cường modul CCP nó có thể là giao diện có hướng tới một vi điều
khiển 8 bit.
1.2.5. Bộ định thời (Timer)
Timer0 Module
Modle này được coi có những đặc điểm sau:
• Có thể lựa chon phần mềm như một bộ định thời hoặc bộ đếm có thể là 8 bit
hoặc 16 bit.
• Có khả năng như thanh ghi đọc viết
• Riêng loại 8 bit có thẻ coi là bộ đếm lập trình bằng phần mềm
• Khả năng lựa chon xung nguồn(cả bên trong và bên ngoài)
Vi điều khiển Pic
Phạm Văn Cường - Hoàng Văn Quân. Lớp ĐKTĐ1-K49 34
• Lự chon giới hạn cho xung từ bên ngoài
• Ngắt - mở - tràn
Đặc trưng cho Timer0 là thanh ghi T0CON
bit 7(TMR0ON): bit điều khiển đóng mỏ Timer0
− Giá trị 1:cho phép hoạt động
− Giá trị 0: dừng hoạt động
bit 6 (T08BIT): bit điều khiển Timer0 8-Bit/16-Bit
− Giá trị 1:Timer0 cấu hình như 8-bit timer/counter
− Giá trị 0: Timer0 cấu hình như 16-bit timer/counter
bit 5 (T0CS): bit lựa chọn nguồn xung cho Timer0
− Giá trị 1:truyền trên chân T0CKI
− Giá trị 0: chu kỳ xung lệnh bên trong (CLKO)
bit 4 (T0SE): bit lựa chon giới hạn nguồn choTimer0
− Giá trị 1: truyền trên chân T0CKI thay đổi từ cao-thấp.
− Giá trị 0: truyền trên chân T0CKI thay đổi từ thấp-cao.
bit 3 (PSA): bit thiết lập bộ đếm gộp trước choTimer0
− Giá trị 1: không thiết lập bộ đệm gộp trước Timer0. Xung dầu vào Timer0
được chuyển hướng bởi bộ đệm gộp trước..
− Giá trị 0: thiết lập bộ đệm gộp trước Timer0. Xung dầu vào Timer0 trở
thành dầu ra bộ đệm gộp trước..
bit 2-0 (T0PS): bit lựa chon bộ đệm gộp trước cho Timer0
111 = 1:256 giá trị bộ đệm gộp trước
110 = 1:128 giá trị bộ đệm gộp trước
101 = 1:64 giá trị bộ đệm gộp trước
100 = 1:32 giá trị bộ đệm gộp trước
011 = 1:16 giá trị bộ đệm gộp trước
010 = 1:8 giá trị bộ đệm gộp trước
001 = 1:4 giá trị bộ đệm gộp trước
000 = 1:2 giá trị bộ đệm gộp trước
Timer1 module
Đặc trưng cơ bản của bộ định thời này gồm:
• Khả năng lựa chon bằng phần mềm giống như bộ định thời 16bit hoặc bộ
dếm.
• Khả năng như thanh ghi đọc viết được 8bit(TMR1H, TMR1L).
• Khả năng lựa chon nguồn xung bên trong qua bọ dao động Oscillator.
• Ngắt-Tràn
• Reset nhờ bộ tạo sự kiện dặc biệt CCP
Vi điều khiển Pic
Phạm Văn Cường - Hoàng Văn Quân. Lớp ĐKTĐ1-K49 35
• Cờ báo trạng thái xung thiết bị
Thanh ghi T1CON sử dụng điều khiển Timer1
bit 7 (RD16): bit cho phép lựa chọn các chế độ đọc/viết 16-Bit
− Giá tri 1: cho phép thanh ghi đọc/viết của Timer1 trong hoạt động như
một số 16 bit.
− Giá tri 0: cho phép thanh ghi đọc/viết của Timer1 trong hoạt động như
một số 8 bit.
bit 6 (T1RUN): Bit trạng thái hệ thống xung Timer1
− Giá tri 1: xung thiết bị là dẫn xuất từ bộ dao động Timer1.
− Giá tri 0: xung thiết bị là dẫn xuất từ mootj nguồn khác.
bit 5-4 (T1CKPS): bit lựa chọn xung đầu vào bộ đếm gộp trước cho
Timer1
11 = 1:8 Giá trị bộ đếm gộp trước
10 = 1:4 Giá trị bộ đếm gộp trước
01 = 1:2 Giá trị bộ đếm gộp trước
00 = 1:1 Giá trị bộ đếm gộp trước
bit 3 (T1OSCEN): bit cho phép bộ dao động Timer1
− Giá tri 1: Cho phép
− Giá tri 0: Dừng bộ dao động Timer1 .
bit 2 ( T1SYNC ): bit lựa chọn xung đồng bộ đầu vào bên ngoài cho Timer1
• Khi TMR1CS = 1:
− Giá tri 1: không phải xung đồng bộ đầu vào bên ngoài
− Giá tri 0: xung đồng bộ đầu vào bên ngoài
• Khi TMR1CS = 0: bit này không sử dụng và lúc này Timer1 sử dụng
nguồn xung từ bên trong
bit 1 (TMR1CS): bit lựa chọn nguồn xung cho Timer1
− Giá tri 1: nguồn xung từ bên ngoài qua chân RC0/T1OSO/T13CKI
− Giá tri 0: nguồn xung từ bên trong (Fosc/4)
bit 0 (TMR1ON): bit hoạt động Timer1
− Giá tri 1: Cho phép
− Giá tri 0: Dừng Timer1 .
Timer1 có thể hoạt động ở một trong 3 chế độ
•Bộ định thời (Timer)
• Bộ đếm đồng bộ (Synchronous Counter)
• Bộ đếm không đồng bộ(Asynchronous Counter)
Việc sử dụng Timer1 phụ thuộc vào việc sử dụng thanh thạo thanh ghi T1CON.
Vi điều khiển Pic
Phạm Văn Cường - Hoàng Văn Quân. Lớp ĐKTĐ1-K49 36
Timer2 Module
Đặc điểm nổi bật Timer2 gồm:
• Bộ định thời 8bit(TMR2) và thanh ghi ghi Period(PR2)
• Khả năng đọc và viết được.
• Lập trình phần mềm
• Ngắt trên TMR2 nhờ PR2
• Cài đặt khối xung cho modul MSSP
Timer 2 điều khiển hoạt động dựa thanh ghi T2CON
bit 7 (Unimplemented): mang giá trị ‘0’
bit 6-3 (T2OUTPS): bit lựa chọn đầu ra Timer2 sau khi dừng.
0000 = 1:1 sau khi dừng
0001 = 1:2 sau khi dừng
•
1111 = 1:16 sau khi dừng
bit 2 (TMR2ON): Bit hoạt dộng Timer2
− Giá tri 1: Cho phép
− Giá tri 0: Dừng Timer1 .
bit 1-0 (T2CKPS): bit chọn xung bộ đếm gộp trước cho Timer2
00 = bộ đếm gộp trước 1
01 = bộ đếm gộp trước 4
1x = bộ đếm gộp trước 16
Timer 3 Module
Đặc điểm Timer3 bao gồm:
• Lựa chon được hoạt động bằng phàn mềm giống như bộ đếm thời gian 16 bit.
• Khả năng đọc và viết được giống thanh ghi 8 bit(TMR3H-TMR3L).
• Lựa chọn các nguồn xung cả bên trong và ngoài nhờ bộ dao động
• Ngắt- Tràn
• Modul Reset trên CCP (đặc biệt với kết quả Trigger)
Timer 3 điều chỉnh nhờ thanh ghi T3CON
bit 7(RD16): (RD16): bit cho phép lựa chọn các chế độ đọc/viết 16-Bit
− Giá tri 1: cho phép thanh ghi đọc/viết của Timer1 trong hoạt động như
một số 16 bit.
Vi điều khiển Pic
Phạm Văn Cường - Hoàng Văn Quân. Lớp ĐKTĐ1-K49 37
− Giá tri 0: cho phép thanh ghi đọc/viết của Timer1 trong hoạt động như
một số 8 bit.
bit 6,3 (T3CCP): bit cho phép Timer3 và Timer1 liên kết CCPx modules
− Giá tri 1x : Timer3 là cấu hình nguồn xung capture/compare cho CCP
modules
− Giá tri 01: Timer3 là cấu hình nguồn xung capture/compare cho CCP2
modules, Timer1 là cấu hình nguồn xung capture/compare
cho CCP1 modules
− Giá tri 00 : Timer1 là cấu hình nguồn xung capture/compare cho CCP
modules
bit 5-4 ((T3CKPS): bit lựa chọn xung đầu vào bộ đếm gộp trước cho
Timer3
11 = 1:8 Giá trị bộ đếm gộp trước
10 = 1:4 Giá trị bộ đếm gộp trước
01 = 1:2 Giá trị bộ đếm gộp trước
00 = 1:1 Giá trị bộ đếm gộp trước
bit 2 ( T3SYNC ): bit điều khiển xung đồng bộ đầu vào bên ngoài cho Timer3
• Khi TMR3CS = 1:
− Giá tri 1: không phải xung đồng bộ đầu vào bên ngoài
− Giá tri 0: xung đồng bộ đầu vào bên ngoài
• Khi TMR3CS = 0: bit này không sử dụng và lúc này Timer3 sử dụng
nguồn xung từ bên trong
bit 1 (TMR3CS): bit lựa chọn nguồn xung cho Timer3
− Giá tri 1: nguồn xung từ bên ngoài từ bbộ dao động Timer1 hoặc
T13CKI
− Giá tri 0: nguồn xung từ bên trong (Fosc/4)
bit 0 (TMR1ON): bit hoạt động Timer1
− Giá tri 1: Cho phép
− Giá tri 0: Dừng Timer1 .
1.2.6. Bộ truyền nhận dữ liệu đồng bộ (EUSART-Enhanced Universal
Synchronous Asynchronous Receiver Transmitter)
Module thu phát đồng bộ và không đồng bộ (EUSART) là một trong hai module
vào ra nối tiếp .(Nói chung EUSART cũng được biết đến như giao diện truyền thông
nối tiếp hoặc SCL).EUSART có thể cấu hình như hệ thống không đồng bộ song công
mà nó có thể giao tiếp với thiết bị ngoại vi, như là các thiết bị đầu cuối và các máy tính
cá nhân. Nó cũng có thể được cấu hình như là chế độ bán song công, hệ thống đồng
bộ có thể giao tiếp với thiết bị ngoại vi, như là bộ A/D hoặc D/A, và các EEPROMs
Module thu phát đồng bộ và không đồng bộ mở rộng USART được tích hợp , bao
gồm sự dò tốc độ baud tự động và hiệu chỉnh, tự động nhận biết quá trình nhận dữ liệu
và 12 bit kí tự ngắt truyền. Phù hợp với việc sử dụng hệ thống Bus kết nối cục bộ.
Module thu phát đồng bộ và không đồng bộ EUSART có thể được cấu hình theo
những phương thức sau :
• Chế độ dị bộ (song công) với:
− Tự động nhận kí tự
Vi điều khiển Pic
Phạm Văn Cường - Hoàng Văn Quân. Lớp ĐKTĐ1-K49 38
− Tự động hiệu chỉnh baud
− Truyền gián đoạn 12 bit
• Chế độ đồng bộ chính (song công toàn phần) với xung nhịp chọn.
• Chế độ đồng bộ phụ (bán song công ) với xung nhịp chọn
Các chân của EUSART được đặt ở Port C để cấu hình cho RC6/TX/CK và
RC7/RX/DT như là một EUSART.
• bit SPEN (RCSTA) được đặt bằng ( = 1)
• bit TRISC được đặt (= 1)
• bit TRISC được đặt (= 1)
Sự hoạt động cửa module EUSART mở rộng được điều khiển thông qua ba thanh
ghi sau:
• Thanh ghi điều khiển và trạng thái truyền (TXSTA)
• Thanh ghi điều khiển và trạng thái nhận (RCSTA)
• Điều khiển tốc độ truyền (BAUDCON).
Thanh ghi điều khiển và trạng thái truyền
Bit 7 CSRC : bit chọn nguồn clock
− Chế độ không đồng bộ: Không dùng.
− Chế độ đồng bộ:
1= Chế độ Master (clock được phát bên trong từ BRG)
0=Chế độ Slave (clock từ nguồn bên ngoài)
Bit 6 TX :Bit cho phép chế độ truyền 9 bit
1= Chọn truyền 9 bit
0= Chọn truyền 8 bit.
bit 5 TXEN: Bit cho phép truyền
1 = Cho phép truyền .
0 = Không cho phép truyền.
bit 4 SYNC: Bit chọn chế độ EUSART
1 = Chế độ đồng bộ
0 = Chế độ không đồng bộ.
bit 3 SENDB: Bit gửi kí tự gián đoạn
− Chế độ không đông bộ:
1 = Gửi kí tự ngắt đồng bộ ở lần truyền tiếp theo (được xóa bởi phần cứng
khi hoàn thành)
0 = Kí tự ngắt truyền xong.
− Chế độ đồng bộ : Không dùng.
bit 2 BRGH: Bit chọn tốc độ cao
Vi điều khiển Pic
Phạm Văn Cường - Hoàng Văn Quân. Lớp ĐKTĐ1-K49 39
− Chế độ không đồng bộ:
1 = Tốc độ cao
0 = Tốc độ thấp.
− Chế độ đồng bộ: Không sử dụng trong chế độ này.
bit 1 TRMT: Bit trạng thái thanh ghi dịch TSR.
1 = TSR rỗng.
0 = TSR đầy.
bit 0 TX9D: Dữ liệu của bit thứ 9 có thể là địa chỉ / dữ liệu hoặc địa chỉ.
THANH GHI ĐIỀU KHIỂN VÀ TRẠNG THÁI NHẬN.
bit 7 SPEN: Bit cho phép cổng truyền nối tiếp.
1 = Cho phép hoạt động (cấu hình RX/DT và TX/CK các chân này giống
các chân cổng vào nối tiếp)
0 = Không cho phép (được đặt khi Reset)
bit 6 RX9: Bit cho phép nhận 9 bit
1 = Chọn chế độ nhận 9 bit
0 = Chọn chế độ nhận 8 bit
bit 5 SREN: Bit cho phép nhận riêng rẽ.
− Chế độ không đồng bộ: Không sử dụng
− Chế độ đồng bộ – Master:
1 = Cho phép nhận riêng rẽ.
0 = Không cho phép riêng rẽ.
Bit này được xóa sau khi quá trình nhận hoàn thành.
− Chế độ đồng bộ – Slave: Không dùng chế độ này.
bit 4 CREN: Bit cho phép tiếp tục nhận.
− Chế độ không đồng bộ:
1 = Cho phép nhận.
0 = Không cho phép nhận.
− Chế độ đồng bộ:
1 = Cho phép nhận đến khi bit , CREN, được xóa (CREN overrides SREN)
0 = Không cho phép tiếp tục nhận.
bit 3 ADDEN: Cho phép đánh địa chỉ.
− Chế độ không đồng bộ nhận 9 bit (RX9 = 1):
1 = Cho phép đánh địa chỉ , cho phép ngắt nạp dữ liệu vào đệm khi RSR
được đặt.
0 = Không cho phép đánh địa chỉ, tất cả các byte được nhận và bit thứ 9
được được sử dụng như bit chẳn lẻ.
− Chế độ không đồng bộ nhận 8 bit (RX9 = 0):Không dùng.
bit 2 FERR: Bit báo lỗi khung truyền.
Vi điều khiển Pic
Phạm Văn Cường - Hoàng Văn Quân. Lớp ĐKTĐ1-K49 40
1 = Có lỗi(Có thể được xóa khi đọc thanh ghi RCREG và nhận giá tri byte tiếp
theo)
0 = Không có lỗi.
bit 1 OERR: Bit báo tràn.
1 = Lỗi tràn (Có thể được xóa khi xóa bit CREN)
0 = Không có lỗi tràn.
bit 0 RX9D: Dữ liệu của bit thứ 9.
Đây có thể là bit địa chỉ / dữ liệu hoặc bit chẵn lẻ và phải được tính toán bằng phần
cứng.
THANH GHI ĐIỀU KHIỂN TỐC ĐỘ TRUYỀN
bit 7 ABDOVF: Bit trạng thái tự động nhận tốc độ truyền.
1 = xảy ra tác động thanh ghi điều khiển tốc độ truyền trông các chế độ lựa chọn
phát hiện trạng thái tự động boud (phải xoá bởi phần mềm)
0 = không xảy ra
bit 6 RCIDL: Bit báo trạng thái nhận
1 = Không nhận
0 = Xảy ra quá trình nhận
bit 5 RXDTP: Bit xác định mức tích cực dữ liệu nhận
− Chế độ không đồng bộ:
1 = Dữ liệu nhận (RX) được đảo (mức tích cực thấp)
0 = Dữ liệu nhận (RX) không được đảo (mức tích cực cao)
− Chế độ đồng bộ:
1 = Dữ liệu (DT) được đảo (mức tích cực thấp)
0 = Dữ liệu (DT) không đảo (mức tích cực cao)
bit 4 TXCKP: Bit chọn trạng thái tích cực dữ liệu và xung nhịp.
− Chế độ không đồng bộ:
1 = Trạng thái không truyền (TX) là mức thấp.
0 = Trạng thái không truyền (TX) là mức cao.
− Chế độ đồng bộ:
1 = Trạng thái không hoạt động của clock (CK) là mức cao.
0 = Trạng thái không hoạt động của clock (CK) là mức thấp.
bit 3 BRG16: Bit cho phép thanh ghi phát tốc độ baud 16 bit.
1 = Cho phép thanh ghi phát tốc độ baud 16 bit – SPBRGH và SPBRG
0 = Cho phép thanh ghi phát tốc độ baud 8 bit – chỉ thanh SPBRG hoạt động,
SPBRGH không hoạt động.
bit 2 Không xác định : xem như bằng ‘0’
bit 1 WUE: Bit kích hoạt.
− Chế độ không đồng bộ:
1 = EUSART sẽ tiếp tục lấy mẫu trên chân RX – ngắt được tạo ra khi giảm; bit
này được xóa khi phần cứng tăng lên.
Vi điều khiển Pic
Phạm Văn Cường - Hoàng Văn Quân. Lớp ĐKTĐ1-K49 41
0 = Chân RX không được theo dõi hoặc tăng lên.
− Chế độ đồng bộ: Không dùng cho chế độ này.
bit 0 ABDEN: Bit cho phép tự động dò baud.
− Chế độ không đồng bộ:
1 = Cho phép đo tốc độ baud khi truyền kí tự tiếp theo. Cần nhận trường đồng bộ
(55h);Được xóa bởi phần cứng khi hoàn thành.
0 = Không đô tốc độ baud hoặc đã hoàn thành.
− Chế độ đồng bộ: Không sử dụng cho chế độ này.
Bộ phát tốc độ baud (BRG)
BRG là thanh ghi phát chuyên dụng 8 bit hoặc 16 bit được cung cấp trong chế đô
đồng bộ và không đồng bộ của EUSART. BRG được mặc định hoạt động ở chế độ 8
bit ; đặt BRG làm việc 16 bit dùng thanh ghi (BAUDCON ) để chọn chế độ 16 bit.
The SPBRGH:SPBRG là hai thanh ghi điều khiển chu kì của bộ đếm thời gian
chạy tự do. Trong chế độ không đồng bộ các bit BRGH (TXSTA) và BRG16
(BAUDCON) cũng điều khiển tốc độ baud.Trong chế độ đồng bộ, BRGH không
được dùng. Bảng 18-1 chỉ ra cách tính toán tốc độ baud cho các chế độ EUSART
khác nhau mà nó chỉ áp dụng cho chế độ chính (tạo xung nhịp bên trong).
Từ tốc độ baud yêu cầu và tần số thạch anh Fosc , giá trị nguyên gần nhất được tính
cho thanh ghi SPBRGH:SPBRG có thể tính toán dựa vào kết quả của bảng 18-1. Từ
đó các lỗi về tốc độ baud có thể xác định. Một ví dụ về tính tốc độ baud trong ví dụ
18-1. Tốc độ mặc định và lỗi giá trị trong các chế độ không đồng bộ khác nhau được
chỉ ra trong bảng 18-2. Đó có thể là thuân lợi cho việc sử dụng tốc độ baud cao
(BRGH = 1) hoặc 16-bit BRG để làm giảm lỗi tốc độ baud, hoặc có thể đạt được tốc
độ baud thấp khi sử dụng bộ dao động có tần số cao. Ghi lại giá trị mới vào thanh ghi
SPBRGH:SPBRG bằng cách reset BRG (hoặc xóa). Bộ BRG đưa ra tốc độ baud mới
trước thời gian tràn.
• Hoạt động ở chế độ quản lí nguồn.
Bộ tạo xung được sử dụng để phát ra tốc độ baud mong muốn. Khi hoạt động ở chế
độ quản lí nguồn, nguồn xung nhịp mới có thể hoạt động ở các tần số khác nhau .
Bằng cách thay đổi giá trị trong cặp thanh ghi SPBRG.
VÍ DỤ: Dữ liệu trên chân RX được lấy mẫu 3 lần bằng cách dò trên mạch nếu mức
tích cực trên chân RX là mức cao hay thấp.
• TỰ ĐỘNG DÒ TỐC ĐỘ BAUD
Module USART mở rộng hỗ trợ chế độ dò và hiệu chỉnh tốc độ baud tự động.
Đây là đặc trưng hoạt động chỉ có trong chế độ không đồng bộ và trong khi bit được
xóa.
Vi điều khiển Pic
Phạm Văn Cường - Hoàng Văn Quân. Lớp ĐKTĐ1-K49 42
Tốc độ baud được đo liên tục bắt đầu khi bit start được nhận và bit ABDEN được
set.Kết quả tính toán được tự lấy trung bình.
Trong chế độ tự dò tốc độ baud (ABD) , xung nhịp của BRG được đảo hơn nửa bộ
đếm BRG thu thập tín hiệu RX, tín hiệu RX là thời gian BRG. Trong chế độ ABD, bộ
phát tốc độ baud từ bên trong được sử dụng như bộ đếm thời gian chu kỳ bit của thu
thập chuỗi byte nối tiếp.
Khi mà bit ABDEN được set, trạng thái máy sẽ xóa BRG và chờ bit start. Tự động
dò tốc độ baud phải nhân byte với giá trị 55h (ASCII “U”, nó cũng là kí tự đồng bộ
LIN bus) để tính toán tần số chính xác. Phép đo được lấy trên cả hai mức cao và thấp
để làm giảm tính đối xứng của tín hiệu thu thập. Sau khi start bit, SPBRG bắt đầu
đếm, nó sẽ đếm sườn lên đâu tiên đầu tiên của RX. Sau khi 8 bit trên chân RX hoặc
sườn lên thứ 5 của RX , một giá trị tổng chu kì BRG được đặt trong cặp thanh ghi
SPBRGH :SPBRG. Một khi có sườn lên thứ 5 ,thì bit ABDEN sẽ tự động được xóa.
Nếu thanh ghi BGR xảy ra tràn (tràn từ FFFFh đến 0000h), sự kiện này được báo
hiệu bởi trạng thái bit ABDOVF (BAUDCON). Bit này được set bằng phần cứng
khi xảy ra tràn và có thể set hoặc xóa bằng phần mền . Chế độ ABD vẫn hoạt động khi
xảy ra sự kiện tràn và bit ABDEN vẫn được đặt (Figure 18-2).
Trong khi hiệu chỉnh chu kì tốc độ baud, giá tri thanh ghi BRG được đặt bằng 1/8
tốc độ xung nhịp ban đầu . Xung nhịp BRG được thiết lập bởi các bit BRG16 và
BRGH . Bit BRG16 được đặt độc lập, cả SPBRG và SPBRGH được sử dụng như bộ
đếm 16 bit. Cho phép người lập trình là không có nhớ trong chế độ 8 bit bằng cách
kiểm tra thanh ghi SPBRGH có bằng 00h không .
Trong quá trình ABD diễn ra , trạng thái bộ vi xử lí trong chế độ EUSRT là trạng
thái rảnh rỗi(Idle). Bit báo ngắt RCIF được đặt khi phát hiện ra sườn lên thứ 5 trên
RX. Cần đọc giá trị trong thanh ghi RCREG để xóa cờ ngắt RCIF. Giá trị chứa trong
RCREG có thể bỏ đi.
• Chế độ truyền EUSART và ABD( Auto Baud Rate Detect)
Khi xung nhịp BRG được giữ trong quá trình ABD ,chế độ truyền EUSART
không được sử dụng trong quá trình ABD hoạt động . Điều này có nghĩa là bất cứ khi
nào bit ABDEN được set ,thi TXREG không thể được ghi . Người sử dụng phải đảm
bảo rằng bit ABDEN không được set trong quá trình truyền liên tiếp. Khi đó hoạt động
của EUSART sẽ không xác đinh.
Vi điều khiển Pic
Phạm Văn Cường - Hoàng Văn Quân. Lớp ĐKTĐ1-K49 43
Chế đô EUSART không đồng bộ.
Chế độ không đồng bộ được chon bằng cách xóa bit SYNC (TXSTA). Trong
chế độ này , EUSART sử dụng khung dữ liệu chuẩn Non-Return-to-Zero (NRZ) (một
bit Start, tám hoặc chín bit dữ liệu và một bit Stop). Thông thường khung dữ liệu được
dùng phổ biến nhất là 8 bits. Trên một chip, một bộ phát tốc độ 8-bit/16-bit Baud
được sử dụng để tạo tốc độ chuẩn từ bộ dao động.
Trong EUSART thì bit truyền hoặc nhận đầu tiên là bit có trọng số thấp nhất. Sự
truyền và nhận trong EUSART là chức năng độc lập nhưng sử dụng khung dữ liệu và
tốc độ baud là giống nhau. Bộ phát tốc độ baud sinh ra tốc độ xung nhịp gấp x16 hoặc
x64 tốc độ thay đổi bit phụ thuộc vào bit BRGHvà bit BRG16 (TXSTA and
BAUDCON). Bit chẵn lẻ không được cung cấp bởi phần cứng nhưng có thể cài
đặt trong phần mềm và được lưu như bit dữ liệu thứ 9.
Khi chế độ không đồng bộ hoạt động, module EUSART bao gồm những thành
phần quan trọng sau:
• Bộ phát tốc độ baud.
• Mạch tạo mẫu.
• Truyền không đồng bộ.
• Nhận không đồng bộ.
• Tự động kích hoạt kí tự ngắt đồng bộ.
• Truyền 12 bit kí tự ngắt.
• Tự động dò tốc độ baud.
• CHẾ ĐỘ TRUYỀN KHÔNG ĐỒNG BỘ EUSART.
Sơ đồ khối truyền EUSART trong hình 18-3. Trung tâm của khối truyền là thanh
ghi dịch truyền (nối tiếp) (TSR). Thanh ghi dịch chứa dữ liệu từ thanh ghi đệm truyền
đọc /ghi TXREG. Thanh ghi TXREG nạp dữ liệu từ phần mềm. Thanh ghi dịch TSR
sẽ không nạp dữ liệu cho đến khi bit Stop của lần vừa nạp được truyền xong. Ngay khi
bit Stop được truyền xong , thanh ghi dịch TSR được nạp giá trị mới từ thanh ghi đệm
TXREG (nếu được cho phép).
Khi thanh ghi đêm truyền TXREG truyền dữ liệu cho thanh ghi dịch TSR (xảy ra
trong TCY), thì thanh khi TXREG sẽ trống và cờ ngắt truyền TXIF (PIR1) được
set. Đây là ngắt có thể cho phép hoặc không cho phép bằng cách set hoặc xóa bit cho
phép ngắt TXIE (PIE1).bit TXIF will besẽ được set dù cho trạng thái của bit
TXIE như thế nào; nó không thể xóa trong phần mềm. bit TXIF cũng không thể xóa
ngay lập tức khi dữ liệu đang nạp trên thanh ghi TXREG, nhưng nó trở nên hợp lệ
trong chu kì lệnh thứ hai sau lệnh vừa nạp. Kiểm tra bit TXIF ngay sau khi nạp lại giá
tri cho thanh ghi TXREG.
Trong khi TXIF xác định trạng thái thanh ghi TXREG, một bit khác là bit TRMT
(TXSTA), chỉ ra trạng thái của thanh ghi dịch TSR . bit TRMT là bit chỉ được đọc
và nó được set khi thanh ghi TSR trống rỗng. Không có ngắt logic từ bit này vì vậy
người sử dụng phải kiểm tra bit này để xác định trạng thái của thanh ghi TSR nếu nó
trống.
Để đặt chế độ truyền không đồng bộ có các bước sau:
1. Khởi tạo cho thanh khi SPBRGH:SPBRG để có tốc độ baud tương ứng . Đặt
hoặc xóa bit BRGH và bit BRG16, cần thiết , để đạt được tốc độ baud mong
muốn.
Vi điều khiển Pic
Phạm Văn Cường - Hoàng Văn Quân. Lớp ĐKTĐ1-K49 44
2. Cho phép cổng không đồng bộ nối tiếp bằng cách xóa bit SYNC, và đặt bit
SPEN.
3. Nếu muốn có ngắt ,set bit cho phép TXIE.
4. Nếu truyền khung dữ liệu 9 bit, set bit truyền TX9. Có thể được sử dụng như
bit địa chỉ hoặc dữ liệu.
5. Cho phép truyền bằng cách set bit TXEN,
Và bit TXIF cũng sẽ được set.
6. Nếu chọn truyền 9 bit trong khung dữ liệu ,thì bit thứ 9 sẽ được nạp vào bit
TX9D.
7. Nạp dữ liệu từ thanh ghi TXREG (bắt đầu quá trình truyền).
8. Nếu sử dụng ngắt, thì phải đảm bảo rằng hai bit GIE và PEIE
trong thanh ghi INTCON (INTCON) đã được set.
• CHẾ ĐỘ NHẬN KHÔNG ĐỒNG BỘ EUSART.
Sơ đồ khối nhận là khối trong hình 18-6. Dữ liệu được nhận trên chân RX và được
đưa tới khối khôi phục dữ liệu. Khối khôi phục dữ liệu thực tế có tốc độ dịch cao gấp
16 lần tốc độ baud, vì vậy khối nhận hoạt động ở tốc độ bit hoặc tần số dao động . Chế
độ này thường được sử dụng trong hệ thống RS 232.
Các bước thiết lập chế độ nhận không đồng bộ:
1. Khởi tạo cho thanh ghi SPBRGH:SPBRG để có tốc độ baud thích hợp. set hoặc
xóa bit BRGH và BRG16 để có được tốc độ baud mong muốn.
2. Cho phép cổng không đồng bộ nối tiếp bằng cách xóa bit SYNC, và set bit
SPEN.
3. Nếu muốn có ngắt , thì set bit cho phép ngắt RCIE.
4. Nếu muốn nhân khung dữ liệu 9 bit thì set bit RX9.
5. Cho phép quá trình nhận bằng cách set bit CREN.
6. Cờ báo nhân RCIFsẽ được set khi quá trình nhận hoàn thành và sẽ xuất hiện
một ngắt nếu như bit cho phép ngắt nhận RCIE đã được set.
7. Đọc thanh ghi RCSTA để lấy bit thứ 9 (nếu nhận là 9 bit) và xác định lỗi đã xảy
ra trong lúc nhân.
8. Lấy 8 bit dữ liệu còn lại bằng cách đọc thanh ghi RCREG register.
9. Nếu có lỗi trong quá trình nhận thì xóa lỗi bằng cách xóa bit cho phép nhận
CREN.
10. Nếu sử dụng ngắt thì phải đảm bảo rằng các bit GIEvà PEIE trong thanh ghi
INTCON (INTCON) phải được set.
Vi điều khiển Pic
Phạm Văn Cường - Hoàng Văn Quân. Lớp ĐKTĐ1-K49 45
• THIẾT LẬP CHẾ ĐỘ 9 BIT DÒ ĐỊA CHỈ.
Chế độ này thường được sử dụng trong hệ thống RS-485 .
Thiết lập cho chế độ nhân không đồng bộ có dò địa chỉ:
1. Khởi tạo cho thanh ghi SPBRGH:SPBRG để có tốc độ baud thích hợp. set hoặc xóa
bit BRGH và BRG16 để có được tốc độ baud mong muốn.
2. Cho phép cổng truyền không đồng bộ nối tiếp bằng cách xóa bit SYNC và set bit
SPEN.
3. Nếu cần sử dụng ngắt thì set bit RCENvà chọn mức độ ưu tiên mong muốn bằng bit
RCIP .
4. Set bit RX9 để cho phép nhận 9 bit.
5. Set bit ADDEN để cho phép dò địa chỉ .
6. Cho phép nhân bằng cách set bit CREN.
7. Bit RCIF sẽ được set khi khi quá trình nhận hoàn thành. Ngắt sẽ được xác nhận nếu
bit RCIE và bit GIE bits are seđược set.
8. Đọc thanh ghi RCSTA để xác định lỗi trong quá trình nhận, hoặc đọc bit dữ liệu thứ
9 (nếu có thể dùng).
9. Đọc thanh ghi RCREG để xác nếu thiết bị là địa chỉ.
10. Nếu có lỗi thì xóa bit CREN .
11. Nếu thiết bị đã xác định được địa chỉ , xóa bit ADDENvà cho phép nhân tất cả dữ
liệu vào đệm và ngắt CPU.
• TỰ ĐỘNG KÍCH HOẠT KÍ TỰ NGẮT ĐỒNG BỘ.
Trong suốt chế độ sleep , tất cả các xung của chế độ EUSART bị treo. Bởi vì vậy ,
bộ phát tốc độ baud không hoạt động và nhân một byte không thể thực hiện được. Đặc
điểm của chế độ kích hoạt tự động cho phép kích hoạt hoạt động trở lại trên đường
RX/DT trong khi EUSART hoạt động trong chế độ không đồng bộ.
Đặc điểm của kích hoạt tự động được cho phép hoạt động bằng việc set bit WUE
(BAUDCON). Một khi set bit này, thông thường nhận liên tiếp trên RX/DT là
không thể và EUSART còn lại trong trạng thái Idle , sự kiện kích hoạt độc lập với chế
độ của CPU. Sự kiện kích hoạt bao gồm khi xuất hiện sườn xuống trên đường RX/DT .
(Nó trùng với kí tự ngắt đồng bộ và kí tự kích hoạt giao thức LIN )
Vi điều khiển Pic
Phạm Văn Cường - Hoàng Văn Quân. Lớp ĐKTĐ1-K49 46
Sau sự kiện kích hoạt , module sẽ phát ra một ngắt RCIF. Ngắt này được phát đồng
bộ với xung Q trong chế độ hoạt động bình thường.
(hình 18-8) và chế độ không đồng bộ, nếu chíp hoạt động trong chế độ sleep (hình
18-9). Điêu kiện xảy ra ngắt là phải xóa bằng cách đọc thanh ghi RCREG .
Bit WUE được tự động xóa một khi trên đường RX xuất hiện sườn lên sau sự kiện
kích hoạt ngắt. Vào thời điểm đó, module EUSART trong chế độ Idle và trở lại hoạt
động bình thường. Tín hiệu sử dụng trong sự kiện ngắt đồng bộ là sự kiền tràn.
• Phải thân trọng khi sử dụng Auto-Wake-up
Khi mà chức năng tự động kích hoạt được nhận biết bởi sườn lên trên chân RX/DT,
thông tin về thay đổi trạng thái trước khi bit Stop là tín hiệu lỗi End-of-Character
(EOC) và nguyên nhân là lỗi dữ liệu hoặc lỗi khung truyền . Để làm việc đúng thì kí tự
truyền ban đầu phải là ‘0’s. Đây có thể là 00h (8 bits) theio chuẩn thiết bị RS-232 hoặc
000h (12 bits) theo chuẩn LIN.
Bộ dao động bắt đầu hoạt động cũng phải được xem xét, đặc biệt là ứng dụng trong
việc sử dụng bộ dao động bắt đầu ngưng hoạt động (i.e., XT or HS mode). Kí tự ngắt
đồng bộ (tín hiệu kích hoạt ) phải đủ dài và sau đó phải cho phép đủ thời gian để cho
phép bộ dao động bắt đầu và cung cấp giá trị khởi tạo cho EUSART.
• Cần phải đặc biệt thận trọng khi sử dụng bit WUE .
Thời gian của sự kiện bit WUE và bit RCIF có thể bị rối loạn khi nó xác định giá
trị của dữ liệu nhận when it comes to determining the validity of
received data. Như đã lưu ý, set bit WUE khi sử dụng EUSART . Bit WUE được
xóa sau khi trên chân RX/DT xuất hiện sườn lên. Điều kiện của ngắt là nó phải được
xóa bằng cách đọc thanh ghi RCREG. Thông thường , dữ liệu trong RCREG sẽ là dữ
liêu giả và nên được bỏ.
Thực tế là bit WUE đã được xóa (hoặc vẫn được set) và cờ RCIF được set nên
không được sử dụng như dữ liệu ban đầu trong thanh ghi RCREG. Người sử dụng nên
xem xét các triển khai phương pháp song song trong firmware (là phần mềm nhớ trong
bộ nhớ chỉ đọc) để nhận dữ liệu nguyên vẹn.
Để đảm bảo rằng không bị mất dữ liệu, kiểm tra bit RCIDL để xác nhận rằng một
hoạt động nhận dữ liệu là không xảy ra trong quá trình này. Nếu hoạt động nhận không
xảy ra thì bit WUE có thể sau đó được đặt trước khi vào chế độ Sleep
• KÍ TỰ NGẮT LIÊN TIẾP
Module EUSART có thể gửi kí tự ngắt liên tiếp đặc biệt . Kí tự ngắt này cần cho
chuẩn LIN. Kí tự ngắt truyền bao gồm bit Start theo sau là 12 bit và một bit Stop.
Khung kí tự ngắt được gửi bất cứ khi nào bit SENDB và bit TXEN (TXSTA và
TXSTA) được set trong khi thanh ghi dịch truyền được nạp dữ liệu . Chú ý rằng
giá trị dữ liệu ghi vào thanh TXREG sẽ được bỏ qua và tất cả các bit ‘0’s(kí hiệu cho
các bit) sẽ được truyền. Bit SENDB sẽ được tự động reset bởi phần cứng bit Stop
tương ứng được gửi. Điều này cho phép người sử dụng nạp lại giá trị truyền FIFO với
byte truyền tiếp theo sau kí tự ngắt (thông thường kí tự đồng bộ chỉ rõ trong LIN). Chú
ý rằng giá trị dữ liệu ghi vào TXREG cho kí tự ngắt được bỏ qua. Cách viết đơn giản
chỉ phục vụ cho các mục đích khởi động đơn giản.
Bit TRMT để chỉ ra rằng khi quá trình truyền là không hoạt động hoặc chế độ
Idle,giống như quá trình truyền bình thường . Xem hình 18-10 cho thời gian của chuỗi
kí tự ngắt.
• Ngắt và truyền đồng bộ liên tiếp.
Vi điều khiển Pic
Phạm Văn Cường - Hoàng Văn Quân. Lớp ĐKTĐ1-K49 47
Sau khi có ngắt thì chuỗi liên tiếp sẽ được gửi bắt đầu bằng khung thông điệp , sau
đó là byte n Auto-Baud Sync . Đây một số thành phần chính thông thường của một
LIN bus.
1. Cấu hình EUSART để có chế độ mong muốn.
2. Set bit TXEN và bit SENDB để đặt chế độ kí tự ngắt.
3. Nạp vào TXREG một kí tự giả để bắt đầu truyền (giá trị này sẽ được loại bỏ ).
4. Ghi ‘55h’ vào TXREG để nạp kí tự đồng bộ vào đệm truyền FIFO.
5. Sau khi ngắt được gửi , bit SENDB được reset bởi phần cứng. Kí tự đồng bộ bây giờ
được truyền trong chế độ cấu hình sẵn rồi.
Khi thanh ghi TXREG trở nên rỗng, được biết bởi bit TXIF, byte dữ liệu tiếp theo có
thể ghi vào TXREG.
• NHẬN MỘT KÍ TỰ NGẮT.
Module USART mở rộng có thể nhận một kí tự ngắt bằng hai cách. Phương pháp
đầu tiên là cấu hình tốc độ baud bằng 9/13 tần số bình thường. Điều này cho phép bit
Stop truyền đúng vị trí lấy mẫu (13 bits cho bit Start chống ngắt và 8 bit dữ liệu cho
dữ liệu bình thường).
Phương pháp thứ 2 sử dụng đặc điểm của tự động kích hoạt ( auto-wake-up) mô tả
trong mục 18.2.4 “Auto-Wake-up on Sync Break Character”. Bởi việc cho phép đặc
điểm này, EUSART sẽ lấy mẫu ở hai lần truyền tiếp theo trên RX/DT,bởi vì ngắt
RCIF và nhận dữ liệu ở byte tiếp theo sau một ngắt khác.
Chế độ đồng bộ chính EUSART
Chế độ đồng bộ chính được nhập vào bằng cách set bit CSRC (TXSTA). Trong
chế độ này , dữ liệu được truyền theo phương thức bán song công (truyền và nhận chỉ
được xảy ra vào một thời điểm). Khi truyền dữ liệu , quá trình nhận bị cấm và ngược
lại . Chế độ đồng bộ được cho phép bằng cách set bit SYNC (TXSTA). Ngoài ra,
bit cho phép SPEN (RCSTA) được set để cấu hình cho chân TX và chân RX
tương ứng với đường xung nhịp CK (clock) và đường dữ liệu DT (data) . Chế độ chính
chỉ ra rằng quá trình truyền chính tạo xung nhịp trên đường CK. Chiều xung nhịp
được chọn bằng bit TXCKP (BAUDCON); đặt bit
TXCKP để đặt trạng thái Idle trên CK như mức cao, trong khi xóa trạng thái Idle
như là mức thấp. Sự chọn này được cung cấp để hỗ trợ thiết bị Microwire devices với
module này.
• EUSART SYNCHRONOUS MASTER TRANSMISSION
Khối biểu đồ truyền EUSART đưa ra trên hình 18-3. Trung tâm của khối truyền là
thanh ghi dịch ( nối tiếp) TSR. Thanh ghi dịch thu được dữ liệu từ thanh ghi đệm
Vi điều khiển Pic
Phạm Văn Cường - Hoàng Văn Quân. Lớp ĐKTĐ1-K49 48
đọc/ghi TXREG. Thanh ghi TXREG được nạp dữ liệu từ phần mềm . Thanh ghi TSR
không được nạp dữ liệu cho đến khi bit cuối cùng được truyền từ lần nạp trước. Ngay
khi bit cuối cùng được truyền, thanh ghi TSR được nạp giá trị mới từ TXREG (nếu
cho phép ).
Một khi thanh ghi TXREG truyền dữ liệu cho thanh ghi TSR (xảy ra trong một
TCY), thanh ghi TXREG bị trống và bit cờ TXIF (PIR1) được set . Ngắt có thể
được cho phép hoặc không cho phép bằng cách đặt hoặc xóa bit cho phép ngắt TXIE
(PIE1). TXIF được set cho dù trạng thái của bit cho phép ngắt TXIE thế nào;nó có
thể được xóa trong phần mềm. Nó chỉ sẽ được reset khi dữ liệu mới được nạp lại thanh
ghi TXREG .
Trong khi bit cờ TXIF báo trạng thái của thanh ghi TXREG thì bit khác là bit
TRMT (TXSTA<1chỉ trạng thái thanh ghi TSR . Thanh ghi TRMT chỉ được đọc khi
bit báo trạng thái thanh khi TSR là trống rỗng được set. Không có ngắt logic nào được
tạo ra từ bit này vì vậy người sử dụng phải giám sát bit này để xác định thanh ghi TSR
có rỗng không. Thanh ghi TSR không được cho sẵn trong bộ nhớ vì vậy nó không có
sẵn cho người sử dụng.
Thiết lập chế độ truyền đồng bộ chủ:
1. Khởi tạo cho thanh ghi SPBRGH:SPBRG để có tốc độ baud thích hợp. set hoặc xóa
bit BRGH và BRG16 để có được tốc độ baud mong muốn.
2. Cho phép cổng nối tiếp chính đồng bộ bằng cách set bit SYNC, SPEN và CSRC.
3. Nếu muốn có ngắt, set bit cho phép TXIE.
4. Set bit RX9 để cho phép nhận 9 bit.
5. Cho phép truyền bằng cách set bit TXEN.
6. Nếu chọn truyền 9 bit trong khung dữ liệu ,thì bit thứ 9 sẽ được nạp vào bit TX9D.
7. Bắt đầu truyền bằng cách nạp dữ liệu vào thanh ghi TXREG .
8. Nếu sử dụng ngắt thì phải đảm bảo rằng các bit GIEvà PEIE trong thanh ghi
INTCON (INTCON) phải được set.
• CHẾ ĐỘ NHẬN ĐỒNG BỘ MASTER
Một khi chế độ đồng bộ được chọn, nhận dữ liệu được cho phép bằng cách set bit
Single Receive Enable SREN (RCSTA), hoặc bit cho phép tiếp tục nhận CREN
(RCSTA). Dữ liệu là các mẫu trên chân RX khi có sườn xuống của xung nhịp.
Nếu bit cho phép SREN được set ,chỉ khi có từ đơn được nhận. Nếu bit cho phép
CREN được set, quá trình nhận sẽ tiếp tục cho đến khi bit CREN được xóa. Nếu cả hai
bit được set , thì CREN được ưu tiên.
Thiết lập chế độ nhận đồng bộ Master:
1. Khởi tạo cho thanh ghi SPBRGH:SPBRG để có tốc độ baud thích hợp. set hoặc xóa
bit BRGH và BRG16 để có được tốc độ baud mong muốn.
2. Cho phép cổng nối tiếp chính đồng bộ bằng cách set bit SYNC, SPEN và CSRC.
3. Chắc chắn rằng bit CREN và SREN được xóa.
4. Nếu cho phép ngắt, set bit RCIE.
5. Set bit RX9 để cho phép nhận 9 bit.
6. Nếu nhận riêng rẽ , set bit SREN. Để tiếp tục nhận set bit CREN.
7. Bit cờ ngắt RCIFsẽ được set khi quá trình nhận hoàn thành và một ngắt sẽ được
phát ra nếu bit cho phép RCIE đã được set.
8. Đọc thanh ghi RCSTA để xác định lỗi trong quá trình nhận, hoặc đọc bit dữ liệu thứ
9 (nếu có thể dùng).
Vi điều khiển Pic
Phạm Văn Cường - Hoàng Văn Quân. Lớp ĐKTĐ1-K49 49
9. Đọc 8 bit dữ liệu nhận bằng cách đọc thanh ghi RCREG .
10. Nếu có lỗi thì xóa lỗi bằng cách xóa bit CREN .
11. Nếu sử dụng ngắt thì phải đảm bảo rằng các bit GIEvà PEIE trong thanh ghi
INTCON (INTCON) phải được set.
• Chế độ đồng bộ Slave của EUSART.
Chế độ đồng bộ Slave được đưa vào hoạt động bằng cách xóa bit CSRC
(TXSTA). Chế độ này khác với chế độ đồng bộ Master
Synchronous Master mode trong đó xung nhịp được cung cấp từ bên ngoài ở chân
CK (thay vì cung cấp từ bên trong trong chế độ Master ). Điều này cho phép thiết bị
truyền và nhận dữ liệu trong chế độ tiết kiệm năng lượng.
• CHẾ ĐỘ TRUYỀN ĐỒNG BỘ SLAVE CỦA EUSART.
Hoạt động của chế độ Master và Slave là giống nhau , ngoại trừ trong chế độ Sleep.
Nếu hai từ được viết lên TXREG và sau đó chế độ SLEEP hướng dẫn được thực
hiện như sau:
a) Từ đầu tiên sẽ ngay lập tức được chuyển vào thanh ghi TSR và truyền.
b) Từ thứ hai còn lại ở trong thanh ghi TXREG .
c) Bit cờ TXIF sẽ không được set.
d) Khi từ thứ nhất được truyền khỏi thanh ghi TSR,thanh ghi TXREG sẽ truyền từ
thứ hai cho thanh ghi TSR và bit cờ TXIF bây giờ sẽ được set.
e) Nếu bit cho phép TXIE được set , ngắt sẽ kích hoạt chip từ chế độ Sleep. Nếu
ngắt toàn cục được cho phép , chương trình sẽ phân nhánh vector ngắt .
Thiết lập chế độ truyền đồng bộ Slave:
1. Cho phép cổng nối tiếp Slave bằng cách set bit SYNC và bit SPEN và xóa bit
CSRC.
2. Xóa bit CREN và bit SREN.
3. Nếu cho phép ngắt, set bit TXIE.
4. Set bit RX9 để cho phép nhận 9 bit.
5. Cho phép truyền bằng cách set bit cho phép TXEN .
6. Nếu chọn truyền 9 bit được chọn ,bit thứ 9 được nạp từ bit TX9D.
7. Bắt đầu truyền bằng cách nạp dữ liệu cho thanh TXREG.
8. Nếu sử dụng ngắt thì phải đảm bảo rằng các bit GIEvà PEIE trong thanh ghi
INTCON (INTCON) phải được set.
• CHẾ ĐỘ NHẬN ĐỒNG BỘ SLAVE CỦA EUSART.
Hoạt động của chế độ Master và Slave là giống nhau , ngoại trừ trong chế độ Sleep
hoặc chế độ Idle và bit SREN là bit “ don’t care ” trong chế độ Slave.
Nếu nhận được cho phép bởi việc set bit CREN bit ưu tiên chế đô hoặc chế độ Idle
, sau khi một từ có thể nhận trong chế độ tiết kiệm năng lượng. Một khi một từ được
nhận , thanh ghi RSR sẽ truyền dữ liệu cho thanh ghi RCREG ; nếu bit cho phép RCIE
được set, ngắt được phát sẽ được kích hoạt chíp trong chế độ tiết kiệm năng lượng.
Nếu ngắt toàn cục được cho phép , chương trình sẽ phân nhánh vector ngắt .
Thiết lập chế độ nhân đồng bộ Slave :
1. Cho phép cổng nối tiếp Slave bằng cách set bit SYNC và bit SPEN và xóa bit
CSRC.
2. Nếu cho phép ngắt, set bit cho phép RCIE.
3. Set bit RX9 để cho phép nhận 9 bit.
4. Cho phép nhận bằng cách set bit cho phép CREN .
Vi điều khiển Pic
Phạm Văn Cường - Hoàng Văn Quân. Lớp ĐKTĐ1-K49 50
5. Bit cờ RCIF sẽ được set khi nhận hoàn thành . Một sẽ được phát nếu bit cho phép
RCIE được set .
6. Đọc thanh ghi RCSTA để nhận bit thứ 9 ( nếu cho phép ) và được xác định nếu có
lỗi xảy ra trong quá trình nhận.
7. Đọc 8 bit dữ liệu nhận bằng cách đọc thanh ghi RCREG .
8. Nếu có lỗi xảy ra ,xóa lỗi bằng cách xóa bit CREN.
9. Nếu sử dụng ngắt thì phải đảm bảo rằng các bit GIEvà PEIE trong thanh ghi
INTCON (INTCON) phải được set.
1.2.7. Module chuyển đổi tưong tự sang số 10 bit (A/D)
Module chuyển đổi tương tự sang số (A/D) có 10 đầu vào trong thiết bị 28 chân và
có 13 đầu vào trong thiết bị 40/44 chân . Chế độ này cho phép trao đổi tín hiệu tương
tự đầu vào tương đương với 10 bit số.
Module có năm thanh ghi:
• A/D Thanh ghi kết quả cao (ADRESH)
• A/D Thanh ghi kết quả thấp (ADRESL)
• A/D Thanh ghi điều khiển 0 (ADCON0)
• A/D Thanh ghi kết quả thấp 1 (ADCON1)
• A/D Thanh ghi điều khiển 2 (ADCON2)
Thanh ghi ADCON0 trong thanh ghi 19-1, điều khiển hoạt động của module A/D.
Thanh ghi ADCON1 trong thanh ghi 19-2,cấu hình chức năng của các chân ở cổng.
Thanh ghi ADCON2 chỉ ra trong thanh ghi 19-3, cấu hình cho nguồn xung A/D ,
phần mền sẽ thu thập thời gian và hiệu chỉnh.
Thanh ghi ADCON0
bit 7-6 Unimplemented: mang giá trị ‘0’
bit 5-2 CHS3:CHS0: bit lựa chọn kenh tương tự
0000 = Channel 0 (AN0)
0001 = Channel 1 (AN1)
0010 = Channel 2 (AN2)
0011 = Channel 3 (AN3)
0100 = Channel 4 (AN4)
0101 = Channel 5 (AN5) (1,2)
0110 = Channel 6 (AN6) (1,2)
0111 = Channel 7 (AN7)(1,2)
1000 = Channel 8 (AN8)
1001 = Channel 9 (AN9)
1010 = Channel 10 (AN10)
1011 = Channel 11 (AN11)
1100 = Channel 12 (AN12)
1101 = Không xác định(2)
Vi điều khiển Pic
Phạm Văn Cường - Hoàng Văn Quân. Lớp ĐKTĐ1-K49 51
1110 = Không xác định (2)
1111 = Không xác định (2)
bit 1 GO/DONE: A/D trạng thái bit chuyển đổi
Khi bit ADON = 1:
1 = A/D đang trong quá trình chuyển đổi.
0 = A/D Idle
bit 0 ADON: bit hoạt động A/D
1 = A/D Module chuyển đổi được cho phép.
0 = A/D Module chuyển đổi không cho phép .
Thanh ghi ADCON1
bit 7-6 Unimplemented: mang giá trị ‘0’
bit 5 VCFG1: Bit cấu hình điện áp chuẩn (VREF- source)
1 = VREF- (AN2)
0 = VSS
bit 4 VCFG0: bit cấu hình điên áp chuẩn (VREF+ source)
1 = VREF+ (AN3)
0 = VDD
bit 3-0 PCFG3:PCFG0: A/D Những bít cấu hình điều khiển cổng:
Thanh ghi ADCON2
Vi điều khiển Pic
Phạm Văn Cường - Hoàng Văn Quân. Lớp ĐKTĐ1-K49 52
bit 7 ADFM: bit chọn định dạng cho A/D
1 = Căn chỉnh bên phải
0 = Căn chỉnh bên trái
bit 6 Unimplementedânmng giá trị ‘0’
bit 5-3 ACQT2:ACQT0:bit lựa chịn thời gian thu nhận A/D
111 = 20 TAD
110 = 16 TAD
101 = 12 TAD
100 = 8 TAD
011 = 6 TAD
010 = 4 TAD
001 = 2 TAD
000 = 0 TAD
bit 2-0 ADCS2:ADCS0: bít lựa chọn xung chuyển đổi A/D
111 = FRC ( xung dẫn xuất từ bộ dao động A/D RC )
110 = FOSC/64
101 = FOSC/16
100 = FOSC/4
011 = FRC
010 = FOSC/32
001 = FOSC/8
000 = FOSC/2
Điện áp chuẩn tương tự được chọn bởi phần mềm là một trong hai mức tích cưc
của thiết bị cung cấp điện áp là tích cực dương và tích cực âm (VDD và VSS), hoặc
mức điện áp trên các RA3/AN3/ VREF+ và các chân RA2/AN2/VREF-/CVREF .
Bộ biến đổi tương tự số A/D có đặc điểm là có thể hoạt động khi thiết bị ở chế độ
Sleep . Hoạt động trong chế đô Sleep, xung nhịp chuyển đổi A/D có thể được lấy từ
bộ dao động RC bên ngoài của bộ chuyển đổi A/D.
Đầu ra của mẫu và giá trị giữ được lấy từ đâu vào của bộ chuyển đổi, mà nó đưa ra
thông qua việc lấy xấp xỉ.
Môt thiết bị được reset thì buộc phải reset tất cả các thanh ghi trạng thái của nó
.Khi module A/D module bị tắt và bất cứ quá trình chuyển đổi nào cũng bị bỏ . Mỗi
cổng được nối với bộ biến đổi A/D có thể cấu hình như một đầu vào tương tự hoặc
như cổng và ra số. Thanh ghi ADRESH và thanh ghi ADRESL chứa kết quả của
chuyển đổi A/D.Khi chuyển đổi A/D hoàn thành kết quả được nạp vào cặp thanh ghi
ADRESH:ADRESL ,bit GO/DONE ( thanh ghi ADCON0 ) được xóa và bit cờ ngắt
A/D ( ADIF) được set. Sơ đồ khối của module trong hình 19-1.
• Yêu cầu khi sử dụng bộ thu nhận A/D
Đối với bộ A/D để đảm bảo độ chính xác tụ nạp điên phải được cho phép nạp đầy
mức điện áp đầu vào . Module vào tương tự trong hình 19-3. Trở kháng nguồn (RS)
và trở kháng bên trong công tắc lấy mẫu (RSS) ảnh hưởng trực tiếp đến thời gian nạp
CHOLD. Trở kháng trên các công tắc lấy mẫu (RSS) thay đổi khác nhau trên thiết
điên áp khác nhau (VDD). Trở kháng nguồn ảnh hưởng trực tiếp đến điện áp offset (
điện áp lệch) ở đầu vào tương tự (rò điện trên chân ). Giá trị trở kháng lớn nhất cho
phép của nguồn tương tự là 2.5 kΩ . Sau khi kênh đầu vào tương tự được chọn ( thay
Vi điều khiển Pic
Phạm Văn Cường - Hoàng Văn Quân. Lớp ĐKTĐ1-K49 53
đổi ), kênh này phải lấy mẫu trong thời gian nhỏ nhất yêu cầu trước khi bắt đầu chuyển
đổi .
Tính toán thời gian nhỏ nhất yêu cầu To calculate the minimum acquisition time,
Công thức 19-1 có thể được sử dụng . Trong công thức này cho rằng 1/2 bit có trọng
số lớn ( LSb error ) được sử dụng (1024 bước cho A/D). 1/2 bit có trọng số lớn lỗi là
lỗi lớn nhất cho phép của A/D đáp ứng độ phân giải đã định . Ví dụ 19-3 chỉ ra cách
tính thời gian bé nhất cần thiết TACQ. Tính toán này dựa trên các giả thiết thông số
hệ thống sau:
− CHOLD = 25 pF
− Rs = 2.5 kΩ
− Conversion Error ≤ 1/2 LSb
− VDD =5V → Rss = 2 kΩ
− Temperature = 85°C (system max.)
EQUATION:ACQUISITION TIME
EQUATION:A/D MINIMUM CHARGING TIME
EQUATION:CALCULATING THE MINIMUM REQUIRED ACQUISITION
TIME
• Chọn và cấu hình thời gian cần thiết .
Thanh ghi ADCON2 cho phép cho phép người sử dụng chọn được thời gian cần
thiết và thời gian này xảy ra mỗi lần bit GO/DONE được set . Nó cũng cho người sử
dụng lựa chọn sử dụng tự động xác định thời gian cần thiết . Thời gian nhận được phải
được đặt với bit ACQT2:ACQT0
( ADCON2 ), nó cung cấp một dải của 2 đến 20 TAD. Khi bit GO/DONE
được set, module A/D tiếp tục lấy mẫu đầu vào để chọn thời gian ,sau đó tự động bắt
đầu quá trình chuyển đổi .
Khi thời gian thu nhận được lập trình , có thể không cần đợi một thời gian thu nhận
từ lúc chọn kênh đến lúc set bit GO/DONE .
Chế độ chọn thời gian thu nhận bằng tay được chọn khi ACQT2 :ACQT0 = 000.
Khi bit GO/DONE được set, mẫu sẽ ngừng nhận và quá trình nhận được bắt đầu .
Người sử phải có trách nhiệm đảm bảo thời gian thu nhận cần thiết phải qua thời điểm
chọn kênh và set bit GO/DONE . Sự lựa chọn này cũng mặc định thiết lập lại trạng
Vi điều khiển Pic
Phạm Văn Cường - Hoàng Văn Quân. Lớp ĐKTĐ1-K49 54
thái của bit ACQT2:ACQT0 và tương thích với thiết bị mà không cung cấp cho lập
trình thời gian thu nhận.
Trong cả hai trường hợp ,khi chuyển đổi hoàn thành thì bit thì bit
GO/DONE được xóa, cờ ADIF được set và A/D bắt đầu lấy mẫu được chọn một
lần nữa . Nếu thời gian thu nhận được lập trình , không có gì để xác định nếu thời gian
thu nhận đã kết thúc nếu quá trình truyền đã bắt đầu .
• Chọn xung nhịp chuyển đổi A/D .
Thời gian A/D chuyển đổi một bit được xác định như là một TAD. Và thời gian
A/D truyền 10-bit cần là 11 TAD.
Nguồn xung nhịp A/D chuyển được phần mềm chọn . Có bảy thời gian lựa chọn
cho TAD:
•2 TOSC
•4 TOSC
•8 TOSC
•16 TOSC
•32 TOSC
•64 TOSC
• Bộ tạo dao động RC .
Kiểm tra bộ chuyển đổi A/D , xung nhịp bộ chuyển đổi A/D (TAD) phải ngắn
nhất có thể nhưng lớn hơn thời gian nhỏ nhất TAD ( xem tham số 130 để biết thêm
thông tin).
Bảng 19-1 chỉ ra rằng tổng thời gian TAD nhận được từ tần số thiết bị hoạt động
và nguồn xung nhịp A/D được chọn.
• Hoạt động trong các chế độ quản lí nguồn.
Chọn chế độ thời gian thu nhận tự động và xung nhịp chuyển đổi A/D được xác
định một phần từ xung nhịp nguồn và tần số trong chế độ quản lí nguồn .
Nếu bộ A/D phải hoạt động trong khi thiết bị trong chế độ quản lí nguồn thì bit
ACQT2:ACQT0 và bit ADCS2:ADCS0 bits trong thanh ghi ADCON2 phải được cập
nhập phù hợp với nguồn xung được sử dụng trong chế độ này . Sau khi nhập chế độ
,bộ A/D thu nhân hoặc chuyển đổi có thể bắt bắt đầu hoạt động . Khi nó hoạt động
xung nhịp của thiết bị nên tiếp tục giữ bằng xung nhịp của nguồn cho đến khi quá trình
chuyển đổi được hoàn thành .
Nếu muốn ,thiết bị có thể đặt vào chế độ Idle tương ứng trong quá trình chuyển
đổi. Nếu tần số xung nhịp thiết bị là thấp hơn 1 MHz, và nguồn xung nhịp RC của
Vi điều khiển Pic
Phạm Văn Cường - Hoàng Văn Quân. Lớp ĐKTĐ1-K49 55
A/D được chọn .Hoạt động trong chế độ Sleep cần chọn nguồn xung nhịp FRC của
A/D . Nếu bit ACQT2:ACQT0 được set thành ‘000’ và quá trình chuyển đổi được bắt
đầu , thì quá trình chuyển đổi sẽ được trễ trong một chu kì lệnh cho phép thực hiện
lện
Các file đính kèm theo tài liệu này:
- Thiết kế bộ điều khiển PID số trên nền vi điều khiển PIC.pdf