Intel watchdog timer driver что это

Watchdog timer или

Intel watchdog timer driver что это
Ни для кого не секрет, что любая цифровая техника, рано или поздно, «зависает». Это всегда неожиданность для разработчика и это всегда неприятность для пользователя. Это всегда невовремя и это, увы, никак не прогнозируется.

И неважно, самодельная ли это «мигалка на ёлку» на одной микросхеме-микроконтроллере или сложный сервер, работающий в нагруженной сети, — лучше бы этих зависаний не было. А бывают такие системы, зависание которых обходится очень и очень дорого.

Устройство, называемое «Watchdog» («Сторожевая собака»), призвано отслеживать факт зависания контролируемой им системы и, в случае обнаружения зависания, принудительно эту систему перезагружать. Сначала я напишу коротенький абзац для «новичков», чтобы было понятно, о чём я вообще тут говорю.

Потом будет абзац для более подготовленных, которые, дочитав дотуда, всё ещё не захотят закрыть вкладку с обзором 🙂 Сторожевой таймер, сам по себе — это маленькая и довольно простая схемка.

До тех пор, пока ей на вход периодически приходят сигналы от контролируемого девайса («да-да», «всё нормально», «я тут», «я работаю») — собака ведёт себя спокойно и никак не вмешивается.

Как только сигналы перестают приходить, собака ждёт положенное время (обычно несколько секунд) и, если сигналов так и не пришло, она считает, что устройство зависло и посылает ему сигнал Reset, перезагружая его.

Очевидно, что некая условная система, оборудованная таким модулем, будет более устойчива, по сравнению с аналогичной системой без watchdog: от зависаний не застрахован никто, но первая будет сама выбираться из этих зависаний, вторая же будет ждать и простаивать до вмешательства человека.

Сторожевой собаке абсолютно всё равно, какой величины и значимости систему она контролирует. Это может быть и копеечная воьминогая микросхема-микроконтроллер, и «малинка»-«апельсинка», и роутер, и домашний стационарный компьютер, и большой навороченный сервер.

Ей лишь бы приходили сигналы об активности системы, да чтоб система, соответственно, реагировала на её импульс «Reset». Конец абзаца. Почему внешний watchdog, если в любом современном микроконтроллере есть встроенный? По двум основным причинам.

Во-первых, бывают такие зависания, которые изнутри единого кристалла отследить нельзя: прерывания по таймеру живут, watchdog исправно ресетится, а программа, допустим, крутится в бесконечном цикле. Или ждёт импульса на какой-нибудь ноге, который дойти никак не может из-за какой-то аварии. Да мало что… Внешний же аппаратный сторож никак не связан с процессами внутри: пока у него есть питание, он будет сторожить.

Во-вторых, ардуино… Нельзя не признать, что доля DIY-микроконтроллерных проектов, реализуемых публикой на arduino, занимает значительную нишу. И приверженцы ардуино, увы, прелестями встроенного в атмегу сторожевого таймера воспользоваться не могут. Проблема описана. Вкратце: watchdog правильно работает только на некоторых Uno, остальные ардуины намертво «кладутся» при попытке использовать сторожевой таймер. Спасает только перешивка загрузчика внешним программатором. А новичков такая «хирургия», безусловно, пугает. Да и не у всех есть под рукой вторая ардуина, чтобы сделать из неё программатор для оживления первой, ушедшей в мёртвый цикл из-за использования встроенного watchdog. Все эти манипуляции новичка, вероятнее всего, попросту отпугнут.

Внешний же watchdog позволяет, используя arduino в своих проектах, в полной мере получать все прелести устойчивых систем, не заморачиваясь проблемами внутреннего сторожевого таймера. Теперь, собственно, к самому обозреваемому модулю. Размерами он сопоставим с Arduino Pro Mini: С обратной стороны ничего интересного: только дорожки, соединяющие три переходных отверстия с пинами модуля. Да не очень качественно отмытый флюс: Модуль построен на базе далласовского чипа DS1232.

Для тех, кто привык читать официальную литературу, вот даташит.

Чип обеспечивает сразу три функции: мониторинг питания, сторожевой таймер и формирование правильного импульса Reset (нужных фронтов, амплитуды и длительности), даже при дребезге контактов ручной кнопки перезагрузки.

Коротко и сжато о назначении выводов чипа

На вывод ST должны приходить стробирующие импульсы от контролируемого устройства, говоряжие о его здоровом функционировании. На выводах RST и /RST формируется перезагружающий импульс. Разница между выводами RST и /RST заключается исключительно в полярности перезагружающего импульса. Сигнал с вывода RST надо брать, если контролируемое устройство перезагружается логической единицей при нормальном нуле на линии сброса. Сигнал же /RST, наоборот, предназначен для устройств, перезагружаемых низким уровнем на линии сброса. Большинство современных микроконтроллеров (включая атмелловские, на базе которых построено и arduino) перезагружаются нулевыми импульсами, т.е. для них подходящим является сигнал /RST. Вывод TOL выбирает приемлемость условий питающего напряжения. — когда TOL прижат к земле, приемлемым считается пятипроцентный коридор отклонения напряжения. Т.е. сигнал перезагрузки придёт при снижении напряжения до 4,75V. — когда TOL подключён к питающей линии, коридор питающего напряжения расширяется до 10%. Т.е. устройство будет перезагружено при снижении напряжения питания до 4,5V. Выводом TD выбирается максимальное контрольное время, после которого сработает сторожевой таймер: — когда TD прижат к земле, таймаут составляет 150ms (от экземпляра к экземпляру нормой будут значения 62,5ms — 250ms); — когда TD висит в воздухе, таймаут составляет 600ms (от экземпляра к экземпляру 250ms — 1000ms); — когда TD соединён с питанием, таймаут составляет 1200ms (от экземпляра к экземпляру 500ms — 2000ms). Выдержек свыше двух секунд данная микросхема не даст даже теоретически. Продавец услужливо опубликовал схему модуля и его разводку: Как видим из схемы, линии чипа ST, RST и /RST выведены, как одноимённые, и на пины модуля. Производитель предоставил нам самое лояльное и комфортное включение чипа: максимально широкий коридор питающих напряжений (от 4,5 до 5V) и максимально возможный таймаут сторожевого таймера (1,2 секунды). Теперь становится понятной схема подключения модуля к нашей условной ардуине: — линии Vcc и Gnd на модуле подключаются к двум одноимённым линиям на arduino; — линия /RST на модуле подключается к пину RST на ардуине — линия ST подключается к любому свободному пину, желательно без аппаратного ШИМ, — допустим, у меня это пин 2. Набросаем простенький скетч для проверки модуля. Я (исключительно для наглядности) при инициализации программно мигаю встроенным светодиодом. Этого можно было не делать, светодиод мигнёт и без нас. Но так — нагляднее и понятнее новичкам. void setup() { pinMode(13, OUTPUT); // Используем внутренний светодиод pinMode(2, OUTPUT); // С этого пина Watchdog будет получать сигналы digitalWrite(13, HIGH); delay(50); // Коротко мигнём светодиодом при каждой перезагрузке digitalWrite(13, LOW); } void loop() { digitalWrite(2, HIGH); delay(2); // Формируем короткий перепад digitalWrite(2, LOW); delay(1150); // Максимально длинный таймаут } При значении задержки 1150 миллисекунд (в моём конкретном случае) или меньших, наша ардуина спокойно крутится в рабочем цикле, ей ничто не мешает. Светодиод, мигнув вначале, не светится — перезагрузок нет. Как только мы увеличим эту задержку хотя бы до 1200 миллисекунд (или внесём значительную задержку в процедуру Setup), мы увидим, что светодиод начнёт циклически вспыхивать: время для собаки становится критическим и она перезагружает ардуину.
В реальных же условиях рабочего скетча, достаточно внести строчкуdigitalWrite(2,HIGH); delay(1); digitalWrite(2,LOW);в самый конец основного цикла, чтобы сторожевой модуль, подключённый к пину 2, чувствовал себя спокойно. При инициализации ардуины все пины передёргиваются, поэтому собаке абсолютно всё равно, на каком логическом уровне зависло устройство: таймер был запущен и, значит, перезагружающий импульс неминуемо придёт.

Выводы.

1. Нужен ли сторожевой таймер в принципе? Если в проектируемом вами устройстве зависания могут привести к негативным последствиям, то да. С ним система будет, очевидно, более устойчивой, чем без него. 2. Является ли внешний сторожевой таймер панацеей? Конечно, нет. Он более эффективен, чем внутренний, имеющийся во многих микроконтроллерах, но и он не панацея. Для достижения максимальной эффективности его работы, важно его подключить в правильное место вашей системы. Лучше не подключать его к линиям, на которых сигналы формируются аппаратно (ШИМ, различные аппаратные порты со стробами), а также к сигналам внешнего или внутреннего тактового генератора. Ну и абсолютно бессмысленно подключать его к линиям, работающим на вход — так мы будем контролировать не свой микроконтроллер, а что-то другое. 3. Есть ли минусы у этого сторожа? Главным минусом внешнего сторожевого таймера, в общем случае, является потребность в выделении для его работы одного пина на вашем устройстве. Хотя на практике, этого очень часто удаётся избежать: если ваш микроконтроллер что-то постоянно пишет или рисует на дисплее, что-то постоянно посылает в порты, формирует какие-то управляющие импульсы для внешних устройств — подключайте сторожевую собаку к этим линиям, — ей абсолютно безразличны частота и скважность импульсов, ей лишь бы была постоянная движуха. Главным минусом конкретно этой реализации таймера я назову, пожалуй, довольно короткий контрольный таймаут. Бывают случаи, когда хотелось бы иметь запас хотя бы в 3-5 секунд.

4. Надо ли покупать именно этот watchdog? Ну, каждый решит для себя. Сторожевую собаку, совершенно точно, можно получить дешевле $3. Кому-то проще купить один лишь только обозреваемый выше чип и с помощью ЛУТ сделать такой модуль самому.

Кому-то проще взять легендарный 555 и сделать сторожевой таймер на рассыпухе: плюсы — дёшево и доступно, минусы — больше возни и времязадающие электролитические конденсаторы, а, значит, с годами гарантированно поплывут все параметры.

Кому-то проще сделать одновибратор с таймером вообще на полупроводниках. Тут каждый решает сам.

Здесь же за вполне посильные деньги мы получаем полностью готовое и рабочее устройство с нормированными параметрами. Так что резонность покупки каждый оценит самостоятельно. Моей же задачей было рассказать о таких устройствах, о принципах их работы и, возможно, дать кому-то творческий импульс для самостоятельного построения новых интересных самоделок. Никто ничего не предоставлял и не спонсировал, всё куплено на свои.

UPD: Пока писал обзор, продавец неожиданно поднял цену. Упс. Будем считать это временным приступом жадности. На этот товар у него периодически бывает скидка. Ну и ничто не мешает искать этот товар у какого-то другого продавца.

Источник: https://mysku.ru/blog/aliexpress/52212.html

Программирование микроконтроллеров. Часть 10

Intel watchdog timer driver что это

Бывают ситуации, когда по тем или иным причинам, программа в микроконтроллере может зависнуть и устройство перестанет нормально функционировать. В этой ситуации поможет только сброс устройства вручную. Но это не всегда бывает возможно. Поэтому и был придуман сторожевой таймер, который может произвести сброс микроконтроллера.

Сторожевой таймер (контрольный таймер, англ. Watchdog timer — букв. «сторожевой пёс») — аппаратно реализованная схема контроля над зависанием системы. Представляет собой таймер, который периодически сбрасывается контролируемой системой.

Если сброса не произошло в течение некоторого интервала времени, происходит принудительная перезагрузка системы.

В некоторых случаях сторожевой таймер может посылать системе сигнал на перезагрузку («мягкая» перезагрузка), в других же — перезагрузка происходит аппаратно (замыканием сигнального провода RST или подобного ему).

Этот таймер тикает сам по себе, независимо от основной программы. Суть такова: в основной программе через определенные промежутки, вставляется код, который сбрасывает этот таймер.

Когда таймер постоянно сбрасывается, то программа спокойно выполняется.

Но, если его не сбросить, значит кусок кода основной программы не выполнился и завис, в этом случае таймер досчитает до определенного значения и сбросит полностью микроконтроллер. Программа начнет выполняться с самого сначала.

Характеристики сторожевого таймера:

  • Отдельный генератор тактовых импульсов (128 кГц)
  • Прерывания и возможность сброса системы
  • Выбор режима генерации сброса от 16 миллисекунд до 8 секунд
  • Режим защиты от сбоев при отключении только программированием fuse

Сторожевой таймер имеет всего один регистр** WDTCSR**.

Бит WDIF (7) – флаг поступления прерывания от сторожевого таймера (1 – если поступило прерывание (сбрасывается записью 1 во флаг)).
Бит WDIE (6) – разрешение прерывания от сторожевого таймера при записи в него 1.

Бит WDCE (4) – разрешение изменения режима работы сторожевого таймера (перед изменением режима работы или предделителя необходимо записать 1).
Бит WDE (3) – разрешение сброса системы сторожевым таймером при записи в него 1.

Бит WDP3 (5) и биты WDP2-WDP0 (2 – 0) управляют временем, через которое произойдет сброс или поступит прерывание от сторожевого таймера:

  • 0000 – 2048 циклов (16 мс)
  • 0001 – 4096 циклов (32 мс)
  • 0010 – 8192 цикла (64 мс)
  • 0011 – 16384 цикла (0.125 с)
  • 0100 – 32768 циклов (0.25 с)
  • 0101 – 65536 циклов (0.5 с)
  • 0110 – 131072 цикла (1 с)
  • 0111 – 262144 цикла (2 с)
  • 1000 – 524288 циклов (4 с)
  • 1001 – 1048576 циклов (8 с)
  • 1010 – 1111 – резерв

Стоит также отметить, что при режиме работы (сброс и прерывание) сначала выполняется прерывание, а затем сброс. И если Fuse бит WDTON установлен в 0, в независимости от битов WDE и WDIE регистра WDTCR таймер будет сбрасывать систему по истечении времени на которое он настроен.

https://www.youtube.com/watch?v=qLYHo2qfv_M

Также для сброса системы сторожевым таймером необходимо в бит WDRF (3) регистра MCUSR записать 1 (сбрасывается в 0 принудительно или по включению питания микроконтроллера).

Программирование сторожевого таймера

Команды для работы со сторожевым таймером:#include – подключение библиотеки для работы со сторожевым таймеромwdt_reset() – сброс сторожевого таймераwdt_enable() – включение сторожевого таймера

wdt_disable() – выключение сторожевого таймера

Для работы со сторожевым таймером для начала необходимо подключить библиотеку “wdt.h” в которой описаны все основные команды для работы со сторожевым таймером. Пример программы №1 будет включать сторожевой таймер, который в свою очередь будет сбрасывать микроконтроллер каждые 4 секунды.

Пример программы №2 будет иметь более расширенный функционал: если микроконтроллер перестал отвечать, то он будет сброшен; если же он работает нормально, то при поступлении прерывания от сторожевого таймера каждые 8 секунд сторожевой таймер будет сбрасываться и начинать отсчет времени сначала.

Это позволит контролировать работу устройства на протяжении всего времени.

Пример программы №1:

#include //подключаем стандартную библиотеку ввода/вывода
#include //подключаем библиотеку для работы со сторожевым таймером

int main(void)

{
wdt_enable(WDTO_4S); //включаем сторожевой таймер со сбросом через 4 секунды
while(1); //любая пользовательская программа
}

Пример программы №2:

#include //подключаем стандартную библиотеку ввода/вывода
#include //подключаем библиотеку для работы со сторожевым таймером
#include //подключаем библиотеку для работы с прерываниями

ISR(WDT_vect) //подпрограмма обработки прерывания от сторожевого таймера

{
wdt_reset(); //сброс сторожевого таймера
WDTCSR = 1

Источник: https://zen.yandex.ru/media/id/592ec4dfe3cda8c8f17c6178/programmirovanie-mikrokontrollerov-chast-10-5a81874a6104932b572abba2

Download Intel® NUC Watchdog Timer Driver

Intel watchdog timer driver что это

The terms of the software license agreement included with any software you download will control your use of the software.

INTEL SOFTWARE LICENSE AGREEMENT

IMPORTANT – READ BEFORE COPYING, INSTALLING OR USING.

Do not use or load this software and any associated materials (collectively,

the “Software”) until you have carefully read the following terms and

conditions. By loading or using the Software, you agree to the terms of this

Agreement. If you do not wish to so agree, do not install or use the Software.

LICENSES: Please Note:

– If you are a network administrator, the “Site License” below shall

apply to you.

– If you are an end user, the “Single User License” shall apply to you.

– If you are an original equipment manufacturer (OEM), the “OEM License”

shall apply to you.

SITE LICENSE. You may copy the Software onto your organization's computers

for your organization's use, and you may make a reasonable number of

back-up copies of the Software, subject to these conditions:

1. This Software is licensed for use only in conjunction with Intel

component products. Use of the Software in conjunction with non-Intel

component products is not licensed hereunder.

2. You may not copy, modify, rent, sell, distribute or transfer any part

of the Software except as provided in this Agreement, and you agree to

prevent unauthorized copying of the Software.

3. You may not reverse engineer, decompile, or disassemble the Software.

4. You may not sublicense or permit simultaneous use of the Software by

more than one user.

5. The Software may include portions offered on terms in addition to those

set out here, as set out in a license accompanying those portions.

SINGLE USER LICENSE. You may copy the Software onto a single computer for

your personal, noncommercial use, and you may make one back-up copy of the

Software, subject to these conditions:

1. This Software is licensed for use only in conjunction with Intel

component products. Use of the Software in conjunction with non-Intel

component products is not licensed hereunder.

2. You may not copy, modify, rent, sell, distribute or transfer any part

of the Software except as provided in this Agreement, and you agree to

prevent unauthorized copying of the Software.

3. You may not reverse engineer, decompile, or disassemble the Software.

4. You may not sublicense or permit simultaneous use of the Software by

more than one user.

5. The Software may include portions offered on terms in addition to those

set out here, as set out in a license accompanying those portions.

OEM LICENSE: You may reproduce and distribute the Software only as an

integral part of or incorporated in Your product or as a standalone

Software maintenance update for existing end users of Your products,

excluding any other standalone products, subject to these conditions:

1. This Software is licensed for use only in conjunction with Intel

component products. Use of the Software in conjunction with non-Intel

component products is not licensed hereunder.

2. You may not copy, modify, rent, sell, distribute or transfer any part

of the Software except as provided in this Agreement, and you agree to

prevent unauthorized copying of the Software.

3. You may not reverse engineer, decompile, or disassemble the Software.

4. You may only distribute the Software to your customers pursuant to a

written license agreement. Such license agreement may be a “break-the-

seal” license agreement. At a minimum such license shall safeguard

Intel's ownership rights to the Software.

5. The Software may include portions offered on terms in addition to those

set out here, as set out in a license accompanying those portions.

NO OTHER RIGHTS. No rights or licenses are granted by Intel to You, expressly

or by implication, with respect to any proprietary information or patent,

copyright, mask work, trademark, trade secret, or other intellectual property

right owned or controlled by Intel, except as expressly provided in this

Agreement.

OWNERSHIP OF SOFTWARE AND COPYRIGHTS. Title to all copies of the Software

remains with Intel or its suppliers. The Software is copyrighted and

protected by the laws of the United States and other countries, and

international treaty provisions. You may not remove any copyright notices

from the Software. Intel may make changes to the Software, or to items

referenced therein, at any time without notice, but is not obligated to

support or update the Software. Except as otherwise expressly provided, Intel

grants no express or implied right under Intel patents, copyrights,

trademarks, or other intellectual property rights. You may transfer the

Software only if the recipient agrees to be fully bound by these terms and if

you retain no copies of the Software.

LIMITED MEDIA WARRANTY. If the Software has been delivered by Intel on

physical media, Intel warrants the media to be free from material physical

defects for a period of ninety days after delivery by Intel. If such a defect

is found, return the media to Intel for replacement or alternate delivery of

the Software as Intel may select.

EXCLUSION OF OTHER WARRANTIES. EXCEPT AS PROVIDED ABOVE, THE SOFTWARE IS

PROVIDED “AS IS” WITHOUT ANY EXPRESS OR IMPLIED WARRANTY OF ANY KIND

INCLUDING WARRANTIES OF MERCHANTABILITY, NONINFRINGEMENT, OR FITNESS FOR A

PARTICULAR PURPOSE. Intel does not warrant or assume responsibility for the

accuracy or completeness of any information, text, graphics, links or other

items contained within the Software.

LIMITATION OF LIABILITY. IN NO EVENT SHALL INTEL OR ITS SUPPLIERS BE LIABLE

FOR ANY DAMAGES WHATSOEVER (INCLUDING, WITHOUT LIMITATION, LOST PROFITS,

BUSINESS INTERRUPTION, OR LOST INFORMATION) ARISING THE USE OF OR

INABILITY TO USE THE SOFTWARE, EVEN IF INTEL HAS BEEN ADVISED OF THE

POSSIBILITY OF SUCH DAMAGES. SOME JURISDICTIONS PROHIBIT EXCLUSION OR

LIMITATION OF LIABILITY FOR IMPLIED WARRANTIES OR CONSEQUENTIAL OR INCIDENTAL

DAMAGES, SO THE ABOVE LIMITATION MAY NOT APPLY TO YOU. YOU MAY ALSO HAVE

OTHER LEGAL RIGHTS THAT VARY FROM JURISDICTION TO JURISDICTION.

TERMINATION OF THIS AGREEMENT. Intel may terminate this Agreement at any time

if you violate its terms. Upon termination, you will immediately destroy the

Software or return all copies of the Software to Intel.

APPLICABLE LAWS. Claims arising under this Agreement shall be governed by the

laws of California, excluding its principles of conflict of laws and the

United Nations Convention on Contracts for the Sale of Goods. You may not

export the Software in violation of applicable export laws and regulations.

Intel is not obligated under any other agreements unless they are in writing

and signed by an authorized representative of Intel.

GOVERNMENT RESTRICTED RIGHTS. The Software is provided with “RESTRICTED

RIGHTS.” Use, duplication, or disclosure by the Government is subject to

restrictions as set forth in FAR52.227-14 and DFAR252.227-7013 et seq. or its

successor. Use of the Software by the Government constitutes acknowledgment

of Intel's proprietary rights therein. Contractor or Manufacturer is Intel

2200 Mission College Blvd., Santa Clara, CA 95052.

Источник: https://downloadcenter.intel.com/download/29076/Intel-NUC-Watchdog-Timer-Driver

Clock watchdog timeout Windows 10: как исправить ошибку с таким кодом, 5 способов

Intel watchdog timer driver что это

Во время работы на ПК с Виндовс 10 юзеры могут столкнуться с появлением синего экрана (BSOD). Неполадка указывает на системную ошибку. Одной из них может стать clock watchdog timeout. После ее появления все важные данные на устройстве могут исчезнуть, а открытые файлы в этот момент повредиться. О том, как исправить clock watchdog timeout в ОС Windows 10, далее пойдет речь.

Причина ошибки clock watchdog timeout на Windows 10

Исправление проблемы относится к сложным задачам, так как clock watchdog timeout появляется по разным причинам, выявить которые с первого раза не всегда удается. Ошибка означает, что время ожидания контроля какого-либо действия истекло. То есть ожидаемое системой прерывание не было отправлено с ядра процессора за выделенный промежуток времени.

Чаще всего проблема носит аппаратный характер, выделяют несколько возможных причин появления такой ошибки:

  • разгон системы (оверлокинг);
  • неправильная работа разделов памяти гаджета;
  • неисправности графической карты;
  • устаревшие драйверы;
  • проникновение вирусных ПО;
  • некорректная работа HDD;
  • нарушение целостности файлов системы;
  • установка проблемного софта.

Установить причину появления BSOD с такой ошибкой рядовому пользователю достаточно сложно.

Устранить проблему самостоятельно можно, выбрав один из предложенных ниже способов.

Как исправить ошибку?

Избавиться от синего экрана БСОД можно перезагрузкой ПК и выполнением одного из предложенных способов. В этом случае можно потерять часть данных с устройства. Причин появления clock watchdog timeout несколько, рассмотрим подробнее каждый из них и варианты решения проблемы.

Откат недавно обновленного драйвера устройства

Устаревшие или недавно обновленные драйверы могут повлиять на нестабильность в работе системы и вызвать появление ошибки. Для ее устранения компоненты можно обновить или переустановить, также выполнить откат.

Для выполнения процедуры нужно следовать алгоритму:

  • Кликнуть ПКМ по значку «Пуск».
  • Выбрать из списка «Диспетчер устройств».
  • Выбрать устройство со значком, который показывает отсутствие драйвера. Нажать на него.
  • Перейти во вкладку «Драйвер».
  • Во вкладке появится меню, где можно делать откат, отключение или удаление компонента.
  • Выбрать нужный параметр.

Автоматическая установка драйверов система выполняет не всегда, поэтому юзеру придется посетить официальный сайт разработчика, скачать требуемый файл для установки новых драйверов.

Запуск средства диагностики памяти Windows

В «десятке» предусмотрено встроенное средство проверки оперативной памяти, с помощью которого можно провести диагностику.

Для запуска утилиты потребуется выполнить следующее:

  • Нажать комбинацию клавиш: «Win + R».
  • В окне «Выполнить» ввести команду: mdsched.
  • В открывшемся окне выбрать рекомендованный режим.

После перезагрузки компьютер запустится в среде средства диагностики памяти Виндовса. Софт выполнит несколько проходов для обнаружения ошибок. Интерфейс средства достаточно прост и понятен, поэтому сложностей возникнуть не должно. После остановки проверки система выдаст результаты об ошибках и коды остановки, которые будут отображены в журнале событий.

Отключение нового оборудования

Если перед возникновением ошибки пользователь подключил к цифровой технике какое-либо оборудование, это могло стать причиной неполадки. Владельцу ПК придется отключить новое устройство (флеш-накопитель, видеокарту, SSD). Чтобы выявить источник проблемы, нужно отсоединять устройства поочередно.

При подключении нового устройства ошибка может быть вызвана отсутствием необходимого драйвера для его нормальной работы. После обнаружения девайса, вызвавшего сбой, юзеру понадобится проверить, установлен ли на него драйвер, совместим ли он с ОС.

Устранение неполадок в состоянии чистой загрузки

Исправить текущую ошибку можно вручную, используя чистую загрузку операционки. В этом режиме ОС запустится с минимальными настройками. Гаджет использует при загрузке выбранные драйверы и утилиты для запуска.

Порядок действий следующий:

  • Нажать на клавиатуре комбинацию клавиш: «Win + R».
  • Ввести в строку: msconfig.
  • Во вкладке «Общие» поставить маркер рядом с надписью «Выборочный запуск».
  • Убрать галочку с первого пункта, поставить отметку рядом с загрузкой системных служб.
  • Нажать «Ok».
  • Перейти во вкладку «Службы», поставить отметку возле пункта «Не отображать службы «Майкрософт».
  • Тапнуть по кнопке «Отключить все».
  • Подтвердить действие.

Такой способ помогает выявить проблемы с производительностью ПК.

Обновление BIOS

Синий экран с ошибкой clock watchdog timeout может появиться из-за устаревшей версии базовой системы ввода-вывода ПК. Обновление БИОС материнской платы ПК или ноутбука является стандартным решением для устранения сбоя. Операция исключает проблемы, связанные с ПО и устройствами.

Чтобы понять, какая версия БИОС установлена на устройстве, нужно следовать инструкции:

  • Нажать комбинацию клавиш: «Win + R».
  • Ввести значение в строку окна: msinfo32. Нажать «Ok».
  • В окне «Сведения о системе» найти информацию о БИОС, записать в текстовый файл и сохранить.
  • Перейти на официальный сайт разработчика установленной материнской платы, зайти в раздел загрузок и скачать обновленный БИОС.
  • Перезагрузить компьютер.

После выполнения всех пунктов пользователю нужно проверить, исчезла ли проблема. Такой метод рекомендуется использовать только продвинутым пользователям, так как любые изменения в базовой системе ввода-вывода ПК могут привести к серьезным проблемам. Все этапы нужно выполнять согласно инструкции производителя платы для точного процесса обновления.

Программисты и опытные пользователи могут использовать один из предложенных способов для выявления причин появления неполадки и ее исправления. Новичкам желательно отказаться от оверлокинга и начать проверку со сброса к первоначальным настройкам БИОС. Если ни один из методов не помог, остается вариант восстановления системы с помощью установочного диска.

Источник: https://it-tehnik.ru/windows10/oshibki/clock-watchdog-timeout-kak-ispravit.html

AVR Урок 53. Watchdog Timer (WDT). Часть 1

Intel watchdog timer driver что это

Уже более года мною не публиковалось уроков по контроллерам AVR. На это были различного рода причины.

Во-первых, я считал, что основные виды периферии и прочих составляющих данного контроллера нами уже изучены.

Во-вторых, у меня не было и нет нормального программатора, который бы виделся в среде разработки полноправно. Уроки без этого снимать можно, но готовить проекты для них, поверьте, очень тяжело.

В-третьих, с выходом более современных контроллеров интерес к данным контроллерам упал, хоть и незначительно, но всё же это есть.

Несмотря на это, я всё же, взвесив все “за” и “против”, всё же решил ещё раз попытать счастья и выложить пару уроков (пока пару, а там посмотрим, как дело пойдёт) по данным микроконтроллерам.

Что же всё-таки сподвигло меня на данный шаг?

Во-первых, многочисленные просьбы посетителей моего ресурса, а также просьбы в личных сообщениях.

Во-вторых, новый хозяин данного семейства контроллеров Microchip, включил эти контроллеры в свою среду разработки MPLAB X, что позволит нам теперь обойтись сразу на два семейства одной средой разработки.

В-третьих, также выявились определённые темы, которые не были освещены в моем предыдущем, как я считал до этого, вполне исчерпывающем курсе занятий по контроллерам AVR.

И вот одним из неизведанных ещё нами модулей оказался модуль Watchdog Timer (WDT), который, как оказалось, много где используется и выполняет очень важные роли в работе программ. Тем более, меня ранее многие просили сделать по нему урок, но я либо недопонимал ценность данной периферии, либо был увлечён чем-то другим.

Вот и настало время наконец-то восполнить данный пробел.

Watchdog Timer (WDT) – это сторожевой таймер (а если перевести дословно, “сторожевой пёс”), который представляет собой аппаратно-реализованную схему контроля над зависанием системы.

Это таймер, который периодически сбрасывается контролируемой системой.

Если вдруг сброса не произошло за определённый интервал времени после предыдущего сброса данного таймера, то происходит принудительная перезагрузка системы (в нашем случае микроконтроллера).

В каких конкретных случаях мы можем применить данный таймер?

Например, мы ждём ответа от какой-нибудь шины (например I2C или ещё какой-то) в виде отслеживания состояния определённого бита регистра. И вдруг произойдёт кратковременное отсоединение провода этой шины.

После этого скорей всего произойдёт зависание программы, так как в шине будет сбой, и даже если что-то после и придёт от присоединённого узла, то мы вряд ли уже это отследим изменением состояния бита. Желательно, чтобы после какого-то таймаута система перезагрузилась.

Тут-то и приходит нам на помощь WDT, который установлен на определённый интервал. Команду на перезагрузку сторожевого таймера мы расположим в нашем коде после того, как мы дождёмся отклика от шины.

А если мы так его и не дождёмся, то мы не дойдём до команды перезагрузки WDT и через заветный интервал времени система будет перезагружена. После этого произойдёт заново инициализация шины и всё будет опять работать нормально.

Понятно, что данная ситуация подходит только для случая, когда нам приходится не слишком долго ждать отклика от устройств, то есть именно тогда, когда у нас существует какой-то непрерывный процесс, в котором есть возможность ситуации сбоя. Таких примеров можно придумать много, поэтому Watchdog Timer очень много где применяется.

При работе с таймером в нашем коде мы не будем напрямую работать с его регистрами, так как там ещё надо проделывать очень много различных подготовительных мероприятий. Для этого существует отличная библиотека wdt.

h, которая находится в стандартном комплекте для AVR и не требует дополнительного подключения откуда-то.

Но тем не менее о том, как именно устроен сторожевой таймер в контроллере ATMega328, которым мы и будем сегодня пользоваться, мы всё же поговорим.

Таймер питается от отдельного генератора, который вместе с ним входит в логику перезагрузки контроллера

А вот это диаграмма сброса контроллера по истечении интервала времени

Кроме того, что мы можем сбросить сторожевой таймер где-то в коде, мы можем также и отследить окончание интервала времени по прерыванию, которое надо включить отдельно.

WDT, как и было указано выше, работает от отдельного генератора.

Также следует отметить, что диапазон интервалов данного таймера не бесконечен.

Давайте посмотрим блок-схему WDT

На рисунке мы видим, что после генератора на 128 килогерц, сигнал проходит на предделитель, который содержит 10 различных выходов с различным коэффициентом деления. Предделитель настраивается с помощью битов WDP3:WDP0 регистра WDTCSR. Таким образом, интервал времени работы WDT лежит в диапазоне от 15 милисекунд до 8 секунд.

Также мы видим, что с помощью бита WDIE мы можем разрешить прерывания от сторожевого таймера и затем попасть в обработчик, отслеживая состояние бита WDIF. Включается таймер с помощью бита WDE.

Вот он – управляющий регистр сторожевого таймера

Хоть мы уже и говорили о битах данного регистра выше, но всё же давайте все их рассмотрим подробно, их не так и много, так как у таймера всего один регистр

WDIF (Watchdog Interrupt Flag): флаг прерывания. Устанавливается в 1 в случае истечения интервала времени таймера. Сбрасывается аппаратно.

WDIE (Watchdog Interrupt Enable): бит разрешения прерываний от таймера. если установлен в 1, то прерывания разрешены, если в 0 – запрещены.

Существует таблица зависимости от состояния бетов WDE, WDIE, а также фьюза WDTON

Из данной таблицы очень интересно то, что для того, чтобы работать с прерываниями от сторожевого таймера, его не обязательно включать. Достаточно лишь разрешить от него прерывания. Только если не включать, то прерывания работать будут, но таймер при этом не будет перезагружать систему.

WDP2:WDP0 (Watchdog Timer Prescaler): биты, устанавливающие коэффициент деления предделителя сторожевого таймера.

Вот таблица возможных комбинаций данных битов

Здесь также даны сами интервалы в единицах времени.

WDCE (Watchdog Change Enable): бит изменения, который должен быть предварительно включен перед тем, как мы соберёмся внести изменения в предделитель с целью изменения коэффициента деления либо для отключения таймера путём занесения в бит WDE значения 0. Сбрасывается аппаратно после четырех тактов.

WDE (Watchdog System Reset Enable): бит включения таймера, а вернее бит включения режима перезагрузки системы по истечению интервала времени таймера WDT.

Ну вот, я думаю и всё насчёт теории по сторожевому таймеру. Если что-то пропустил, то исправим это в процессе сочинения кода.

Код наш выполнять будет следующие задачи.

У нас, помимо WDT, будет также работать ещё таймер TIM1, данный таймер будет работать по совпадению, следовательно в обработчик прерываний от него мы будем попадать через определённое время периодично.

В обработчике таймера мы будем периодично включать 10 ножек различных портов, а состояние их на какой-то момент мы будем определять по светодиодам, которые мы к ним подключим.

Вернее, мы подключим светодиодную планку с 10-ю светодиодами, не забывая конечно о токоограничивающих резисторах, которые я на всякий случай подключил на 680 Ом, при этом светодиоды светятся вполне ярко.

В начале программы мы запустим наш сторожевой таймер WDT и зададим ему определённый интервал времени срабатывания. В процедуре обработки прерываний от таймера 1 мы будем своевременно сбрасывать сторожевой таймер, поэтому, если всё у нас будет нормально с ходом программы, то система у нас будет работать и не перезагрузится.

А для того, чтобы проверить, перезагрузится ли наш WDT по истечению интервала, мы сэмулируем ситуацию, что наш таймер перестанет работать.

Для этого мы подключим кнопку к контакту INT0 и обработаем от неё внешнее прерывание, в обработчике которого мы запретим прерывания от нашего таймера. Светодиоды, соответственно перестанут бежать, тем самым сигнализируя нам о том, что наш таймер 1 “сломался”.

Поэтому сторожевой таймер не перезагрузится, тем самым перезагрузит нашу систему и весь процесс у нас начнётся заново.

В качестве контроллера для урока мы возьмём контролер ATMega328P, расположенный на плате Arduino Nano, к которой подключим обычный USB-программатор через разъём ISP.

Вставим нашу плату в макетную плату, подведём к ножке PD2 (INT0) кнопку, а также от ножек D3-D12 (ножки портов PD3:PD7, PB0:PB4) подключим аноды светодиодов планки, а катоды через токоограничивающие резисторы подключим к общему проводу

Проект мы создадим в среде программирования MPLAB X, с которой мы постоянно работаем с микроконтроллерами PIC, так как у данных контроллеров владелец один и тот же, то нет смысла использовать несколько сред для разработки. Как установить данную среду разработки, показано здесь.

Создание проекта по ссылке можно не смотреть, мы его все равно сейчас будем создавать заново.

Запустим среду программирования MPLAB X и запустим создание проекта с помощью следующей кнопки

Выберем “Standalone Project” и идём далее

На следующем шаге выберем наш контроллер, перед этим отфильтровав контроллеры по семейству для удобства выбора, и движемся далее

На следующем шаге в качестве программатора выберем Simulator и идём далее

На следующем шаге выберем компилятор и идём дальше

Дадим имя нашему проекту и жмём “Finish”

В дереве проекта в ветке Source Files добавим новый файл main.c с помощью контекстного меню на данной ветке

Исправим имя файла и нажмём “Finish”

Файл main.c создан, чуть позже мы его исправим немного.

А пока создадим ещё заголовочный файл main.h аналогичным образом, только выбрав в контекстном меню на ветке “Header Files” и затем выбрав соответствующий пункт

Для нормального функционирования функции задержки зайдём в свойства проекта и откроем там настройки компилятора, в которых выберем настройку оптимизации

Оставим уровень оптимизации 0 и установим чекбокс на пункте Debug

Полностью удалим всё содержимое файла main.h и заменим его на следующее

#ifndef MAIN_H_ #define MAIN_H_ //————————————————– #define F_CPU 16000000L //————————————————– #include #include #include #include //————————————————– #endif /* MAIN_H_ */

#ifndef MAIN_H_

#define MAIN_H_

//————————————————–

#define F_CPU 16000000L

//————————————————–

#include

#include

#include

#include

//————————————————–

#endif /* MAIN_H_ */

Перейдём теперь в файл main.c, также очистим там всё содержимое, подключим в нём заголовочный файл и добавим точку входа – функцию main() с бесконечным циклом

#include “main.h” //—————————————————– int main(void) { while (1) { } } //—————————————————–

#include “main.h”

//—————————————————–

int main(void)

{

  while (1)

  {

  }

}

//—————————————————–

В следующей части урока мы напишем проект и проверим работу сторожевого таймера на практике.

Предыдущий урок Программирование МК AVR Следующая часть

Приобрести плату Arduino Nano V3.0 оригинальный FT232RL можно здесь.

Программатор (продавец надёжный) USBASP USBISP 2.0

Смотреть ВИДЕОУРОК (нажмите на картинку)

Источник: https://narodstream.ru/avr-urok-53-watchdog-timer-wdt-chast-1/

Поделиться:
Нет комментариев

    Добавить комментарий

    Ваш e-mail не будет опубликован. Все поля обязательны для заполнения.