នៅក្នុងអត្ថបទថ្មីនេះ យើងនឹងមើលថាតើ a watchdogតើវាអាចប្រើបានសម្រាប់អ្វី និងរបៀបប្រើវានៅក្នុងគម្រោងរបស់អ្នក។ Arduino. អ្វីគ្រប់យ៉ាងដែលអ្នកត្រូវដឹងអំពីមុខងារគួរឱ្យចាប់អារម្មណ៍ដែលមិនស្គាល់នេះ។ ហើយបាទ ដូចដែលឈ្មោះរបស់វាបានបង្ហាញ (អ្នកឃ្លាំមើល) វាអាចត្រូវបានប្រើដើម្បីតាមដានបញ្ហាមួយចំនួន។
នៅទីនេះយើងនឹងឃើញ អ្វីដែលអ្នកត្រូវដឹង ទាក់ទងនឹង…
លិបិក្រម
តើអ្វីទៅជាអ្នកឃ្លាំមើល?
ក្នុងការគណនា ក អ្នកឃ្លាំមើល គឺជាយន្តការត្រួតពិនិត្យដែលប្រើដើម្បីត្រួតពិនិត្យប្រតិបត្តិការនៃប្រព័ន្ធ ឬកម្មវិធី។ មុខងារចម្បងរបស់វាគឺដើម្បីស្វែងរក និងឆ្លើយតបទៅនឹងស្ថានភាពមិនប្រក្រតី ឬការបរាជ័យនៃប្រព័ន្ធ ដូចជាការគាំង ឬបង្កក ហើយចាត់វិធានការកែតម្រូវដើម្បីធានាបាននូវប្រតិបត្តិការបន្ត ឬការស្ដារប្រព័ន្ធឡើងវិញ។
អ្នកឃ្លាំមើល ដំណើរការលើកម្មវិធីកំណត់ម៉ោង ដែលត្រូវបានកំណត់រចនាសម្ព័ន្ធសម្រាប់ចន្លោះពេលជាក់លាក់មួយ។ ប្រសិនបើប្រព័ន្ធ ឬកម្មវិធីមិនអនុវត្តសកម្មភាពជាក់លាក់ ឬផ្តល់ថាមពលដល់អង្គការឃ្លាំមើល (ឧ. ចាប់ផ្តើមវាឡើងវិញ) ក្នុងចន្លោះពេលនោះ អ្នកឃ្លាំមើលសន្មត់ថាប្រព័ន្ធស្ថិតក្នុងស្ថានភាពដែលមិនចង់បាន ឬបានបញ្ឈប់ការឆ្លើយតបត្រឹមត្រូវ និងធ្វើសកម្មភាពដែលបានកំណត់ទុកជាមុន។ សកម្មភាពនេះអាចប្រែប្រួលទៅតាមការអនុវត្ត ហើយអាចរួមបញ្ចូលការចាប់ផ្ដើមប្រព័ន្ធឡើងវិញ បង្កើតកំណត់ហេតុបញ្ហា បង្កការជូនដំណឹង ឬចាត់វិធានការជាក់លាក់ដើម្បីកែបញ្ហា។
ឧបករណ៍ឃ្លាំមើលត្រូវបានប្រើប្រាស់នៅលើប្រព័ន្ធកុំព្យូទ័រ និងឧបករណ៍ជាច្រើនប្រភេទ ចាប់ពីប្រព័ន្ធប្រតិបត្តិការ និងម៉ាស៊ីនមេ រហូតដល់ឧបករណ៍ ប្រព័ន្ធពេលវេលាពិតដែលបានបង្កប់ និងសំខាន់ រួមទាំង Arduino ផងដែរ។. គោលបំណងចម្បងរបស់វាគឺដើម្បីកែលម្អភាពជឿជាក់នៃប្រព័ន្ធ និងភាពអាចរកបានដោយការរកឃើញដោយស្វ័យប្រវត្តិ និងឆ្លើយតបទៅនឹងបញ្ហា ដោយកាត់បន្ថយតម្រូវការសម្រាប់ការអន្តរាគមន៍ដោយដៃក្នុងស្ថានភាពបរាជ័យ។
តើឧបករណ៍ឃ្លាំមើល Arduino គឺជាអ្វី?
កម្មវិធីកំណត់ម៉ោងឃ្លាំមើលរបស់ Arduino ត្រូវតែកែតម្រូវតាមតម្រូវការរបស់កម្មវិធី។ គាត់ កម្មវិធីឃ្លាំមើលនាឡិកា ប្រើប្រភពនាឡិកា 128 kHz ខាងក្នុង (អាចប្រែប្រួលអាស្រ័យលើក្តារ និង MCU ដែលប្រើ)។ នៅពេលបើកដំណើរការ វាចាប់ផ្តើមរាប់ពីសូន្យរហូតដល់តម្លៃកំណត់ទុកជាមុនដោយអ្នកប្រើប្រាស់។ ប្រសិនបើកម្មវិធីកំណត់ម៉ោង Watchdog មិនកំណត់ឡើងវិញនៅពេលដែលវាឈានដល់តម្លៃនេះ វាកំណត់ microcontroller ឡើងវិញ។
កម្មវិធីកំណត់ម៉ោងឃ្លាំមើល អេធីមេហ្គា ៣២៨ ភីដែលត្រូវបានអនុវត្តនៅក្នុង Arduino UNOផ្តល់នូវការកំណត់ពេលវេលាខុសៗគ្នាចំនួន 10 ដែលនីមួយៗកំណត់ថាតើនៅពេលណាដែលកម្មវិធីកំណត់ម៉ោងនឹងហៀរចេញ ដូច្នេះហើយបណ្តាលឱ្យមានការកំណត់ឡើងវិញ។ ចន្លោះពេលខុសគ្នាមានដូចខាងក្រោម៖ 16 ms, 32 ms, 64 ms, 0.125 វិនាទី, 0.25 វិនាទី, 0.5 វិនាទី, 1 វិនាទី, 2 វិនាទី, 4 វិនាទី និង 8 វិនាទី ដូចដែលយើងនឹងឃើញនៅពេលក្រោយនៅក្នុងតារាងដែលខ្ញុំបានបញ្ចូល។
ប្រសិនបើវានៅតែមិនច្បាស់សម្រាប់អ្នកថាតើអ្នកអាចធ្វើអ្វីជាមួយកម្មវិធីកំណត់ម៉ោងឃ្លាំមើល Arduino UNOយើងនឹងឃើញ ឧទាហរណ៍មួយ ដូច្នេះអ្នកអាចយល់វាជាក្រាហ្វិក។ ក្នុងឧទាហរណ៍នេះ យើងនឹងប្រើភ្លើង LED ធម្មតា (ភ្លឹបភ្លែតៗ)។ អំពូល LEDs បញ្ចេញពន្លឺសម្រាប់រយៈពេលកំណត់មួយ មុនពេលចូលទៅក្នុងរង្វិលជុំ while()។ នេះ while() loop ត្រូវបានប្រើជាជម្រើសមួយសម្រាប់ប្រព័ន្ធទប់ស្កាត់។ ដោយសារកម្មវិធីកំណត់ម៉ោង Watchdog មិនត្រូវបានកំណត់ឡើងវិញទេ ខណៈពេលដែលនៅក្នុងរង្វិលជុំ while() វានឹងបណ្តាលឱ្យប្រព័ន្ធចាប់ផ្តើមឡើងវិញ ហើយ LEDs នឹងចាប់ផ្តើមភ្លឺម្តងទៀត មុនពេលប្រព័ន្ធគាំង និងចាប់ផ្តើមឡើងវិញ។ វដ្តនេះនឹងបន្ត…
ការពិចារណានិងលក្ខណៈពិសេស
កម្មវិធីកំណត់ម៉ោងឃ្លាំមើល វាត្រូវបានបិទនៅដើមកូដ. ការពន្យាពេល x វិនាទីត្រូវបានដាក់បញ្ចូល មុនពេលបើកដំណើរការ Watchdog ។ ការពន្យាពេលនេះគឺមានសារៈសំខាន់ណាស់ក្នុងការអនុញ្ញាតឱ្យកម្មវិធីចាប់ផ្ដើមប្រព័ន្ធ Arduino ពិនិត្យមើលថាតើកូដថ្មីកំពុងត្រូវបានផ្ទុក និងអនុញ្ញាតឱ្យមានពេលវេលាគ្រប់គ្រាន់ដើម្បីដុតកូដទៅជា flash memory។ ទិដ្ឋភាពនេះគឺពាក់ព័ន្ធជាការប្រុងប្រយ័ត្ន។ ស្ថានភាពអាចនឹងកើតឡើង ដែលដោយសារតែការសរសេរកូដខុស ឬការពិចារណាមិនត្រឹមត្រូវ កូដសរសេរកំណត់ឡើងវិញនូវ microcontroller នៅចន្លោះពេលដ៏ខ្លីបំផុតគ្មានកំណត់។ វាអាចធ្វើឱ្យខូចក្តារ Arduino និងការពារកូដពីការបង្ហោះឱ្យបានត្រឹមត្រូវទៅវា។ ប្រសិនបើរឿងនេះកើតឡើង អ្នកត្រូវដុតកម្មវិធីចាប់ផ្ដើមប្រព័ន្ធដោយប្រើ Arduino ផ្សេងទៀតជា ISP នៅលើ Arduino ដែលបានចាក់សោ...
នៅពេលដែលយើងប្រើ Arduino watchdog វាចាំបាច់ត្រូវប្រើ ការចុះឈ្មោះប៊ីត ដើម្បីកំណត់ឥរិយាបថរបស់បន្ទះឈីប។ ការចុះឈ្មោះដែលពាក់ព័ន្ធ និងអត្ថន័យរបស់ពួកគេត្រូវបានរៀបរាប់លម្អិតនៅក្នុងសន្លឹកទិន្នន័យរបស់ microcontroller ដែលមានវត្តមាននៅលើបន្ទះ Arduino ។ ទោះជាយ៉ាងណាក៏ដោយ បរិយាកាសអភិវឌ្ឍន៍រួមបញ្ចូលគ្នា Arduino (IDE) ភ្ជាប់មកជាមួយមុខងារ និងម៉ាក្រូមួយចំនួនដែលត្រូវបានរចនាឡើងដើម្បីសម្រួលដំណើរការនេះ ដែលអាចត្រូវបាននាំចូលដោយរួមបញ្ចូលបណ្ណាល័យ។ # រួមបញ្ចូល ដើម្បីប្រើឧបករណ៍ឃ្លាំមើលបន្ទះឈីប AVR ។
តាមវិធីនេះ យើងអាចកំណត់រចនាសម្ព័ន្ធអ្នកឃ្លាំមើលបាន។ ការធ្វើឱ្យសកម្មវាដោយប្រើមុខងារ wdt_enable(). អាគុយម៉ង់នៃមុខងារនេះកំណត់ពេលវេលាមុនពេលបន្ទះកំណត់ឡើងវិញ ប្រសិនបើកម្មវិធីកំណត់ម៉ោងមិនត្រូវបានកំណត់ឡើងវិញ។ ចំពោះតម្លៃដែលអ្នកអាចកំណត់រចនាសម្ព័ន្ធក្នុងកូដនោះ ខ្ញុំរួមបញ្ចូលវានៅទីនេះ៖
ពេលវេលាមុនពេលអ្នកឃ្លាំមើលត្រូវបានកេះ | wtd_enable() អាគុយម៉ង់ |
15 ម។ វិ | WDTO_15MS |
30 ម។ វិ | WDTO_30MS |
60 ម។ វិ | WDTO_60MS |
120 ម។ វិ | WDTO_120MS |
250 ម។ វិ | WDTO_250MS |
500 ម។ វិ | WDTO_500MS |
1 s | WDTO_1S |
2 s | WDTO_2S |
4 s | WDTO_4S |
8 s | WDTO_8S |
ឧទាហរណ៍នៃការប្រើប្រាស់ watchdog នៅលើ Arduino
ជាចុងក្រោយ សូមមើលពីរបៀបដែល watchdog ត្រូវបានគេប្រើយ៉ាងជាក់ស្តែងជាមួយនឹងឧទាហរណ៍នៅក្នុង Arduino IDE ។ ដូចដែលយើងឃើញ វាសាមញ្ញណាស់ អ្នកអាចស្វែងរកកូដប្រភពផ្សេងៗដូចនេះនៅលើអ៊ីនធឺណិត ដើម្បីអាចអនុវត្ត កែប្រែ និងបង្កើតកូដផ្ទាល់ខ្លួនរបស់អ្នក ដើម្បីប្រើកម្មវិធីឃ្លាំមើលនៅក្នុងគម្រោងរបស់អ្នក។ សូមមើល ឧទាហរណ៍របស់យើង។:
#include <avr/wdt.h> // Incluir la biblioteca watchdog (wdt.h) void setup() { wdt_disable(); // Desactivar el watchdog mientras se configura, para que no se resetee wdt_enable(WDTO_2S); // Configurar watchdog a dos segundos } void loop() { wdt_reset(); // Actualizar el watchdog para que no produzca un reinicio //Aquí iría el código de tu programa... }
ដូចដែលអាចមើលឃើញនៅក្នុងឧទាហរណ៍នៃគំនូរព្រាងសម្រាប់ Arduino មាន មុខងារបី នៃភាសាសរសេរកម្មវិធីគួរឱ្យកត់សម្គាល់សម្រាប់ការគ្រប់គ្រងអ្នកឃ្លាំមើល ហើយទាំងនេះគឺ៖
- wdt_disable() ដើម្បីបិទកម្មវិធីកំណត់ម៉ោងខណៈពេលដែលកំណត់រចនាសម្ព័ន្ធ Arduino ។
- wdt_enable(ពេល) ដើម្បីផ្តល់ចន្លោះពេលទៅកម្មវិធីកំណត់ម៉ោង ហើយចាប់ផ្តើមវា ដោយបញ្ជាក់ពេលវេលាដែលត្រូវគ្នាដូចដែលខ្ញុំបានបង្ហាញក្នុងតារាងមុន។
- wdt_reset() ដើម្បីបន្តចន្លោះពេលដែលបានកំណត់ ហើយដូច្នេះកម្មវិធីមិនចាប់ផ្តើមឡើងវិញទេ។