Tôi sẽ hướng dẫn các bạn về ngắt ngoài của arduino.
Trước hết tôi sẽ ví dụ cho bạn như thế nào là ngắt ngoài.
- Tôi đang học thì có điện thoại gọi đến (có điện thoại là ngắt).
- Tôi đang xem tivi thì có bạn tôi đến (bạn tôi đến là ngắt)
- Chương trình chính (main hoặc loop) đang thực hiện lênh thì chân ngắt ngoài có sự kiện ngắt.
Ngắt trên arduino.
Trình ngắt trên arduino là (interrupt service routine- ISR), có chức năng là tạo một một sự kiện cho mạch arduino. Hầu hết mạch arduino có 2 ngắt ngoài: ngắt 0 (chân số 2) ngắt 1 (chân số 3). Cụ thể như sau:
Board | int.0 | int.1 | int.2 | int.3 | int.4 | int.5 |
Uno, Ethernet | 2 | 3 | ||||
Mega2560 | 2 | 3 | 21 | 20 | 19 | 18 |
Leonardo | 3 | 2 | 0 | 1 | 7 | |
Due | (see below) |
Đặc biệt đối với mạch Arduino Due thì tất cả chân đều có thể là chân ngắt hết. bạn có thể gán chân ngắt bằng hàm attachInterrupt().
Cấu trúc của hàm ngắt
attachInterrupt(thứ tự ngắt, tên chương trình con thực hiện ngắt, chế độ ngắt)
trong đó:
thứ tự ngắt: có kiểu (int), ta điền số 0 đối với ngắt 0, số 1 đối với ngắt 1.
tên chương trình con thực hiện ngắt: khai báo một chương trình con, để khi sự kiện ngắt xảy ra thì sẽ thực hiện chương trình con đó.
chế đó ngắt: khai báo kiểu ngắt, có 4 kiểu ngắt.
tên chương trình con thực hiện ngắt: khai báo một chương trình con, để khi sự kiện ngắt xảy ra thì sẽ thực hiện chương trình con đó.
chế đó ngắt: khai báo kiểu ngắt, có 4 kiểu ngắt.
- LOW: ngăt mức thấp, thực hiện chương trình ngắt khi chân ngắt ở mực thấp (0v)
- CHANGE: Ngắt khi có thay đổi, thực hiện chương trình ngắt khi có thay đổi trên chân ngắt, từ thấp lên cao, từ cao xuống thấp (cạnh lên, cạnh xuống)
- RISING to: Ngắt cạnh lên, thực hiện chương trình ngắt khi chân ngắt từ mức thấp lên mức cao.
- FALLING: Ngắt cạnh xuống, thực hiện chương trình ngắt khi chân ngắt từ mức cao lên mức thấp.
Chú ý:
Hàm ngắt không có thông số trả về.
Khi sử dụng ngắt thì một số hàm như delay() có thể sẽ bị sai vài mili giây, vì trong quá trình thực hiện lệnh delay thì xảy ra ngắt. cũng có ảnh hưởng tương tự đối với các hàm truyền nhận UART.
Ứng dụng của ngắt.
Ngắt thường được sử dụng để giúp vi điều khiển thực hiện chương trình chính xác và thông minh hơn, có thể giúp bạn giải một số khó khăn về thời gian.
Một số chức năng thường dùng ngắt như: Đếm encoder, quản lý các ngõ vào hiệu quả hơn.
Dễ dàng nhận thấy được rằng để đọc xung của encoder, mà không mất xung nào thì chương trình của bạn không thể làm gì khác vì phải kiểm tra liên tục. Nhưng đối với ngắt thì khác, giúp bạn chủ động hơn trong việc bắt sự khi khi có cạnh lên hoặc cạnh xuống ở chân ngắt.
Ví dụ:
Ví dụ:
int led = 13;
volatile int trangthai = LOW; // khai báo biến kiểu volatile, tránh sai số trong quá trình thực hiện ngắt.
void setup() // đoạn chương trình cài đặt
volatile int trangthai = LOW; // khai báo biến kiểu volatile, tránh sai số trong quá trình thực hiện ngắt.
void setup() // đoạn chương trình cài đặt
{
pinMode(led, OUTPUT); // khai báo led là ngõ ra
digitalWrite(2, HIGH); // Treo chân ngắt 0, chân số 2 lên mức cao.
attachInterrupt(0, daoled, CHANGE); // khai báo ngắt 0, chương trình con daoled, chế độ có sự
// thay đổi là sinh ngắt
}
void loop() // đoạn chương trình chính, vòng lặp vô tận.
{
digitalWrite(led, trangthai); // gán tráng thái cho chân led.
}
void daoled() // chương trình con ngắt, khi có ngắt xảy ra sẽ thực hiện chương trình này.
{
trangthai = !trangthai; // đảo trang thái.
}
Đến lượt các bạn thực hành rồi. nếu chưa có board có thể liên hệ tại đây.
Có bao nhiêu loại mặt nạ tự nhiên bổ sung collagen thế nhỉ? Cho mình hỏi collagen có nhiều trong loại thực phẩm nào và nó có tốt cho cơ thể không. Mình đang thắc mắc liệu dùng mặt nạ collagen có tốt không, và có bao nhiêu loại mặt na vậy nhỉ, những loại trái cây chứa nhiều collagen là những loại nào có dễ tìm ngoài chợ không vậy. Collagen là gì? và uống collagen có tác dụng phụ không là điều mà nhiều chị em thắc mắc. Các bà bầu uống collagen khi đang cho con bú có nguy hiểm không và có loại collagen cho bà bầu không. Tùy vào từng loại collagen mà chúng ta uống collagen vào buổi sáng hay tối để tốt nhất cho cơ thể, uống collagen bị tăng cân có bị tăng cân không và hiệu quả như thế nào đối với những người béo phì
ReplyDeletemình xin phép bổ xung thêm 1 ý là trong chương trình con phục vụ ngắt không sử dụng được hàm delay() :p
ReplyDelete