Chương 10
Ngt (Interrupts)
Nguyễn Thiên Trường 1
Tài liệu tham khảo:
1. Chương 10: Ngắt (Interrupts) (Giáo trình VXL)
2. Muhammad Ali Mazidi, AVR Microcontroller and Embedded Systems: Using Assembly and C,
Pearson New International Edition, 2014.
3. Datasheet ATmega324P
4. https://nicerland.com/avr/
5. http://www.hocavr.com/
6. https://www.youtube.com/watch?v=Fr2K9pzec8g&list=PLgwJf8NK-
2e55CdbY_WnY6pejPHoojCkJ
Nguyễn Thiên Trường 2
10.1 Giới thiệu
10.2 Tổ chức ngắt của ATmega324P
10.3 Lập trình ngắt Timer
10.3.1 Ngắt Timer tràn
10.3.2 Ngắt kết quả so sánh Timer, bt ngõ vào Timer1
10.4 Lập trình ngắt USART
10.5 Lập trình ngắt ngoài
10.5.1 Ngắt ngoài ngõ INT2:INT0
10.5.2 Ngắt đổi trạng thái chân (PCINT: Pin Change
Interrupt)
10.1 Giới thiệu
3
Nguyễn Thiên Trường
Ngt cho phép đáp ứng tức thời 1 u cầu,
gọi u cầu ngắt (interrupt request),
chương trình chính sẽ tạm thời dừng
chuyển sang phục vụ ngay đoạn chương
trình đáp ứng theo yêu cầu ngt, gọi
trình phục vụ ngt (ISR: Interrupt Service
Routine).
Sau khi thực hiện ISR xong, MCU sẽ tr về
tiếp tục thực hiện chương trình chính tại
điểm dừng trước đó.
Ngt một tác động bất đồng bộ, thể điều khiển chương
trình chính dừng bất kỳ tại thời điểm nào để chuyển sang trình
phục vụ yêu cầu ngt (ISR).
Nguyễn Thiên Trường 4
So sánh giữa ngắt (Interrupt) hỏi vòng (Polling)
Chương trình hỏi ng không đáp ứng được hai vấn đề quan
trọng:
1. Không đáp ứng được yêu cầu tức thời.
2. MCU mất thời gian chờ ( dụ: chờ trạng thái nút nhấn, cờ
báo,) không xử được các công việc khác hiệu suất
làm việc của MCU không cao.
Chương trình sử dụng ngt đáp ứng được hai vấn đề quan
trọng:
1. Đáp ứng được yêu cầu tức thời (bất đồng bộ) bất kỳ lúc nào
xy ra yêu cầu ngt.
2. MCU không mất thời gian chờ các dấu hiệu xy ra ngt hiệu
suất làm việc của MCU rất cao.
Nguyễn Thiên Trường 5
So sánh giữa ISR (chương trình phục vụ ngắt) CTCon
ISR chương trình con khác biệt nhau các điểm sau:
ISR lưu các trạng thái yêu cầu ngắt hiện hành (nếu ) mức ưu tiên ngt.
Kết thúc ISR lệnh RETI (Return from Interrupt), thay RET đối với chương
trình con. Ngoài việc phục hồi lại địa chỉ điểm dừng trong chương trình
chính, còn phục hồi lại các trạng thái yêu cầu ngắt hiện hành mức ưu tiên
ngắt được lưu trước đó.
ISR bắt đầu tại một địa chỉ cố định của Flash ROM gọi vector ngắt (do nhà
sản xuất quy định), còn chương trình con thể bắt đầu tại bất kỳ địa chỉ
nào trong vùng Flash ROM khả dụng.
ISR thể thực hiện tại bất kỳ thời điểm nào trong chương trình chính khi
tín hiệu yêu cầu ngt, miễn khai báo cho phép ngắt tương ứng. Còn
chương trình con chỉ thực hiện khi lệnh gọi, nghĩa phải theo dạng hỏi
vòng.