1. Trang chủ
  2. » Luận Văn - Báo Cáo

thiết kế bộ điều khiển pid số trên nền vi điều khiển pic

111 2,2K 3

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

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

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Định dạng
Số trang 111
Dung lượng 1,96 MB

Nội dung

thiết kế bộ điều khiển pid số trên nền vi điều khiển pic

Trang 1

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

Trang 2

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

Trang 3

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

Trang 4

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

Trang 5

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

Trang 6

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

Trang 7

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

Trang 8

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)

Trang 9

- 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

- 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

Trang 10

¾ 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

Trang 11

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, SSchọ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

Trang 12

• 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

Trang 13

• 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

• 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

Trang 14

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

Trang 15

• 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<4:0>: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:

Trang 16

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

Trang 17

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ì

Trang 18

đơ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/borrowbit 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

Trang 19

− Giá trị 0 : không xảy ra việc thao tác 4 bit thấp

Bit 1 (DC): Carry/borrowbit 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ẽ

Trang 20

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:

Trang 21

• 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

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

Trang 22

• 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

Trang 23

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<7>, sau dó set bit điều khiển EECON<0>

• 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

Trang 24

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:

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

Trang 25

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:

− 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

− 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

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

Trang 26

− 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<7:4>(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<7:4>

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

Trang 27

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

Trang 28

− 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’

Trang 29

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<7>)

− 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

Trang 30

− 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

Trang 31

• 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

Trang 32

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ị

Trang 33

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

Trang 34

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<4>-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)

Trang 35

• 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ở

Đặ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

Trang 36

• 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<1:0>): 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

Trang 37

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<3:0>): 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<1:0>): 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

Trang 38

− 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<2:1>): 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<1:0>): 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ự

Trang 39

− 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<7>) được đặt bằng ( = 1)

• bit TRISC<7> được đặt (= 1)

• bit TRISC<6> đượ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

Trang 40

− 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

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 8 bit (RX9 = 0):Không dùng

bit 2 FERR: Bit báo lỗi khung truyền

Ngày đăng: 18/02/2014, 15:38

HÌNH ẢNH LIÊN QUAN

Hình 1.1 Sơ đồ khối kiến trúc vi điều khiển PIC18F4520 - thiết kế bộ điều khiển pid số trên nền vi điều khiển pic
Hình 1.1 Sơ đồ khối kiến trúc vi điều khiển PIC18F4520 (Trang 10)
Sơ đồ chân của các vi điều khiển Pic18F4420/4520 - thiết kế bộ điều khiển pid số trên nền vi điều khiển pic
Sơ đồ ch ân của các vi điều khiển Pic18F4420/4520 (Trang 11)
Hình 1.3: Tổ chức bộ nhớ chương trình - thiết kế bộ điều khiển pid số trên nền vi điều khiển pic
Hình 1.3 Tổ chức bộ nhớ chương trình (Trang 14)
Hình 1.6 Instruction Pipeline Flow - thiết kế bộ điều khiển pid số trên nền vi điều khiển pic
Hình 1.6 Instruction Pipeline Flow (Trang 16)
Hình 1.7 Instruction In Program Memory - thiết kế bộ điều khiển pid số trên nền vi điều khiển pic
Hình 1.7 Instruction In Program Memory (Trang 17)
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.: - thiết kế bộ điều khiển pid số trên nền vi điều khiển pic
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.: (Trang 20)
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: - thiết kế bộ điều khiển pid số trên nền vi điều khiển pic
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: (Trang 20)
Sơ đồ trạng thái Logic các ngắt có thể mô tả : - thiết kế bộ điều khiển pid số trên nền vi điều khiển pic
Sơ đồ tr ạng thái Logic các ngắt có thể mô tả : (Trang 24)
Hình 2.1 Mô hình khối mạch điều khiển - thiết kế bộ điều khiển pid số trên nền vi điều khiển pic
Hình 2.1 Mô hình khối mạch điều khiển (Trang 58)
Hình 2.5 : Cấu tạo cổng COM - thiết kế bộ điều khiển pid số trên nền vi điều khiển pic
Hình 2.5 Cấu tạo cổng COM (Trang 60)
Bảng sơ lược chức năng LCD 2x16 - thiết kế bộ điều khiển pid số trên nền vi điều khiển pic
Bảng s ơ lược chức năng LCD 2x16 (Trang 62)
Hình 2.9 Sơ đồ khối nguồn - thiết kế bộ điều khiển pid số trên nền vi điều khiển pic
Hình 2.9 Sơ đồ khối nguồn (Trang 63)
Sơ đồ nguyên lý kit điều khiển - thiết kế bộ điều khiển pid số trên nền vi điều khiển pic
Sơ đồ nguy ên lý kit điều khiển (Trang 64)
Sơ đồ mạch in hai lớp - thiết kế bộ điều khiển pid số trên nền vi điều khiển pic
Sơ đồ m ạch in hai lớp (Trang 65)
Hình 2.10 Lưu đồ loop điều khiển - thiết kế bộ điều khiển pid số trên nền vi điều khiển pic
Hình 2.10 Lưu đồ loop điều khiển (Trang 66)
Hình 2.14. Giao diện giao tiếp PC - thiết kế bộ điều khiển pid số trên nền vi điều khiển pic
Hình 2.14. Giao diện giao tiếp PC (Trang 70)
Hình 3.1 Động cơ sủ dụng trong đồ án - thiết kế bộ điều khiển pid số trên nền vi điều khiển pic
Hình 3.1 Động cơ sủ dụng trong đồ án (Trang 73)
Hình 3.2 Đặc tính thu thập dữ  liệu nhận dạng - thiết kế bộ điều khiển pid số trên nền vi điều khiển pic
Hình 3.2 Đặc tính thu thập dữ liệu nhận dạng (Trang 74)
Hình 3.3Chọn đầu vào và mô hình nhận dạng của đối tượng - thiết kế bộ điều khiển pid số trên nền vi điều khiển pic
Hình 3.3 Chọn đầu vào và mô hình nhận dạng của đối tượng (Trang 76)
Hình 3.4Phương thức nhận dạng và đánh giá mô hình thu được - thiết kế bộ điều khiển pid số trên nền vi điều khiển pic
Hình 3.4 Phương thức nhận dạng và đánh giá mô hình thu được (Trang 76)
Hình 3.5 Đặc tính quá độ đối tượng sau khi nhận dang - thiết kế bộ điều khiển pid số trên nền vi điều khiển pic
Hình 3.5 Đặc tính quá độ đối tượng sau khi nhận dang (Trang 77)
Hình 3.6 Sai lệch mô hình nhận dạng - thiết kế bộ điều khiển pid số trên nền vi điều khiển pic
Hình 3.6 Sai lệch mô hình nhận dạng (Trang 77)
Hình 3.7  Mô phỏng trên Simulink các phương pháp điều khiển - thiết kế bộ điều khiển pid số trên nền vi điều khiển pic
Hình 3.7 Mô phỏng trên Simulink các phương pháp điều khiển (Trang 79)
Hình 3.11: Các chế độ của L298 - thiết kế bộ điều khiển pid số trên nền vi điều khiển pic
Hình 3.11 Các chế độ của L298 (Trang 81)
Hình 3.14 : Phương thức hoạt động Encoder quang tương đối - thiết kế bộ điều khiển pid số trên nền vi điều khiển pic
Hình 3.14 Phương thức hoạt động Encoder quang tương đối (Trang 83)
Hình 3.16 : Sơ đồ xung của En coder quang tương đối(mô hình 2) - thiết kế bộ điều khiển pid số trên nền vi điều khiển pic
Hình 3.16 Sơ đồ xung của En coder quang tương đối(mô hình 2) (Trang 84)
Hình 3.17 Sơ đồ hệ thốngđiều khiển động cơ - thiết kế bộ điều khiển pid số trên nền vi điều khiển pic
Hình 3.17 Sơ đồ hệ thốngđiều khiển động cơ (Trang 85)
Hình 3.19 Cấu trúc khối điều khiển động cơ - thiết kế bộ điều khiển pid số trên nền vi điều khiển pic
Hình 3.19 Cấu trúc khối điều khiển động cơ (Trang 86)
Hình 3.20 Đặc tính với bộ điều khiển PI - thiết kế bộ điều khiển pid số trên nền vi điều khiển pic
Hình 3.20 Đặc tính với bộ điều khiển PI (Trang 88)
Hình 3.22  Hệ thống khi có nhiễu - thiết kế bộ điều khiển pid số trên nền vi điều khiển pic
Hình 3.22 Hệ thống khi có nhiễu (Trang 89)

TỪ KHÓA LIÊN QUAN

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN

w