Nhiệm vụ chung: Cần tìm hiểu nhiệm vụ, cấu tạo của PIC 8259Avà nguyên tắc hoạt động của PIC 8259A.Bài tập lớn bao gồm những vấn đề quan trọng sau:+ Phương pháp trao đổi tin bằng điều khiển ngắt, quá trình ngắt.+ Giới thiệu chung, nhiệm vụ và cấu tạo về PIC 8259A.+ Nguyên tắc ghép nối và nguyên tắc hoạt động.+ Lập trình cho PIC 8259A.Yêu cầu:Mọi thành viên và đọc giả nắm bắt được các nội dung quantrọng và tìm hiểu thêm về các vấn đề có liên quan để có thể hiểu rõhơn về vi mạch điều khiển ưu tiên ngắt PIC 8259A, cơ chế hoạt độngcủa hệ thống ngắt cứng với PIC 8259A (Priority Interrupt Controller)
Trang 1MỤC LỤC
MỤC LỤC 1
LỜI NÓI ĐẦU 3
Chương I: Giới thiệu chung về phương pháp trao đổi tin bằng điều khiển ngắt, quá trình ngắt và PIC 8259A 4
1 Khái niệm và phân loại ngắt 4
1.1 Khái niệm ngắt: 4
1.2 Phân loại ngắt: 4
2 Quá trình xử lý ngắt: 6
3 Bộ điều khiển ngắt PIC 8259A: 6
Chương II: Giới thiệu chung, nhiệm vụ, cấu tạo về vi mạch điều khiển ưu tiên ngắt của PIC 8259A: 7
1.Giới thiệu chung: 7
2 Nhiệm vụ của PIC 8259A: 8
3 Cấu tạo của PIC 8259A: 8
Chương III: Sơ đồ ghép nối, nguyên tắc ghép nối và nguyên tắc hoạt động của PIC 8259A: 9
1.Sơ đồ ghép nối: 9
2 Nguyên tắc ghép nối và nguyên tắc hoạt động 11
2.1 Nguyên tắc ghép nối 11
2.2 Nguyên tắc hoạt động: 14
2.2.2 ICW2 at port 21h ch ọn số hiệu ngắt: 16 2.2.3 ICW3: thường được sử dụng khi có ghép tầng nhiều PIC 17
Trang 22.2.5 Operation control word 1: 18
2.2.6 Operation control word 2: 19
2.2.7 Operation Control word 3: 20
3 Các chế độ hoạt động: 21
3.1 Chế độ hoạt động đầy đủ (Fully Nested Mode): 21
3.2 Chế độ hoán đổi thứ tự ưu tiên (Rotating Priority Mode): 22
3.3 Chế độ tự động (Auto Mode): 22
3.4 Chế độ không tự động (Specific Mode): 22
3.5: Chế độ che đặc biệt (Special Mask Mode - SMM): 23
3.6: Chế độ quay vòng (Polled Mode): 23
3.7: Cascading: 24
Chương IV: Lập trình cho vi mạch PIC 8259A 25
1.Các bước lập trình: 25
2.Địa chỉ các thanh ghi 25
KẾT LUẬN 27
Trang 3LỜI NÓI ĐẦU
Nhiệm vụ chung: Cần tìm hiểu nhiệm vụ, cấu tạo của PIC 8259A
và nguyên tắc hoạt động của PIC 8259A
Bài tập lớn bao gồm những vấn đề quan trọng sau:
+ Phương pháp trao đổi tin bằng điều khiển ngắt, quá trình ngắt + Giới thiệu chung, nhiệm vụ và cấu tạo về PIC 8259A
+ Nguyên tắc ghép nối và nguyên t ắc hoạt động
+ Lập trình cho PIC 8259A
Yêu cầu:
Mọi thành viên và đ ọc giả nắm bắt được các nội dung quan trọng và tìm hiểu thêm về các vấn đề có liên quan để có thể hiểu rõ hơn về vi mạch điều khiển ưu tiên ngắt PIC 8259A, cơ chế hoạt động của hệ thống ngắt cứng với PIC 8259A (Priority Interrupt Controller)
Nhóm sinh viên thực hiện!
Trang 4Chương I: Giới thiệu chung về phương pháp trao đổi tin bằng điều
khiển ngắt, quá trình ngắt và PIC 8259A
1 Khái niệm và phân loại ngắt
1.1 Khái niệm ngắt:
Trong thực tế người ta rất muốn tận dụng khả năng của CPU để làm thêm được nhiều công việc khác nữa, chỉ khi nào có yêu cầu trao đổi dữ liệu thì mới yêu cầu CPU tạm dừng công việc hiện tại để phục
vụ việc trao đổi dữ liệu Sau khi hoàn thành vi ệc trao đổi dữ liệu thì CPU lại phải quay về để làm tiếp công việc đang bị gián đoạn Cách
làm việc theo kiểu này gọi là ngắt CPU (gián đoạn hoạt động của
CPU) để trao đổi dữ liệu
Ngắt là quá trình CPU t ự ngưng hoạt động hiện tại khi có một
yêu cầu ngắt gửi đến để chuyển sang thực hiện một chương trình con
phục vụ ngắt tương ứng như báo lỗi, trao đổi dữ liệu với thiết bị ngoại
vi, phục vụ yêu cầu khẩn, … Sau khi thực hiện xong thì quay trở lại
thực hiện tiếp công việc đang tạm dừng ở trên
1.2 Phân loại ngắt:
Hình 1.1: Phân l oại các l oại ngắ t
Ngắt cứng Ngắt tự động Ngắt mềm
Trang 5a) Ngắt mềm: là loại ngắt được gọi bằng một lệnh trong chương
trình ngôn ngữ máy Ngắt mềm được thực hiện trên hợp ngữ thông qua lệnh INT Đối với các ngôn ngữ bậc cao hơn, vẫn cho phép thực hiện gọi ngắt nhưng phải được biên dịch thành lệnh INT trong hợp ngữ rồi mới thực hiện
b) Ngắt cứng: là sự kiện CPU phải tạm dừng tiến trình đang thực
hiện để chuyển sang thực hiện tiến trình phục vụ ngắt khi có yêu cầu ngắt từ phần mạch bên ngoài gửi đến CPU Các tín hiệu này đến từ các chân INTR và NMI
- Ngắt cứng NMI là yêu cầu ngắt không che được tương đương với ngắt mềm INT2
- Ngắt cứng INTR là yêu cầu ngắt che được Yêu cầu ngắt tại chân INTR có thể có kiểu ngắt N nằm trong khoảng 0-FFH Kiểu ngắt này phải được đưa vào bus dữ liệu để CPU có thể đọc được khi có xung INTA trong chu kì trả lời chấp nhận ngắt
c) Ngắt tự động (các trường hợp ngoại lệ): là các ngắt do các lỗi
nảy sinh trong quá trình ho ạt động của CPU như phép chia cho 0, x ảy
- IRET: Câu lệnh trở về khi kết thúc chương trình x ử lý ngắt
- HLT: Treo CPU cho đ ến khi có ngắt hoặc khởi động lại
Trang 62 Quá trình xử lý ngắt:
Hình 1.2: Quá trình xử l ý n gắt
3 Bộ điều khiển ngắt PIC 8259A:
Hình 1.3: Bộ đi ều khiển ng ắt
1: Lưu thanh ghi cờ
7: Khôi phục lại các thanh
ghi trước khi ngắt
+ D0 – D7: Dữ liệu
+ RD, WR: Đọc, ghi (mức thấp)
+ A0: Địa chỉ thanh ghi
+ CS: Chọn Chip
+ CAS0-2: Ghép tầng với PIC khác
+ SP: Xác định PIC chủ (master SP =1) thợ (slave SP =0) + EN: Mở đệm dữ liệu
+ INT: Yêu cầu ngắt
+ INTA: Chấp nhận ngắt
Trang 7Lưu lại thông tin tiến trình bị ngắt
Phục hồi thông tin tiến trình bị ngắt
Chương II: Giới thiệu chung, nhiệm vụ, cấu tạo về vi mạch điều
khiển ưu tiên ngắt của PIC 8259A:
1.Giới thiệu chung:
PIC 8259A là một thiết bị điều khiển ngắt trong CPU giúp CPU
có thể vào/ra dữ liệu bằng phương pháp ngắt cứng trong trường hợp nhiều yêu cầu ngắt cần được phục vụ ta thường dùng vi mạch PIC
8259A để giải quyết vấn đề ưu tiên PIC 8259A có thể giải quyết được
8 yêu cầu ngắt với 8 mức ưu tiên khác nhau PIC 8259A là thi ết bị điều khiển ưu tiên ngắt có thể lập trình được Ta dùng các ngôn ng ữ lập trình khác nhau như asembly, C để lập trình cho PIC 8259A Vi mạch này có ưu điểm là: sắp xếp và xử lí ngắt tốt
Chương trì nh con ph ục vụ n gắt
Tiến trình bị ngắt
Tiến t rình bị n gắt tiếp tụ c thi hành
Tín hiệu yêu cầu ngắt IR Q t ừ
mạch ph ần cứng bên ngoài g ửi đ ến CP U
Hình 2.1 : Mô tả khái ni ệm ng ắt cứng và quá t rình ng ắt cứn g
Thông thường quá trình vào ra theo ngắt cứng được sự trợ giúp của thiết bị điều khiển ngắt PIC (Programmable Interrupt Controller) Một trong những PIC đó có PIC 8259A
Trang 82 Nhiệm vụ của PIC 8259A:
PIC 8259A có chức năng nhận các yêu cầu ngắt IRQ , xử lý ưu tiên ngắt và cung cấp số hiệu ngắt ưu tiên được cao nhất cho CPU , căn
cứ vào số hiệu ngắt CPU sẽ lấy được địa chỉ của chương trình con ph ục
vụ ngắt này.8259A ngắt CPU mục đích để I/O hay CPU phải thực hiện một vấn đề nào đó Vấn đề đó được lập trình thành chương trình con phục vụ ngắt.Để gọi chương trình con này c ần xác định ngắt nào của 8259A phát sinh để gọi chương trình con tương ứng Tức là khi có phát sinh ngắt ở đầu vào IRQ thì gọi chương trình con phục vụ ngắt tương ứng Đây chính là nhiệm vụ của vi mạch điều khiển ưu tiên ngắt PIC 8259A (Priority Interrupt Controller)
3 Cấu tạo của PIC 8259A :
Hình 2.2 : Tổng quan PIC 8259A
PIC 8259A gồm có 27 chân, bao gồm:
- 8 chân IR được đánh số từ IR0 đến IR7 là các chân được đánh
Trang 9- 1 chân SP/ EN (SP: xác định PIC chủ, chủ SP=1, thợ SP=0 EN: mở đệm dữ liệu) là chân thứ 16
- 1 chân INT (yêu cầu ngắt) là chân thứ 17
- 1 chân CS (chọn chip) là chân thứ nhất
- 1 chân WR (ghi) là chân thứ 2
- 1 chân RD (đọc) là chân thứ 3
- 1 chân INTA (chấp nhận ngắt) là chân thứ 26
- 1 chân A0 (địa chỉ thanh ghi) là chân thứ 27
Chương III: Sơ đồ ghép nối, nguyên tắc ghép nối và nguyên tắc
hoạt động của PIC 8259A:
1.Sơ đồ ghép nối:
Hình 3.1 : S ơ đ ồ khối ghép nối PIC 8259A
Trang 10Các khối chức năng:
+ Bộ đệm dữ liệu (Data Buffer): được sử dụng khuếch đại dữ liệu
+ Logic đọc ghi (Read/Write Logic): điều khiển đọc ghi bộ đệm
và so sánh nối tầng: Nối PIC 8259A thành PIC t hợ
+ Logic điều khiển (Control Logic): tạo các tín hiệu ghi và đọc các thanh ghi đệm
+ Thanh ghi ISR (In Service Register): ch ứa các chương trình con
xử lí ngắt
+ PR (Priority Resolver): giải quyết ưu tiên
+ IRR (Interupt Request Register ): thanh ghi tám mức ưu tiên từ TBNV
+ IMR (Interrupt Mask Register) : cho người lập trình biết ngắt có che được hay không Các tín hiệu điều khiển CAS0 đến CAS2 (in, out): các ngõ vào chọn mạch 8259A tới (slave) từ mạch 8259A chủ (master) trong trường hợp dùng nhiều mạch 8259A để tăng yêu cầu ngắt
+ SP/ EN (In/out): (slave program/Enable buffer): Nếu 8259A hoạt động ở chế độ không dùng đệm dữ liệu thì tín hiệu này dùng để xác định mạch 8259A là mạch chủ (SP = 1) hay tới (SP = 0) Nếu
8259A hoạt động ở chế độ có đệm dữ liệu thì tín hiệu này dùng để cho phép giao tiếp giữa 8259A và CPU, khi đó mạch 8259A là master hay slave phải dựa vào từ lệnh khởi động ICW4
+ Int (out): Tín hiệu yêu cầu ngắt đưa đến CPU (INTR)
+ INTA (In): Nhận trả lời chấp nhận ngắt hay không từ CPU
(chân INTA)
Trong trường hợp hệ thống có số lượng ngắt lớn hơn thì có thể mắc nhiều 8259A liên tầng theo hình sau:
Trang 12Thứ tự ưu tiên cố định và số hiệu ngắt tương ứng được thể hiện trong bảng sau:
IRQ Interrupt type DEVICE
2 0AH reserved (2n d 8259A)
Mặc định sử dụng điển hình
Sử dụng thông thường khác
Modem, card video, COM3 (cổng nối tiếp thứ 3),
COM4 (cổng nối tiếp thứ 4)
3 8/16-bit 11
COM2 (second serial port)
COM4 (cổng nối tiếp thứ tư), modem, card âm thanh, mạng lưới thẻ, accelerator thẻ
Trang 134 8/16-bit 12 COM1 (first
serial port)
COM3 (cổng nối tiếp thứ 3) Modem, card âm thanh, mạng lưới thẻ, accelerator thẻ
5 8/16-bit 13 Sound card on old PC/XT
6 8/16-bit 14 Floppy disk
controller
LPT2 (hai cổng song song) LPT3 (cổng song song thứ 3), COM3 (cổng nối tiếp thứ ba) COM4 (cổng nối tiếp thứ tư), modem, card mạng, bộ điều khiển đĩa cứng
7 8/16-bit 15 LPT1 (first
parallel port)
LPT2 (hai cổng song song), COM3 (cổng nối tiếp, COM4 (cổng nối tiếp thứ tư), modem, thẻ âm thanh, mạng lưới thẻ, băng accelerator thẻ
10 16-bit only 5
Card mạng, card âm thanh, SCSI bộ thích ứng chủ, trung kênh IDE, thiết bị PCI
11 16-bit only 6
Card mạng, card âm thanh, máy chủ SCSI, card màn hình, quaternary kênh
Trang 1412 16-bit only 7 PS/2 mouse
Card mạng, card âm thanh, máy chủ SCSI, card màn hình, quaternary kênh IDE, thiết bị PCI
Floating Point Unit (FPU / NPU / Math
Coprocessor)
None
14 16-bit only 9 Primary IDE
channel Bộ thích ứng chủ SCSI
15 16-bit only 10 Secondary
IDE channel Card mạng, SCS
2.2 Nguyên tắc h oạt động:
Khi có một yêu cầu ngắt từ bộ phận ngoại vi (IRQo - IRQ15), 8259A sẽ đưa ra thông báo ngắt bằng tín hiệu INT=1, tín hiệu này được nối với bộ VXL qua chân yêu c ầu ngắt INTR Bộ VXL sau khi nhận được thông báo ngắt sẽ báo lại cho 8259A bằng tín hiệu chấp nhận ngắt INTA= 0 PIC 8259A (chủ) nhận được tín hiệu INTA từ bộ VXL sẽ hoàn tất các xử lý nội bộ theo thứ tự mức ưu tiên Bộ VXL đưa ra xung INTA lần thứ hai và 8259A sẽ trả lời bằng cách đưa ra bus thông tin v ề
số hiệu ngắt (8 bit) Bộ VXL dùng số hiệu ngắt để định vị trí của
chương trình ngắt trong bảng vector ngắt Quy trình xử lý ngắt trong VXL tiếp tục được thực hiện
Trang 162.2.2 ICW2 at port 21h chọn số hiệu ngắt:
Ví dụ: Nếu ta muốn các đầu vào của mạch 8259A có số hiệu ngắt
là 40h 47h ứng với IR0 IR7, ta chỉ cần ghi 40h vào ICW2 Khi đó IR0 có số hiệu ngắt là 40h, IR7 là 47h
Số hiệu ngắt được đưa lên bus dữ liệu để CPU phân biệt được các ngắt của 8259A.Một vấn đề vướng mắc ở đây là: làm cách nào để nhận biết có tín hiệu ngắt đến tại đầu vào IRi để gọi chương trình con ph ục
vụ ngắt tương ứng
Hình 3.7: IC W2 v ới 8088/ 8086
Trang 172.2.3 ICW3: thường được sử dụng khi có ghép tầng nhiều PIC
Hình 3.8: IC W3 2.2.4 ICW4 thiết lập các kết thúc ngắt:
Hình 3.9: IC W4
Trang 18ICW4 là thanh ghi quan tr ọng dùng để quyết định cách kết thúc ngắt của 8259A Bình thường, khi đang thực hiện ngắt thì xung
INTA=0, lúc xung INTA=1 nếu ta không lập trình đưa OCW2 vào đ ể kết thúc ngắt thì CPU vẫn dành thời gian cho ngắt đó
Tuy nhiên nếu set bit 1 bằng 1 tức là chọn chế độ kết thúc ngắt tự động, khi có xung INTA=1 thì sẽ tự động kết thúc ngắt luôn, không cần lập trình OCW2 đ ể kết thúc
Điều này khá quan trọng vì khi có xung yêu cầu ngắt điều hòa vào IRi thì ta không th ể biết lúc nào sẽ hết yêu cầu ngắt Do đó ta nên kết thúc ngắt một cách tự động
Bit1= 1
AEOI (AUTO END OF INTERUPT) = T Ự ĐỘNG KẾT THÚC NGẮT
Thường chỉ quan tâm đến bit 0 và bit 1 Các bit còn lại cứ cho 0 ICW4=00000011b = 03h
Tiếp theo là các thanh ghi đi ều khiển Chúng được ghi vào trong quá trình đang hoạt động Tức là lúc đang phát sinh ngắt Có nghĩa là lúc hoạt động, nếu ta có yêu cầu gì thì đưa vào thô ng qua các OCW (Operation Control Word) Các OCW thường được lập trình trong
chương trình con phục vụ ngắt
2.2.5 Operation control word 1:
Hình 3.10: OC W1 -T hiết lập và đ ọc tr ạng thái yêu c ầu ngắ t
Trang 19Thường trong bài tập, ở bit Iri nào có đầu vào yêu cầu ngắt thì bit tương ứng trong OCW1 set bằng 0 Các bit còn lại set bằng 1
Ví dụ: đưa yêu cầu ngắt từ 8253 vào bit IR7 của 8259A Thì thiết lập OCW1 = 01111111b = 7F h
2.2.6 Operation control word 2:
Xác định cách PIC xử lý yêu cầu ngắt:
- Chế độ ưu tiên cố định: IR0>…>IR7
- Đổi mức ưu tiên tự động: Quay vòng
- Ưu tiên đích danh: Gán mức độ ưu tiên cho từng yêu cầu ngắt
Hình 3.11: Quay vòng ưu ti ên
Trang 20Hình 3.12: OC W2 -Xác định việc xử lý yêu c ầu ngắ t của PIC
2.2.7 Operation Control word 3 :
Hình 3.13: OC W3
Nếu ai chưa hiểu nhiều về OCW3 lắm thì chưa thấy nó quan
trọng Thực ra đối với bài tập thì nó khá quan trọng Chúng ta chỉ nên quan tâm đến các bit1 và bit2 Các bit còn lại có thể cho bằng 0, trừ bit
3 luôn bằng 1
Trang 21Sở dĩ OCW3 quan trọng là vì OCW3 dùng để đọc trạng thái đầu vào ngắt IRQ hoặc thanh ghi ISR ở xung RD tiếp theo Tức là thăm dò trạng thái của thanh ghi IRQ ho ặc thanh ghi ISR, đ ể từ đó gọi chương trình con phục vụ ngắt
Hình 3.14: Thăm dò IRR và ISR
3 Các chế độ hoạt động :
3.1 Chế độ hoạt động đầy đủ (Fully Nested Mode) :
8259A hoạt động trong chế độ này ngay sau khi th ực hiện quá trình khởi tạo mà không cần đến các từ điều khiển hoạt động OCW Trong chế độ này, các yêu cầu ngắt được sắp xếp theo các mức ưu tiên
từ 0 đến 7 Khi một yêu cầu ngắt được chấp nhận, yêu cầu ngắt có mức
ưu tiên cao nhất được thực hiện và vector địa chỉ của nó được truyền lên bus dữ liệu Ngoài ra, một bit của thanh ghi phục vụ ngắt được đặt bằng 1 Bit này gi ữ nguyên giá trị cho đến khi 8088 phát lệnh EOI ngay trước khi trở về từ chu trình phục vụ Trong khi bit của thanh ghi ISR bằng 1, tất cả các ngắt có mức ưu tiên thấp hơn (những ngắt này chỉ được chấp nhận nếu được 8088 chấp nhận thông qua điều khiển
Trang 22Sau khi thực hiện quá trình khởi tạo, tín hiệu yêu cầu ngắt vào IR0 có mức ưu tiên cao nhất và vào IR7 sẽ có mức ưu tiên thấp nhất Thứ tự ưu tiên có thể thay đổi trong chế độ hoán đổi
3.2 Chế độ hoán đổi thứ tự ưu tiên (Rotating Priority Mode) :
8259A hoạt động trong chế độ này khi trong hệ thống có các thiết
bị có các yêu cầu ngắt có mức ưu tiên tương đương nhau như các kênh truyền thông Có hai chế độ hoán đổi mức ưu tiên là ch ế độ hoán đổi
tự động và chế độ hoán đổi đặc biệt
3.3 Chế độ tự động (Auto Mode) :
Trong chế độ này, thiết bị sau khi được phục vụ, được gán cho mức ưu tiên thấp nhất, vì vậy một thiết bị yêu cầu ngắt phải đợi thậm chí có thể phải đợi cho đến khi 7 thiết bị khác được phục vụ xong
3.4 Chế độ không tự động (Specific Mode) :
Trong chế độ này người lập trình viên có thể thay đổi thứ tự ưu tiên ngắt bằng cách lập trình mức ngắt có ưu tiên thấp nhất và bằng cách này xác lập mức ngắt có ưu tiên cao nh ất ví dụ nếu IR5 được lập trình có mức ưu tiên thấp nhất thì IR6 sẽ có mức ưu tiên cao nhất
Lệnh điều khiển được xác định trong OCW2, trong đó R =1, SEOI =1 , các bit L2, L1, L0 xác định mức ưu tiên (tính theo hệ thập phân) của thiết bị có mức ưu tiên thấp nhất
Cần chú ý chế độ này hoạt động độc lập với lệnh EOI và quá
trình hoán đổi mức ưu tiên có thể thực hiện trong khi thực hiện lệnh EOI
EOI (End of Interupt) và SEOI (Specific EOI):
Một lệnh EOI luôn phải được đưa tới 8259A trước khi kết thúc chương trình ngắt để khởi tạo bit tương ứng trong thanh ghi ISR EOI
và SEOI là hai dạng của lệnh EOI là non - specific (không xác định) và specific (xác định) Khi 8259A trong chế độ hoạt động đầy đủ (Fully Neste Mode) nó có th ể xác định bit nào trong thanh ghi ISR c ần khởi tạo bằng lệnh EOI Khi nhận được một lệnh non- specific EOI, 8259A