Мазмұны:

Arduino Hang Guardian - Arduino Watchdog Timer оқулығы: 6 қадам
Arduino Hang Guardian - Arduino Watchdog Timer оқулығы: 6 қадам

Бейне: Arduino Hang Guardian - Arduino Watchdog Timer оқулығы: 6 қадам

Бейне: Arduino Hang Guardian - Arduino Watchdog Timer оқулығы: 6 қадам
Бейне: The Arduino hang guardian - Arduino watchdog timer tutorial 2024, Шілде
Anonim
Image
Image

Бәріне сәлем, Бұл бәрімізде болады. Сіз жоба жасайсыз, сенсорлардың барлығын ынтамен байланыстырасыз, кенеттен Arduino өшіп қалады және ешқандай кіріс өңделмейді.

«Не болып жатыр?», Сіз өзіңіздің кодты тексере бастайсыз, сонда сіз шексіз циклде қалғаныңызды түсінесіз. Құдайға шүкір, Arduino сіздің орындықта емес, алыс жерде болды.

Бүгін біз бұған жол бермеу үшін Arduino -дегі қарауыл таймерін қалай қолдануға болатынын қарастырамыз.

1 -қадам: Бұл күзетші таймер дегеніміз не?

Күзетші таймерін қалай қосуға болады?
Күзетші таймерін қалай қосуға болады?

Arduino күзетші таймері - бұл тақтадағы негізгі процессордан бөлек жұмыс істейтін таймер. Бұл таймерді тақтаның күйін мезгіл -мезгіл тексеру үшін пайдалануға болады, ал тақта бағдарламалық қамтамасыз ету циклінде тұрып қалса немесе аппараттық құралдың істен шығуына байланысты тұрып қалса, күзетші таймері Arduino -ны қалпына келтіре алады және оны қайтадан бастайды.

Әдепкі бойынша, бұл таймер барлық жобаларда өшіріледі және біз оны қосқан кезде ғана, егер ол әлі де күткендей жұмыс істеп тұрса, біздің тақтаны қалпына келтірмеуді мезгіл -мезгіл айтуымыз керек.

Күзетші таймерін қолдану үшін алдымен avr/wdt.h файлын Arduino эскизіне қосу керек. Бұл қарауылдың әрекеттерін сақтайтын стандартты кітапхана.

2 -қадам: Watchdog таймерін қалай қосуға болады?

Күзетші таймерін қалай қосуға болады?
Күзетші таймерін қалай қосуға болады?
Күзетші таймерін қалай қосуға болады?
Күзетші таймерін қалай қосуға болады?

Таймерді қосу үшін біз «wdt_enable» функциясын қолданамыз, онда біз тақтаны қалпына келтіретін шекті аралықта өтуіміз керек. Қолдану жағдайына байланысты, бұл күзетші кітапханасында бар алдын ала анықталған параметрлерде 15 миллисекундтан 8 секундқа дейін болуы мүмкін.

ШЕК - Тұрақты АТЫ

15 мс WDTO_15MS 30 мс WDTO_30MS 60 мс WDTO_60MS 120 мс WDTO_120MS 250 мс WDTO_250MS 500 мс WDTO_500MS 1с WDTO_1S 2s WDTO_2S 4с WDTO_4S 8с WDTO_8S

3 -қадам: Бағдарламаны іске қосыңыз

Бағдарламаңызды іске қосыңыз
Бағдарламаңызды іске қосыңыз

Енді, таймер қосылған кезде, біздің Arduino -ны қалпына келтіруге жол бермеу үшін, шектік уақыт аяқталмай тұрып, күзетші таймерін қалпына келтіру үшін мезгіл -мезгіл «wdt_reset» функциясын шақыру керек.

Қалпына келтіру аралығын таңдағанда, деректерді оқу немесе жіберу немесе сыртқы сенсорларға қосылу сияқты кез келген ұзақ операцияны ескеру маңызды. Кез келген кездейсоқ қалпына келтіруді болдырмау үшін қалпына келтіру шегі осы уақыттардан кемінде бір жарым есе көп болуы керек.

4 -қадам: Қолдану мысалы

Қолдану мысалы
Қолдану мысалы
Қолдану мысалы
Қолдану мысалы
Қолдану мысалы
Қолдану мысалы

Мұнда жүктеуге болатын мысал бағдарламасында біз алдымен күзетші таймерін қалпына келтіру аралығы 4 секундпен орнатамыз. Содан кейін біз орнату функциясында екенімізді білу үшін жарықдиодты 3 рет тез жыпылықтаймыз, содан кейін негізгі циклде алдымен таймерді қалпына келтіреміз, біртіндеп ұзағырақ интервалмен жарық диодты жағамыз, содан кейін оны өшіреміз. Келесі цикл таймерді жарықтандыру уақыты 4 секундтан ұзақ болғанша қайтадан ысырады.

Бұл орын алғанда, күзетші таймері тақтаны қалпына келтіреді және орнату қайтадан орындалады.

5 -қадам: Watchdog таймерінің мәселелері

Arduino жүктеушіге байланысты күзетші таймерінің мүмкін болатын бір мәселесі: егер күзетші таймерінің мәні тым төмен болса және жүктеуші жаңа кодты жүктеу кезінде таймерді қалпына келтірмесе, сіз Arduino тақтасын зақымдай аласыз. ол әрқашан жүктеу сатысында қалады. Жүктеуші жүктеуге тырысады, бірақ таймер оның дұрыс басталуына ешқашан мүмкіндік берместен тақтаны қалпына келтіруді жалғастырады. Мұндай мәселелердің алдын алу үшін 2 секунд немесе одан да көп уақыт аралығын қолданыңыз.

6 -қадам: ләззат алыңыз

Ләззат алыңыз
Ләззат алыңыз

Егер сізде күзетші таймерін нақты жобада қайда қолданғаныңыз туралы мысал болса, түсініктемелерде маған хабарлаңыз, бейне ұнайды және жазылуды ұмытпаңыз.

Қуаныш және оқығаныңызға/қарағаныңызға рахмет!

Ұсынылған: