WatchDog Timer

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

Re: WatchDog Timer

Сообщение masivnik (Иван Николаевич) » 29 янв 2014, 12:51

Ильнур писал(а):Сидел разбирал шаги в сишной вставке,писал коментарии как я их понимаю.Скачал скопом все примеры.
На всякий случай посмотри еще это...
Аватар пользователя
Ник: masivnik
Имя: Иван Николаевич
(Междуреченск)
Суперконсульт
Суперконсульт
Информация о пользователе

Re: WatchDog Timer

Сообщение Ильнур (Ильнур) » 29 янв 2014, 14:22

Хорошо,спасибо,почитаю,повникаю.
Ник: Ильнур
Имя: Ильнур
(Ташкент)
Ученик
Ученик
Информация о пользователе

Re: WatchDog Timer

Сообщение mim (mim) » 29 янв 2014, 17:11

Ильнур писал(а):Кстати Мим,где смотреть файл wdt.h.?
Там где я тебе уже писал и даже дал ссылку на описание его внутренностей...
Одень очки... на кой хрен мне твои комментарии к программе...
mim писал(а):Мне не нужен твой код, ты три дня занимаешься ерундой. Я писал "А что бы понять - нужно читать комментарии форума к этому файлу...". Я хочу увидеть эти комментарии твоими СЛЕПЫМИ (извени) глазами...

Так что одевай двоек очков.
I Am Legend
Аватар пользователя
Ник: mim
Имя: mim
(Из Лесу, вестимо...)
Легенда
Легенда
Информация о пользователе
Вернуться наверх

Re: WatchDog Timer

Сообщение Ильнур (Ильнур) » 30 янв 2014, 19:22

Все,я сдаюсь,собираю как есть,или к концу недели меня вешают,или буду вручную клапана переключать.Мим,Ты мне скажи,надо ли ставить галочку на фьюз включения Вочдога в Баскоме перед прошиванием,или же записи включения в исходнике достаточно?И вообще тебе с твоей колокольни все кажется проще, мне с моей колокольни многое не понятно.Открыл я файл wdt.h. Посмотрел, как приблизительно понял, там запись реакции на С вставки,перевод с асм команд,и настройки прескалера в при установках тех или иных регистров для разных типов контролеров.Или же я снова ничего не понял.
Ник: Ильнур
Имя: Ильнур
(Ташкент)
Ученик
Ученик
Информация о пользователе
Вернуться наверх

Re: WatchDog Timer

Сообщение Вячеслав (Вячеслав) » 31 янв 2014, 07:20

Ильнур писал(а):к концу недели меня вешают

Жаль человека. Ставь галочки во все окошки, лишь бы это не случилось. Смотри результат после компиляции исходника. Обычно смотрю код Config, перед прошивкой МК в окошке программатора. Это надежнее. Включай действие Watchdog" через конфигурацию МК.
Как было описано уже неоднократно, "собаку" (после включения) надо периодически сбрасывать программно.
Во FC это задается галочкой в параметрах. Верхняя строчка окошка программы: чип-> настройка проекта -> окно "параметры проекта" -> закладка "общие параметры" -> окошечко "Самоочищать Watchdog". Всегда можно проверить результат после компиляции в асм наличием команд сброса "собаки". Бездумно, но сбросы расставляет.
Ильнур писал(а):буду вручную клапана переключать

Как я понимаю, программа будет переключить клапаны и без Watchdog, если он не задействован в логике программы. Прочитай, для чего его используют. Сам его использую, только если возможно появление мощной помехи. Занимаюсь им на последнем этапе работы над программой.
Удачи.
Аватар пользователя
Ник: Вячеслав
Имя: Вячеслав
(Саратов)
Супер разработчик
Супер разработчик
Информация о пользователе
Вернуться наверх

Re: WatchDog Timer

Сообщение mim (mim) » 31 янв 2014, 07:46

Вячеслав писал(а):Включай действие Watchdog" через конфигурацию МК. Как было описано уже неоднократно, "собаку" (после включения) надо периодически сбрасывать программно. Во FC это задается галочкой в параметрах. Верхняя строчка окошка программы: чип-> настройка проекта -> окно "параметры проекта" -> закладка "общие параметры" -> окошечко "Самоочищать Watchdog". Всегда можно проверить результат после компиляции в асм наличием команд сброса "собаки". Бездумно, но сбросы расставляет.

Это не верное рассуждение... Есть такая галочка - это верно, но работает не так - и вот это действительно было описано...
Галочка указывает программной среде Flowcode, что нужно все паузы типа Delay_XX (вставленные разработчиком) заменить на паузы Wdt_Delay_XX (из библиотеки Матриксов), в которых есть команда сброса Дог-таймера. Если в программе нет Пауз (Delay_XX), то и сброс рсставлен не будет... Кроме того при малых частотах кварца эти программные паузы "мс" и "с" очень сильно врут, как они написаны - мы тоже рассматривали.
Например, так выглядит пауза для "мс" со сбросом Дог таймера
Код: выделить все
static void Wdt_Delay_Ms(char delay)
{
    char i;
    for (i=0; i<delay; i++)
    {
        MX_CLEAR_WATCHDOG;        //Clear Watchdog Timer
        delay_ms(1);
    }
}

Внутри такой паузы вставлена библиотечная пауза delay_ms(1), весь остальной код - это погрешность...
MX_CLEAR_WATCHDOG определен как wdt_reset() в файле C:\Program Files\Flowcode(AVR)\v5\FCD\internals.c
Так что лучше сброс Дога прописывать самолично и обдуманно.

ЗЫ Если во время программирования Дог включить аппаратно (через фьюзы), то его нельзя отключить программно (если это понадобится).
I Am Legend
Аватар пользователя
Ник: mim
Имя: mim
(Из Лесу, вестимо...)
Легенда
Легенда
Информация о пользователе
Вернуться наверх

Re: WatchDog Timer

Сообщение Ильнур (Ильнур) » 31 янв 2014, 08:53

Да пусть стоит включенным ,он там по любому нужен.Спасибо за ответы.Помехи по питанию там есть.Проц зависал иногда.
Ник: Ильнур
Имя: Ильнур
(Ташкент)
Ученик
Ученик
Информация о пользователе
Вернуться наверх

Re: WatchDog Timer

Сообщение Ильнур (Ильнур) » 10 мар 2014, 11:23

И снова здравствуйте.Я все по поводу WDT Atiny13. Попробовал вместо дополнительного Си кода

void WDT_Prescaler_Change(void)
{
cli();//__disable_interrupt();
asm ("wdr"); //__watchdog_reset();
/* Start timed sequence */
WDTCR |= (1<<WDCE) | (1<<WDE);
/* Set new prescaler(time-out) value = 64K cycles (~0.5 s) */
WDTCR = (1<<WDE) | (1<<WDP2) | (1<<WDP0);
sei(); //__enable_interrupt();
}

void WDT_off(void)
{
cli();//__disable_interrupt();
asm ("wdr"); //__watchdog_reset();
/* Clear WDRF in MCUSR */
MCUSR &= ~(1<<WDRF);
/* Write logical one to WDCE and WDE */
/* Keep old prescaler setting to prevent unintentional time-out */
WDTCR |= (1<<WDCE) | (1<<WDE);
/* Turn off WDT */
WDTCR = 0x00;
sei(); //__enable_interrupt();
}


просто Си вставку

WDTCR |= (1<<WDCE) | (1<<WDE); // включаем вдт. стр 41
WDTCR = (1<<WDE) | (1<<WDP3); //прескалер в 4 сек. Табл 8-2

В протеусе заработало.

Еще находил когда то пример на форуме для Atiny 2313 с такой вставкой:

//WDTCSR &=0xF8; // не обязательно
WDTCSR |= 0x07;// установили период 2сек ДАТА табл 20.
WDTCSR |= (1<<WDCE) | (1<<WDE); // включили

Но почему то Протеус пишет ошибку по поводу WDT

Переправил на

WDTCSR |= (1<<WDCE) | (1<<WDE); // включить WDT
WDTCSR = (1<<WDE) | (1<<WDP3);// установили период 4сек ДАТА табл 20.

В протеусесе тоже заработало.
При чем в случае с Atiny 13 не важно какая строка первая,с включением собачки либо с установкой прескалера,все равно работает.В случае же с Atiny 2313 порядок имел значение.

Вопрос: правильно ли я включаю собаку в этих двух примерах? Или могут возникнуть проблемы в работе? И какую функцию выполняет строка: //WDTCSR &=0xF8; // ? Спасибо за ответы.
У вас нет доступа для просмотра вложений в этом сообщении.
Ник: Ильнур
Имя: Ильнур
(Ташкент)
Ученик
Ученик
Информация о пользователе
Вернуться наверх

Re: WatchDog Timer

Сообщение Ильнур (Ильнур) » 20 мар 2014, 18:05

Мим, не подскажешь?
Ник: Ильнур
Имя: Ильнур
(Ташкент)
Ученик
Ученик
Информация о пользователе
Вернуться наверх

Re: WatchDog Timer

Сообщение mim (mim) » 20 мар 2014, 19:41

Ильнур писал(а):Мим, не подскажешь?
Я уже это делал...
I Am Legend
Аватар пользователя
Ник: mim
Имя: mim
(Из Лесу, вестимо...)
Легенда
Легенда
Информация о пользователе
Вернуться наверх

Пред.След.

Вернуться в ПЕСОЧНИЦА

Кто сейчас на форуме

Пользователь просматривает форум: Google [Bot]