Cách Reset Arduino - Phần 2

I. Giới thiệu

Việc đưa hệ thống về trạng thái ban đầu được ứng dụng rất nhiều và hiệu quả cũng rất cao. Board mạch Arduino cũng là một hệ thống nhỏ với chip ATmega cho nên việc reset hệ thống là hoàn toàn khả thi!!!

Trong bài viết của ban Tôi Yêu Arduino : Cách reset board Arduino bằng phần mềm để giúp các dự án lọc nhiễu , bạn có giới thiệu cách Reset Arduino. Nhưng mình thấy vẫn còn thiếu sót...Nên bài viết này sẽ bổ sung thêm những cách Reset Arduino độc và lạ hơn!!!

II. Các cách để Reset Arduino

1. Tương tác vào chân Reset của Arduino

Như các bạn đã biết...khi chúng ta ấn nút reset trên board Arduino thì nó tương đương với việc bạn nối trực tiếp chân Reset trên board vào chân GND thông qua điện trở 10K Ôm. Vì vậy, muốn Reset board bằng Code các bạn có thể nối chân Reset vào 1 chân tín hiệu và biến chân tín hiệu đó thành GND...!!!!

Bạn sẽ tự tạo cho mình một hàm Reset...và trong chương trình...nếu cần Reset bạn chỉ cần gọi hàm này ra:

 void setup()
{ 
  pinMode( 8, OUTPUT);
  digitalWrite( 8, HIGH);
}
 
void loop()
{
  Reset();
}
void Reset()
{
  digitalWrite( 8, LOW);
}

2. Sử dụng thư viện có sẵn ( cái này đi sưu tầm thôi )

Có một phương pháp để reset hệ thống thiết bị mà người ta gọi đó là Watchdog Reset. Nếu bạn đang thao tác trên Arduino thì Arduino có một thư viện có sẵn đó là “wdt.h”. Với câu lệnh wdt_enable() và các thông số:

  • DTO_15MS
  • WDTO_30MS
  • WDTO_60MS
  • WDTO_120MS
  • WDTO_250MS
  • WDTO_500MS
  • WDTO_1S
  • WDTO_2S
  • WDTO_4S
  • WDTO_8S

Tượng trưng cho 15 mili giây tới 8 giây là thời gian đợi trước khi thực sự reset Board Arduino.

#include <avr/wdt.h>
 
void ResetBoard( uint8_t time) 
{
  wdt_enable(time);
  while(1) {}
}
 
void setup()
{
 
}
 
void loop() 
{
 ResetBoard( WDTO_60MS);
}

3. Sử dụng Code:

Arduino cho phép bạn nhúng code ngôn ngữ Assembly vậy ta có thể khiến chương trình “reset” bằng cách cho “nhảy” đến dòng code đầu tiên của chương trình. Theo như mình biết Assembly có câu lệnh nhảy jmp và nhảy đến dòng code 0. :v 

void ResetBoard()
{
  asm volatile ( "jmp 0");  
}

III. Kết luận

Các bạn có cảm thấy đơn giản hơn không ạ??? Chỉ với vài dòng Code ngắn gọn...Bạn đã có thể Reset Board trực tiếp = code của mình rồi!!! Chúc các bạn thành công!!!!

lên
25 thành viên đã đánh giá bài viết này hữu ích.
Từ khóa: 
Các dự án được truyền cảm hứng

Cánh tay robot 4 bậc tự do - Điều khiển bằng máy tính dùng LABVIEW

Thông qua các phương tiện thông tin trên các diễn đàn Internet và các trung tâm học tập thực hành, cho thấy nhu cầu học tập và nghiên cứu cũng như tự mày mò tìm hiểu về nhiều lĩnh vực trong ngành điện điện tử nói chung và ngành tự động hóa nói riêng là rất cao. Hiện nay trong các nhà máy có các dây chuyền sản xuất, có rất nhiều các tay máy hoạt động. Robot công nghiệp đã có mặt trong sản xuất từ nhiều năm trước, ngày nay robot công nghiệp được dùng ở nhiều lĩnh vực sản xuất. đó là xuất phát từ những ưu điểm mà robot đó đã được chọn và đúc kêt lại trong quá trình sản xuất, robot có những tính năng mà con người không thể có được, khả năng làm việc ổn định,làm việc trong môi trường độc hại. Do đó việc đầu tư nghiên cứu, chế tạo ra những loại robot phục vụ cho công cuộc tự động hóa sản xuất là rất cần thiết cho hiện tại và trong tương lai.

lên
18 thành viên đã đánh giá bài viết này hữu ích.
Các bài viết cùng tác giả

Giám sát camera ở mọi nơi trên thế giới - NAT PORT cho mô hình gồm MODEM và ACCESS POINT

Sau khi đọc bài viết của anh Nguyễn Hiếu, mình cảm thấy bài viết rất hay và nảy ra ý định làm một camera stream với máy chủ đoàng hoàng không cần dùng Raspberry Pi....!!!!

lên
20 thành viên đã đánh giá bài viết này hữu ích.

Nên chọn Arduino hay Raspberry Pi để phát triển các dự án IoT?

Nếu bạn là người quen thuộc với các dự án điện tử dạng tự làm (Do-It-Yourself hay còn gọi tắt là DIY), có lẽ bạn đã nghe nói về những tính năng tuyệt vời của Arduino và Raspberry Pi. Thậm chí bạn có thể cho rằng 2 nền tảng phần cứng này đang cạnh tranh quyết liệt để giải quyết các vấn đề giống nhau.

lên
42 thành viên đã đánh giá bài viết này hữu ích.
Từ khóa: