
Khi bạn làm việc tại nhà, có một số lợi ích từ công việc. Bạn có thể tự chuẩn bị bữa ăn, tranh thủ giặt đồ vào giờ nghỉ trưa, và uống bất kỳ lượng trà nào bạn muốn. Tôi sử dụng ấm đun nước trên bếp để đun sôi nước cho trà của mình, vì vậy khi tôi đang mải mê viết, tôi dựa vào tiếng huýt sáo cao vút của nó để biết khi nào nước sôi.
Đôi khi khi tôi không cẩn thận, tôi không đặt nắp ấm đúng cách. Kết quả là, ấm vẫn im lặng mặc dù nước bên trong nó đang nhanh chóng chuyển thành hơi. Hành vi không cẩn thận của tôi trong tình huống này chỉ có nghĩa là tôi sẽ uống ít trà hơn, trong hệ thống nhúng, hậu quả sẽ cao hơn nhiều nếu bạn không biết cách vận hành Bộ Đếm Giờ Watchdog (WDT). Khi bộ đếm giờ của bạn không hoạt động, một vi điều khiển bị trì trệ sẽ tiếp tục bị trì trệ và gây ra sự cố cho hệ thống nhúng của bạn. Hãy xem cách hoạt động của bộ đếm giờ watchdog, cách triển khai mạch bộ đếm giờ watchdog, và làm thế nào để chúng hoạt động đúng cách ngay từ lần đầu tiên để bạn có thể tránh được tình huống này.
Bộ đếm thời gian giám sát (Watchdog Timer - WDT) là một tính năng an toàn đơn giản trong điện tử giúp khởi động lại vi điều khiển trong trường hợp xảy ra sự cố về phần cứng hoặc mạch giám sát phần mềm. Các bộ đếm thời gian giám sát STM32 có sẵn dưới dạng một mạch tích hợp (IC) riêng biệt hoặc như một tính năng tích hợp sẵn trong chính vi điều khiển. Không sử dụng WDT trong thiết kế hệ thống nhúng thường là một sai lầm không thể tha thứ.
Cách hoạt động của Bộ đếm thời gian giám sát rất đơn giản. Nó được lập trình để đếm ngược trong một khoảng thời gian giám sát cố định. Trong quá trình hoạt động bình thường, vi điều khiển sẽ định kỳ làm mới bộ đếm thời gian để ngăn chặn việc hết hạn. Nếu vi điều khiển không phản hồi, nó sẽ không làm mới Bộ đếm thời gian giám sát. Kết quả là, khi Bộ đếm thời gian giám sát hết hạn, nó sẽ kích hoạt một xung hoặc tín hiệu để khởi động lại vi điều khiển. Tính năng đơn giản này bù đắp cho các lỗi thiết kế hoặc các yếu tố môi trường có thể gây ra sự cố cho vi điều khiển.
Tuy nhiên, nếu WDT của bạn thất bại, thì có khả năng hệ thống nhúng của bạn sẽ không thể phục hồi từ trạng thái lỗi. Đó là lý do tại sao việc xác định nguyên nhân tại sao Bộ đếm thời gian giám sát có thể không khởi động lại vi điều khiển là quan trọng. Câu trả lời rõ ràng nhất là các chip Bộ đếm thời gian giám sát bị lỗi. Tuy nhiên, nếu bạn liên tục gặp phải hệ thống nhúng trong nhiều đơn vị không thể phục hồi, thì có thể có vấn đề với thiết kế của bạn.
Thực tế, trong nhiều năm thiết kế và triển khai hàng trăm thiết bị dựa trên vi điều khiển của tôi, tôi chưa bao giờ gặp trường hợp nào mà Bộ đếm giờ Watchdog STM32 bị lỗi. Nguyên nhân chủ yếu thường chỉ đơn giản là lỗi của con người.
Đối với các hệ thống nhúng sử dụng WDT nội bộ, mã chạy trốn có thể vô hiệu hóa Bộ đếm giờ Watchdog nếu các bit cấu hình không may bị ghi đè. Các chip Bộ đếm giờ Watchdog bên ngoài gặp phải những vấn đề hoàn toàn khác. Trong trường hợp này, thường có một chân jumper có thể ngắt kết nối tín hiệu reset từ Bộ đếm giờ Watchdog bên ngoài khi các kỹ sư phần mềm đang phát triển và gỡ lỗi chương trình. Thường thì các chân jumper này cần được kết nối thủ công trước khi các đơn vị được triển khai tại hiện trường. Nếu chúng không được kết nối, thì tín hiệu reset WDT sẽ vẫn bị ngắt kết nối và không thể reset vi điều khiển.
Một lý do phổ biến khiến Bộ đếm giờ Watchdog không hoạt động là do lỗi mã hóa. Nếu các hàm làm mới bộ đếm giờ WDT được đặt không đúng chỗ trong chương trình, chúng sẽ không hoạt động khi cần thiết. Firmware cho vi điều khiển trở nên phức tạp khi có nhiều nhiệm vụ với các ưu tiên khác nhau trong một Hệ Điều Hành Thời Gian Thực (RTOS). Các nhiệm vụ mạch Watchdog có ưu tiên cao hơn có thể tiếp tục thực hiện ngay cả khi các nhiệm vụ ưu tiên thấp hơn đang trong vòng lặp vô hạn bất thường. Nếu làm mới mạch Bộ đếm giờ Watchdog là nhiệm vụ có ưu tiên cao nhất, thì vi điều khiển sẽ không được làm mới khi nó không hoạt động đúng cách.
Để đảm bảo WDT thực hiện đúng nhiệm vụ của mình đòi hỏi sự tham gia của nhà phát triển firmware, người lắp đặt hệ thống và nhà thiết kế mạch watchdog phần cứng. Các nhà phát triển firmware nên áp dụng các phương pháp lập trình tốt nhất để tránh việc mã vượt quá giới hạn làm tắt WDT nội bộ. Các nhà phát triển firmware phải hiểu rõ về kiến trúc bộ nhớ của vi điều khiển và cách sử dụng đúng các con trỏ bộ nhớ và phân bổ trong mã.
Ngoài ra, cấu trúc của chương trình nên được phác thảo sao cho các Bộ đếm thời gian giám sát (Watchdog Timers) được làm mới tại các vị trí thích hợp trong chương trình. Điều này có nghĩa là chương trình sẽ kích hoạt một lệnh đặt lại Watchdog nếu một vòng lặp vô hạn phát triển tại bất kỳ điểm nào trong chương trình. Bạn cũng có thể phát triển một tiện ích kiểm tra để kiểm tra chức năng của WDT tại chỗ. Điều này cũng loại bỏ rủi ro bỏ sót bất kỳ chân cắm nối nào bị ngắt kết nối giữa Bộ đếm thời gian giám sát ngoại vi và vi điều khiển.
Khi bạn cần truy cập vào công cụ thiết kế bố trí PCB dễ sử dụng bao gồm mọi thứ cần thiết để xây dựng các bảng mạch có chất lượng cao có thể sản xuất được, hãy tìm đến CircuitMaker. Bên cạnh phần mềm thiết kế PCB dễ sử dụng, tất cả người dùng CircuitMaker đều có quyền truy cập vào không gian làm việc cá nhân trên nền tảng Altium 365. Bạn có thể tải lên và lưu trữ dữ liệu thiết kế của mình trên đám mây, và bạn có thể dễ dàng xem các dự án của mình qua trình duyệt web của mình trên một nền tảng an toàn.
Bắt đầu sử dụng CircuitMaker ngay hôm nay và chờ đón CircuitMaker Pro mới từ Altium.