WatchDog Timer

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

Re: WatchDog Timer

Сообщение Ильнур (Ильнур) » 28 янв 2014, 16:57

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

Re: WatchDog Timer

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

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

Re: WatchDog Timer

Сообщение Ильнур (Ильнур) » 28 янв 2014, 20:36

:headbang: думай думай думай думай....Не полушаетсо.Мим подскажи хоть последовательность дейсвий,типа:Включить Wdr,выключить,Установить в 1,в 0 разряд разрешения,в общем знакомые русские слова.Че то брехня какая то у меня,в суть не могу вникнуть,переводчик какую то бредятину с даташита выдает.Протеус ни как на мои каракули не реагирует,скоро он повесится от моей безграмотности. :headbang:
У вас нет доступа для просмотра вложений в этом сообщении.
Ник: Ильнур
Имя: Ильнур
(Ташкент)
Ученик
Ученик
Информация о пользователе
Вернуться наверх

Re: WatchDog Timer

Сообщение Ильнур (Ильнур) » 28 янв 2014, 21:45

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

Re: WatchDog Timer

Сообщение щербатый (щербатый) » 29 янв 2014, 04:02

Ильнур писал(а):Как правильно выбирать время таймера вочдога,в документации указанно что вроде бы можно до 8 секунд выставить..Версия Flowcode V4 for AVRs.

Привет Ильнур. Все когда то начинали... К вопросу выбора времени. В зависимости от задачи нужно и время выбирать. Как говорят дорога ложка к обеду. Смысл сработки дога, если к этому времени твое устройство. Которое чем то управляет. Простоит 8 секунд. А за это время то чем твое устройство управляет выйдет из строя. Или что нибудь в нем сгорит. То есть. Тебе нужно рассчитывать на самый наихудший случай по времени. И исходя из этого и задавать максимальное время дога. С тем, что бы твоя микропроцессорная система не допустила аварийной ситуации на объекте управления.
Я тоже пользуюсь 4-й версией. Как по мне она дает наименьший по размеру код. Надо кстати последнюю попробовать, может там сейчас тоже это учтено.
Насчет хорошего английского. Практика, критерий истины. Спаяй и пробуй. Выше я описывал как я проверял работу дога (работа с кварцем и электрошоком). Если твоя система такое выдержит. Можешь смело передавать в эксплуатацию.
Ник: щербатый
Имя: щербатый
Гуру
Гуру
Информация о пользователе
Вернуться наверх

Re: WatchDog Timer

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

Ильнур писал(а):подскажи хоть последовательность дейсвий

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

Re: WatchDog Timer

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

щербатый писал(а):Привет Ильнур. К вопросу выбора времени.

На макете все есть,даже с моим первым криво выложенным вариантом WDT все работает,после зависания ,через какое то время проц уходит в рестарт и продолжает работу.Выбор времени мне не критичен особо,весь цикл занимает где то милисекунд 5 от силы.Мне бы его просто грамотно включить.А время подобрать не проблема.
Последний раз редактировалось Ильнур 29 янв 2014, 10:57, всего редактировалось 1 раз.
Ник: Ильнур
Имя: Ильнур
(Ташкент)
Ученик
Ученик
Информация о пользователе
Вернуться наверх

Re: WatchDog Timer

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

mim писал(а):
Ильнур писал(а):подскажи хоть последовательность дейсвий

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

Ты сказал что бы я внимательно посмотрел в ДШ,там все есть,и в самом деле там был код на асм включения WDT,и он совпадал один в один с примером на меге 644 за исключением регистра WDTCSR. Я переправил на WDTCR как указанно в даташите.Сделал запись в сишную вставку
void WDT_Prescaler_Change(void). В настройках добавочного кода вбил вот это,все как в даташите .

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);
Как я понял это выключение WDT ,правда не понял зачем.
В добавочный код добавил

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();
}
Протеус ни как не отреагировал.Еще я читал что Протеус не дружит с WDT.
В общем тяжко это с тем учетом что я это впервые в жизни с этим сталкиваюсь.Мим ты скажи вообще я в правильную сторону копаю? Или мне забыть все что я сделал и идти в другом направлении.
Ник: Ильнур
Имя: Ильнур
(Ташкент)
Ученик
Ученик
Информация о пользователе
Вернуться наверх

Re: WatchDog Timer

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

Мне не нужен твой код, ты три дня занимаешься ерундой. Я писал "А что бы понять - нужно читать комментарии форума к этому файлу...". Я хочу увидеть эти комментарии твоими СЛЕПЫМИ (извени) глазами...
I Am Legend
Аватар пользователя
Ник: mim
Имя: mim
(Из Лесу, вестимо...)
Легенда
Легенда
Информация о пользователе
Вернуться наверх

Re: WatchDog Timer

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

Сидел разбирал шаги в сишной вставке,писал коментарии как я их понимаю.Скачал скопом все примеры.
Алилуя!!!!!Вочдог заработал и в протеусе и в железе. Поставил
//WDT_off();// OFF
вместо
void WDT_off(void);
Мим,что это я натворил???? И да глаза у меня слепые,по детству читал много,посадил зрение до минус 5.Так что ты в этом прав.И еще вопрос,надо ли в таком случае в Баскоме выставлять самому фьюз на включение WDT ? Или включения в прошивке достаточно?

И вот мои коментарии как я шо понял

void WDT_Prescaler_Change(void) //Отключаем Прескалер,То есть предделитель.
{
cli();//__disable_interrupt(); //отключаем прерывания,как я понял они могут использоваться для чего угодно,вочдог,сбросы.(Зачем они кстати? Я не совсем понял)
asm ("wdr"); //__watchdog_reset(); //Рестарт Вочдога на всякий случай что бы не успел сработать пока прописывается все остальное
/* Start timed sequence */ //Тут мы начинаем выстраивать логику работы
WDTCR |= (1<<WDCE) | (1<<WDE); // Выключаем вочдог единичками в регистрах WDCE и WDE,это сделанно что бы в случае нештатных ситуаций не было отключения вочдога.
/* Set new prescaler(time-out) value = 64K cycles (~0.5 s) */ //включаем вочдог единичкой на WDE и выставляем прескалер на 0.5 сек с помощью регистров WDP
WDTCR = (1<<WDE) | (1<<WDP2) | (1<<WDP0);
sei(); //__enable_interrupt(); ..Разрешаем прерывания.
}

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

Кстати Мим,где смотреть файл wdt.h.?
Последний раз редактировалось Ильнур 29 янв 2014, 13:35, всего редактировалось 2 раз(а).
Ник: Ильнур
Имя: Ильнур
(Ташкент)
Ученик
Ученик
Информация о пользователе
Вернуться наверх

Пред.След.

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

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

Пользователь просматривает форум: нет зарегистрированных пользователей