Ngắt là một cơ cấu điều khiển dòng lệnh, cơ cấu này được thiết kế trên hầu hết các bộ điều khiển. Trong quá trình giao tiếp của hệ thống bộ xử lý với thế giới bên ngoài, nhiều sự việc xảy ra theo cách không đồng bộ, chẳng hạn người dùng có thể đã nhấn một công tắc để thực hiện một công việc nào đó, trong khi một byte dữ liệu có thể đã đến cổng nối tiếp. Điều này gây khó khăn cho hoạt động của bộ xử lý khi mà nó phải kiểm tra tất cả các thiết bị để giám sát sự di chuyển của dữ liệu. Ngược lại mọi việc sẽ trở nên tốt hơn nếu các thiết bị này có thể loan báo sự đến nơi của dữ liệu. Đây là tất cả những gì mà cơ chế ngắt phải thực hiện. Thiết bị ngoại vi sẽ ngắt việc thực thi của chương trình chính, và bộ xử lý tạm ngừng việc thực thi chương trình chính, và bộ xử lý tạm ngừng việc thực thi chương trình bình thường để thẩm tra nguồn ngắt và để thực hiện các thao tác đáp ứng cần thiết, việc thực thi chương trình đã bị ngắt lại tiếp tục. Chương trình ngắt chỉ đơ giản giống hệt như một chương trình con (subrountine), ngoại trừ một đặc điểm là việc thực thi của đoạn chương trình ngắt này không bị bộ xử lý đoán trước là sẽ xuất hiện ở một thời điểm cụ thể nào. Bộ vi điều khiển AVR có rất nhiều cấu trúc ngắt sau đây em chỉ trình bày về các loại ngắt mà mình sẽ dùng.
Đối với một loại vi điều khiển sẽ có nhiều vectơ ngắt để phục vụ cho chương trình như vectơ ngắt ngoài, ngắt nối tiếp, ngắt định thời. Sau đây là các nguyên nhân gây ngắt của AVR
Reset : Chân ngoài, Preset, Brown-out reset và Watchdog reset
INT0 : Ngắt ngoài yêu cầu 0
INT1 : Ngắt ngoài yêu cầu 1
Timer1 CAPT : Ngắt do sự kiện Đếm/Định thời 1
Timer1 COMPA : Ngắt do đạt giá trị so sánh A Đếm/Định thời 1
Timer1 COMPB : Ngắt do đạt giá trị so sánh B Đếm/Định thời 1
Timer1 OVF: Ngắt do tràn bộĐếm/Định thời 1
Timer0 OVF: Ngắt do tràn bộĐếm/Định thời 0
SPI,STC : Giao tiếp nối tiếp xong
USART, RXC : Nhận nối tiếp xong
USART, UDRE : Thanh ghi dữ liệu nối tiếp rỗng
USART, TXC : Truyền nối tiếp xong
ANA_COMP : So sánh tương tự
INT2 : Yêu cầu ngắt ngoài 2
TIMER0 COMP : Đạt giá trị đếm bộ Đếm/Định thời 0
EE_RDY : EEPROM sẵn sàng
SPM_RDY : Bộ nhớ chương trình sẵn sàng
Trong chương trình dành cho mạch giao tiếp có sử dụng đến hai loại vectơ ngắt là ngắt do định thời và ngắt do nối tiếp. Vì vậy, trong phần này chỉ giới thiệu hai loại vectơ ngắt này.
b )Giao tiếp nối tiếp
Bộ truyền nhận đồng bộ và không đồng bộ nối tiếp (USART) là một thiết bị giao tiếp nối tiếp có tính tương thích cao có các tính chất chính:
Chức năng kép (Bộ truyền và nhận độc lập)
Chức năng xung đồng bộ chính và phụ
Cung cấp định dạng nối tiếp với 4,5,6 hoặc 7 bits dữ liệu và 1 hoặc 2 bits stop
Tạo ra và kiểm tra cờ chẵn lẽ bởi phần cứng
Phát hiện lỗi tràn
Phát hiện lỗi dạng dữ liệu
Chống nhiễu bằng bit start và bộ lọc thông thấp
3 vectơ ngắt do truyền TX xong, thanh ghi truyền TX rỗng, nhận RX xong
Chế độ truyền thông đa xử lý
Chế độ xung đồng bộ gấp đôi
Bộ tạo tốc độ Baud nhiều giải pháp
Chế độ tăng gấp đôi tốc độ dao tiếp
c )Bộ đếm/định thời
TIMER/COUNTER0 là một module đếm/định thời 8-bits, đơn kênh, đa mục đích với các tính chất sau
Bộ đếm đơn kênh
Xoá timer khi đạt được giá trị so sánh (Tự động nạp lại)
Xung tự do được tự động chữa bởi bộ điều chế độ rộng chuỗi xung (PWM)
Tạo tần số
Đếm sự kiện bên ngoài
Bước đếm 10 bits
Cung cấp ngắt khi đạt được giá trị so sánh (T0V0 và 0CF0)
Cho phép tạo xung mở rộng từ bộ dao động thạch anh ngoài 32 kHz
TIMER/COUNTER1 là bộ Đếm/định thời 16-bit thiết kế để cho phép chương trình định thời một cách chính xác (quản lý sự kiện), tạo sóng và đếm tín hiệu thời gian với các tính chất chính như sau:
Thiết kế 16-bit thực ( ví dụ cho phép 16-bit PWM)
Ba đơn vị so sánh ra độc lập
Gấp đôi bộ đệm so sánh ra
Xoá bỏ nhiễu đầu vào được phát hiện
Xoá bộ đếm khi đạt giá trị so sánh (Tự động nạp lại)
Xung tự do được tự động chữa bởi bộ điều chế độ rộng chuỗi xung (PWM)
Khoảng PWM thay đổi
Tạo tần số
Đếm sự kiện bên ngoài
nguồn ngắt độc lập (TOV1, OCF1A, OCF1B, v à ICF1)