Ngắt trong vi điều khiển là gì?
Ngắt là quá trình dừng chương trình chính đang chạy để ưu tiên thực hiện chương trình khác, chương trình này được gọi là Quy trình dịch vụ ngắt (isr). Sau khi thực hiện quy trình dịch vụ ngắt, bộ vi điều khiển sẽ trở lại công việc trước đó.
arduino ngắt
avr có ít nhất 2 bộ hẹn giờ. Bắt đầu từ atmega8, có 2 bộ định thời 8bit và 1 bộ định thời 16bit. Chip atmega2560 trên bo mạch arduino mega có 2 (8bit) + 4 (16bit) = 6 bộ định thời. arduino không hỗ trợ thư viện ngắt bộ hẹn giờ, vì vậy chúng tôi sẽ sử dụng thư viện của bên thứ ba
Bạn Đang Xem: Chia sẻ về ngắt Timer trên Arduino
Tải xuống thư viện tại: Tải xuống
Chi tiết Thư viện: Thư viện Hẹn giờ Một
Tải xuống Thư viện Timer Three
Ví dụ:
Chia sẻ thêm:
timerone và timerthree cho phép bạn sử dụng bộ đếm thời gian 16 bit được tích hợp sẵn.
Yêu cầu phần cứng
Các thư viện này sử dụng timer1 và timer3.
Mỗi bộ hẹn giờ điều khiển chân pwm. Tương tự () của các chân này sẽ không hoạt động khi sử dụng các thư viện này, nhưng bạn có thể sử dụng hàm thư viện pwm ().
Cách sử dụng cơ bản
Bộ hẹn giờ được định cấu hình để lặp lại phép đo trong một khoảng thời gian, tính bằng micro giây. Vào cuối mỗi chu kỳ, một chức năng ngắt có thể được chạy. Pin pwm cũng có thể được định cấu hình để chuyển đổi trong một phần của chu kỳ.
Xem Thêm : Vanity Là Gì
Nếu sử dụng timerthree, hãy thay thế “timer1” bằng “timer3”.
Cấu hình
timer1.initialize (micro giây);
Bắt đầu sử dụng bộ hẹn giờ. Chức năng này phải được gọi đầu tiên. “Microseconds” là khoảng thời gian được bộ đếm thời gian sử dụng. timer1.setperiod (micro giây);
Đặt một khoảng thời gian mới sau khi thư viện đã được khởi chạy.
Run Control
timer1.start ();
Bắt đầu hẹn giờ, bắt đầu một khoảng thời gian mới.timer1.stop ();
dừng timer.timer1.restart ();
Khởi động lại bộ hẹn giờ, bắt đầu bằng một khoảng thời gian mới.timer1.resume ();
Tiếp tục chạy bộ hẹn giờ đã dừng. Một thời kỳ mới đã không bắt đầu.
đầu ra tín hiệu pwm
timer1.pwm (pin, nhiệm vụ);
Xem Thêm : Ce là gì? Những sản phẩm bắt buộc cần chứng nhận ce
Định cấu hình một trong các chân pwm của bộ hẹn giờ. “duty” là từ 0 đến 1023, trong đó 0 làm cho chân luôn ở mức thấp và 1023 làm cho chân luôn ở mức cao. timer1.setpwmduty (pin, nhiệm vụ);
Đặt pwm mới mà không cần định cấu hình lại các chân. Điều này nhanh hơn một chút so với pwm (), nhưng pwm () phải được sử dụng ít nhất một lần để định cấu hình pin.timer1.disablepwm (pin);
Ngừng sử dụng pwm trên mã pin. Pin trở lại được điều khiển bởi digitalwrite ().
Chức năng ngắt
timer1.attachinterrupt (chức năng);
Chạy một chức năng mỗi khi hết khoảng thời gian. Hàm chạy như một ngắt, vì vậy cần đặc biệt chú ý chia sẻ bất kỳ biến nào giữa hàm ngắt và chương trình chính. timer1.detachinterrupt ();
Tắt ngắt, do đó, chức năng không còn chạy nữa.
Chương trình mẫu
Sự cố về ngữ cảnh gián đoạn
Cần thiết kế đặc biệt để chia sẻ dữ liệu giữa mã ngắt và phần còn lại của chương trình.
Các biến thường phải thuộc loại “dễ bay hơi”. dễ bay hơi nói với trình biên dịch để tránh tối ưu hóa giả định rằng các biến không thể thay đổi một cách tự nhiên. Trình biên dịch cần gợi ý này vì các hàm của bạn có thể thay đổi các biến khi chương trình của bạn sử dụng chúng. Nhưng biến động một mình thường là không đủ.
Các ngắt thường phải được tắt khi truy cập các biến được chia sẻ. Ngay cả với biến động, nếu một ngắt thay đổi một biến multibyte giữa một loạt các lệnh, nó có thể bị đọc không chính xác. Nếu dữ liệu của bạn có nhiều biến, chẳng hạn như mảng và số lượng, thì thường cần phải vô hiệu hóa ngắt cho toàn bộ chuỗi mã truy cập dữ liệu.
Chi tiết
Sự phát triển mới của timerone xuất hiện trên trang github này: 1 2
Nguồn: https://anhvufood.vn
Danh mục: Kinh Nghiệm
- Phố trụy lạc ở Sài Gòn: Theo chân dân chơi…
- Cách làm ốc nhồi hấp sả thơm lừng, thịt beo béo ai ăn cũng khen nức nở
- Tình yêu thương là gì? Biểu hiện trong cuộc sống như thế nào?
- Học sinh lớp 8 đặc biệt chú ý các tác phẩm này khi ôn Ngữ văn HKII
- Lý thuyết Mở đầu môn hoá học (mới 2022 + Bài Tập) – Hóa học 8