Arduino Watchdog: របៀបដែលវាដំណើរការ

អ្នកឃ្លាំមើល Arduino

នៅក្នុងអត្ថបទថ្មីនេះ យើងនឹងមើលថាតើ a watchdogតើវាអាចប្រើបានសម្រាប់អ្វី និងរបៀបប្រើវានៅក្នុងគម្រោងរបស់អ្នក។ Arduino. អ្វីគ្រប់យ៉ាងដែលអ្នកត្រូវដឹងអំពីមុខងារគួរឱ្យចាប់អារម្មណ៍ដែលមិនស្គាល់នេះ។ ហើយបាទ ដូចដែលឈ្មោះរបស់វាបានបង្ហាញ (អ្នកឃ្លាំមើល) វាអាចត្រូវបានប្រើដើម្បីតាមដានបញ្ហាមួយចំនួន។

នៅទីនេះយើងនឹងឃើញ អ្វីដែលអ្នកត្រូវដឹង ទាក់ទងនឹង…

តើ​អ្វី​ទៅ​ជា​អ្នក​ឃ្លាំ​មើល?

ក្នុងការគណនា ក អ្នកឃ្លាំមើល គឺជាយន្តការត្រួតពិនិត្យដែលប្រើដើម្បីត្រួតពិនិត្យប្រតិបត្តិការនៃប្រព័ន្ធ ឬកម្មវិធី។ មុខងារចម្បងរបស់វាគឺដើម្បីស្វែងរក និងឆ្លើយតបទៅនឹងស្ថានភាពមិនប្រក្រតី ឬការបរាជ័យនៃប្រព័ន្ធ ដូចជាការគាំង ឬបង្កក ហើយចាត់វិធានការកែតម្រូវដើម្បីធានាបាននូវប្រតិបត្តិការបន្ត ឬការស្ដារប្រព័ន្ធឡើងវិញ។

អ្នកឃ្លាំមើល ដំណើរការលើកម្មវិធីកំណត់ម៉ោង ដែលត្រូវបានកំណត់រចនាសម្ព័ន្ធសម្រាប់ចន្លោះពេលជាក់លាក់មួយ។ ប្រសិនបើប្រព័ន្ធ ឬកម្មវិធីមិនអនុវត្តសកម្មភាពជាក់លាក់ ឬផ្តល់ថាមពលដល់អង្គការឃ្លាំមើល (ឧ. ចាប់ផ្តើមវាឡើងវិញ) ក្នុងចន្លោះពេលនោះ អ្នកឃ្លាំមើលសន្មត់ថាប្រព័ន្ធស្ថិតក្នុងស្ថានភាពដែលមិនចង់បាន ឬបានបញ្ឈប់ការឆ្លើយតបត្រឹមត្រូវ និងធ្វើសកម្មភាពដែលបានកំណត់ទុកជាមុន។ សកម្មភាពនេះអាចប្រែប្រួលទៅតាមការអនុវត្ត ហើយអាចរួមបញ្ចូលការចាប់ផ្ដើមប្រព័ន្ធឡើងវិញ បង្កើតកំណត់ហេតុបញ្ហា បង្កការជូនដំណឹង ឬចាត់វិធានការជាក់លាក់ដើម្បីកែបញ្ហា។

ឧបករណ៍ឃ្លាំមើលត្រូវបានប្រើប្រាស់នៅលើប្រព័ន្ធកុំព្យូទ័រ និងឧបករណ៍ជាច្រើនប្រភេទ ចាប់ពីប្រព័ន្ធប្រតិបត្តិការ និងម៉ាស៊ីនមេ រហូតដល់ឧបករណ៍ ប្រព័ន្ធពេលវេលាពិតដែលបានបង្កប់ និងសំខាន់ រួមទាំង Arduino ផងដែរ។. គោលបំណងចម្បងរបស់វាគឺដើម្បីកែលម្អភាពជឿជាក់នៃប្រព័ន្ធ និងភាពអាចរកបានដោយការរកឃើញដោយស្វ័យប្រវត្តិ និងឆ្លើយតបទៅនឹងបញ្ហា ដោយកាត់បន្ថយតម្រូវការសម្រាប់ការអន្តរាគមន៍ដោយដៃក្នុងស្ថានភាពបរាជ័យ។

តើឧបករណ៍ឃ្លាំមើល Arduino គឺជាអ្វី?

សៀវភៅអំពី arduino

កម្មវិធីកំណត់ម៉ោងឃ្លាំមើលរបស់ Arduino ត្រូវតែកែតម្រូវតាមតម្រូវការរបស់កម្មវិធី។ គាត់ កម្មវិធីឃ្លាំមើលនាឡិកា ប្រើប្រភពនាឡិកា 128 kHz ខាងក្នុង (អាចប្រែប្រួលអាស្រ័យលើក្តារ និង MCU ដែលប្រើ)។ នៅពេលបើកដំណើរការ វាចាប់ផ្តើមរាប់ពីសូន្យរហូតដល់តម្លៃកំណត់ទុកជាមុនដោយអ្នកប្រើប្រាស់។ ប្រសិនបើកម្មវិធីកំណត់ម៉ោង Watchdog មិនកំណត់ឡើងវិញនៅពេលដែលវាឈានដល់តម្លៃនេះ វាកំណត់ microcontroller ឡើងវិញ។

microcontroller ឬ MCU គឺជាឧបករណ៍អេឡិចត្រូនិចតូចមួយដែលរួមបញ្ចូលអង្គភាពដំណើរការកណ្តាល (CPU) អង្គចងចាំ ឧបករណ៍បញ្ចូល/ទិន្នផល និងពេលខ្លះចំណុចប្រទាក់ទំនាក់ទំនងនៅលើបន្ទះឈីបតែមួយ។ វាត្រូវបានរចនាឡើងដើម្បីគ្រប់គ្រង និងប្រតិបត្តិការងារជាក់លាក់។

កម្មវិធីកំណត់ម៉ោងឃ្លាំមើល អេធីមេហ្គា ៣២៨ ភីដែលត្រូវបានអនុវត្តនៅក្នុង 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
សម្រាប់ព័ត៌មានបន្ថែម អ្នកអាចពិគ្រោះជាមួយឯកសារទិន្នន័យ Arduino ដែលអ្នកអាចស្វែងរកព័ត៌មានលម្អិតបន្ថែមអំពី microcontroller ដែលរួមបញ្ចូលគ្នាដោយខ្លួនឯង ការចុះឈ្មោះដែលអាចប្រើជាមួយ watchdog, pinout, peripherals, technical specifications, voltages, power use។ល។

ឧទាហរណ៍នៃការប្រើប្រាស់ watchdog នៅលើ Arduino

Arduino IDE ប្រភេទទិន្នន័យ ការសរសេរកម្មវិធី

ជាចុងក្រោយ សូមមើលពីរបៀបដែល 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() ដើម្បីបន្តចន្លោះពេលដែលបានកំណត់ ហើយដូច្នេះកម្មវិធីមិនចាប់ផ្តើមឡើងវិញទេ។

ខ្លឹមសារនៃអត្ថបទប្រកាន់ខ្ជាប់នូវគោលការណ៍របស់យើង ក្រមសីលធម៌វិចារណកថា។ ដើម្បីរាយការណ៍ការចុចកំហុស នៅទីនេះ.

ធ្វើជាយោបល់ដំបូង

ទុកឱ្យយោបល់របស់អ្នក

អាសយដ្ឋានអ៊ីមែលរបស់អ្នកនឹងមិនត្រូវបានបោះពុម្ភ។ អ្នកគួរតែអនុវត្តតាម *

*

*

  1. ទទួលខុសត្រូវចំពោះទិន្នន័យ: មីហ្គែល - ហ្គែលហ្គេតថន
  2. គោលបំណងនៃទិន្នន័យ៖ គ្រប់គ្រង SPAM ការគ្រប់គ្រងមតិយោបល់។
  3. ភាពស្របច្បាប់៖ ការយល់ព្រមរបស់អ្នក
  4. ការប្រាស្រ័យទាក់ទងទិន្នន័យ៖ ទិន្នន័យនឹងមិនត្រូវបានទាក់ទងទៅភាគីទីបីឡើយលើកលែងតែកាតព្វកិច្ចផ្នែកច្បាប់។
  5. ការផ្ទុកទិន្នន័យ៖ មូលដ្ឋានទិន្នន័យដែលរៀបចំដោយបណ្តាញ Occentus (EU)
  6. សិទ្ធិ៖ នៅពេលណាដែលអ្នកអាចដាក់កម្រិតទាញយកមកវិញនិងលុបព័ត៌មានរបស់អ្នក។