Відповіді:
За замовчуванням увімкнено таймер сторожового собаки (WDT), це корисна річ у складніших програмах, але запускає багато нових людей. Вони часто не будуть обслуговувати WDT у своєму коді або включати процедуру переривання обслуговування (ISR) для обробки події WDT, тому, коли їх чіп продовжує скидатись, вони сильно засмучуються. Крім того, зразкові програми здебільшого не намагаються продемонструвати WDT, тому вони вимкнено.
Редагувати: сторожовий таймер міг би бути названий "вимикачем мертвих людей". Його поведінка за замовчуванням - це скидання мікроконтролера, якщо прошивка періодично не дає йому знати, що все працює нормально. Це відомо як "годування собаки" або "удари собакою". Таким чином, якщо ваша прошивка застрягне в циклі або іншим чином перестане працювати, як очікувалося, сторожовий пес не буде подаватися і скине чіп (сподіваємось до свіжого, робочого стану).
Ви також можете використовувати WDT в якості періодичного переривання для виконання інших завдань, що б ви не могли собі уявити. Вам просто потрібно написати відповідний ISR.
Окрім думки Самуеля про людей, які випадково вимикають WDT, є ще одна важлива причина, чому її слід спочатку відключити.
Навіть якщо ваша програма, як правило, здатна правильно скинути таймер, вона може не зробити цього під час коду ініціалізації з двох причин:
Як результат, є доброю практикою відключити WDT як перше, що ви робите, навіть якщо ви ніколи цього не вмикали .
Якщо ви хочете використовувати його, ви можете знову ввімкнути його безпосередньо перед вмиканням переривань, як останній крок вашого коду підписки.
int _system_pre_init(void)
функції, яка виконується ранішеmain