Tư vấn: 0979.466.469 / 0938.128.290

MENU

Ngắt trong Arduino

Báo giá đặt hàng nhập

Các ngắt dừng công việc hiện tại của Arduino để có thể thực hiện một số công việc khác.

Giả sử bạn đang ngồi ở nhà, trò chuyện với ai đó. Đột nhiên điện thoại reo. Bạn ngừng trò chuyện và nhấc điện thoại để nói chuyện với người gọi. Khi bạn kết thúc cuộc trò chuyện qua điện thoại, bạn quay lại trò chuyện với người đó trước khi điện thoại reo.

Tương tự, bạn có thể coi thói quen chính là trò chuyện với ai đó, tiếng chuông điện thoại khiến bạn ngừng trò chuyện. Quy trình phục vụ ngắt là quy trình nói chuyện qua điện thoại. Khi cuộc trò chuyện qua điện thoại kết thúc, bạn quay trở lại thói quen trò chuyện chính của mình. Ví dụ này giải thích chính xác cách một ngắt khiến bộ xử lý hoạt động.

Chương trình chính đang chạy và thực hiện một số chức năng trong một mạch. Tuy nhiên, khi một ngắt xảy ra, chương trình chính sẽ tạm dừng trong khi một chương trình khác được thực hiện. Khi quy trình này kết thúc, bộ xử lý sẽ quay lại quy trình chính một lần nữa.

 

Những đặc điểm quan trọng

 

Dưới đây là một số tính năng quan trọng về ngắt

Ngắt có thể đến từ nhiều nguồn khác nhau. Trong trường hợp này, chúng ta đang sử dụng một ngắt phần cứng được kích hoạt bởi sự thay đổi trạng thái trên một trong các chân kỹ thuật số.

Hầu hết các thiết kế Arduino đều có hai ngắt phần cứng (được gọi là "ngắt 0" và "ngắt 1") được nối cứng với các chân I/O kỹ thuật số 2 và 3 tương ứng.

Arduino Mega có sáu ngắt phần cứng bao gồm các ngắt bổ sung ("interrupt2" đến "interrupt5") trên các chân 21, 20, 19 và 18.

Bạn có thể xác định một quy trình bằng cách sử dụng một chức năng đặc biệt được gọi là "Quy trình dịch vụ ngắt" (thường được gọi là ISR).

Bạn có thể xác định quy trình và chỉ định các điều kiện tại cạnh lên, cạnh xuống hoặc cả hai. Ở những điều kiện cụ thể này, ngắt sẽ được phục vụ.

Có thể thực hiện chức năng đó tự động, mỗi khi một sự kiện xảy ra trên chân đầu vào.

 

Các loại ngắt

 


Có hai loại ngắt

Quảng cáo đặt hàng nhập

Ngắt phần cứng xảy ra để đáp ứng với một sự kiện bên ngoài, chẳng hạn như chân ngắt bên ngoài tăng cao hoặc thấp.

Ngắt phần mềm xảy ra để phản hồi lại lệnh được gửi trong phần mềm. Loại ngắt duy nhất mà “ngôn ngữ Arduino” hỗ trợ là hàm attachmentInterrupt().

 

Sử dụng ngắt trong Arduino

 

Ngắt rất hữu ích trong các chương trình Arduino vì nó giúp giải quyết các vấn đề về thời gian. Một ứng dụng tốt của ngắt là đọc bộ mã hóa vòng quay hoặc quan sát đầu vào của người dùng. Nói chung, ISR phải càng ngắn và càng nhanh càng tốt. Nếu bản sketch của bạn sử dụng nhiều ISR, mỗi lần chỉ có thể chạy một ISR. Các ngắt khác sẽ được thực hiện sau khi ngắt hiện tại kết thúc theo thứ tự phụ thuộc vào mức độ ưu tiên mà chúng có.

Thông thường, các biến toàn cục được sử dụng để truyền dữ liệu giữa ISR và chương trình chính. Để đảm bảo các biến được chia sẻ giữa ISR và chương trình chính được cập nhật chính xác, hãy khai báo chúng là không ổn định.

Cú pháp câu lệnh attachInterrupt

attachInterrupt(digitalPinToInterrupt(pin),ISR,mode);//được đề xuất cho bo mạch arduino
attachInterrupt(pin, ISR, mode) ; // khuyên dùng Arduino Do, chỉ Zero
// đối số chân: số chân
// đối số ISR: ISR sẽ gọi khi xảy ra ngắt;
//hàm này không được nhận tham số và không trả về gì cả.
// Chức năng này đôi khi được gọi là chương trình phục vụ ngắt.
// chế độ đối số: xác định khi nào nên kích hoạt ngắt.

Ba hằng số sau đây được xác định trước là các giá trị hợp lệ -

LOW để kích hoạt ngắt bất cứ khi nào chân ở mức thấp.

CHANGE để kích hoạt ngắt bất cứ khi nào chân thay đổi giá trị.

FALLING bất cứ khi nào chân đi từ cao xuống thấp.

Ví dụ

int pin = 2; // xác định chân ngắt thành 2
volatile int state = LOW; // Để đảm bảo các biến được chia sẻ giữa một ISR
// chương trình chính được cập nhật chính xác, hãy khai báo chúng là không ổn định.

void setup() {
pinMode(13, OUTPUT); // đặt chân 13 làm đầu ra
attachInterrupt(digitalPinToInterrupt(pin), blink, CHANGE);
//ngắt ở chân 2 nhấp nháy ISR khi chân thay đổi giá trị
}
void loop() {
digitalWrite(13, state); // chân 13 bằng giá trị trạng thái
}

void blink() {
// Hàm ISR
state = !state; // chuyển đổi trạng thái khi xảy ra ngắt
}

Gia công pcb 932*150
Sản phẩm nổi bật
Sale 0%
85000 /Cái
/ Cái

Code: 7204-243 Còn hàng

Lưu xem sau
Sale 0%
PIC16 IC PIC MCU FLASH 2KX14 28-SOIC
27000 /Cái
/ Cái

Code: 7204-036 Còn hàng

Lưu xem sau
Sale 0%
9000 /Sợi
/ Sợi

Code: M-7006-052 Còn hàng

Lưu xem sau
Sale 0%
51000 - 58000 /Cái
/ Cái

Code: 7204-045 Còn hàng

Lưu xem sau
Hỗ trợ liên kết
0979466469
0899909838
0938128290
0899909838
Khiếu nại: 0964238397
0979466469
0868565469
0868565469

Hotline: 0979 466 469

Loading
0964238397
Bạn cần linh kiện mẫu ? 7-11 ngày