Реклама на сайте English version  DatasheetsDatasheets

KAZUS.RU - Электронный портал. Принципиальные схемы, Datasheets, Форум по электронике

Новости электроники Новости Литература, электронные книги Литература Документация, даташиты Документация Поиск даташитов (datasheets)Поиск PDF
  От производителей
Новости поставщиков
В мире электроники

  Сборник статей
Электронные книги
FAQ по электронике

  Datasheets
Поиск SMD
Он-лайн справочник

Принципиальные схемы Схемы Каталоги программ, сайтов Каталоги Общение, форум Общение Ваш аккаунтАккаунт
  Каталог схем
Избранные схемы
FAQ по электронике
  Программы
Каталог сайтов
Производители электроники
  Форумы по электронике
Помощь проекту


 
Опции темы
Непрочитано 03.03.2018, 16:14  
kolobokus
Прописка
 
Аватар для kolobokus
 
Регистрация: 10.09.2009
Адрес: Санкт-Петербург
Сообщений: 101
Сказал спасибо: 11
Сказали Спасибо 4 раз(а) в 4 сообщении(ях)
kolobokus на пути к лучшему
По умолчанию Проблемы с моделированием работы сторожевого таймера.

В моем проекте не удается корректно применить сторожевой таймер в режиме сброса. Устанавливаю его на период 1 сек. (визардом CVAVR), а он сбрасывает через 0,5мс. Устанавливаю его на 2 сек., сбрасывает через 1 мс.

Контроль по симуляции в Proteus 7.7.2.9089. CVAVR: V2.05.0 Professional.
под WINDOWS 7. Работаю с ATmega328P.
Для того, чтобы разобраться с ситуацией, подготовил проект проверки работы Watchdog Timer (в приложении в одной папке исходник и симуляция в Протеусе).
Запускаю программу, и получаю постоянные сбросы, с периодом в 2000 раз меньше задаваемого (таких времен (‹16mc) даже в даташите нет).
Подскажите, в чем засада?
Миниатюры:
Нажмите на изображение для увеличения
Название: log.jpg
Просмотров: 0
Размер:	185.0 Кб
ID:	125977  
Вложения:
Тип файла: rar 1.rar (74.2 Кб, 0 просмотров)
Тип файла: txt code.txt (1,021 байт, 0 просмотров)
Реклама:
__________________
Электроника - это то, что было до фотоники.
kolobokus вне форума  
Непрочитано 04.03.2018, 00:14  
DanilinSA
Почётный гражданин KAZUS.RU
 
Регистрация: 25.11.2010
Адрес: г. Дзержинск Нижегородская обл.
Сообщений: 1,671
Сказал спасибо: 130
Сказали Спасибо 1,074 раз(а) в 517 сообщении(ях)
DanilinSA на пути к лучшему
По умолчанию Re: Проблемы с моделированием работы сторожевого таймера.

А вы уверенны в корректной симуляции Watchdog Timer ? Он и в железе бывает глючит, а вы в симуляции корректной работы хотите.
DanilinSA вне форума  
Непрочитано 04.03.2018, 12:00  
kolobokus
Прописка
 
Аватар для kolobokus
 
Регистрация: 10.09.2009
Адрес: Санкт-Петербург
Сообщений: 101
Сказал спасибо: 11
Сказали Спасибо 4 раз(а) в 4 сообщении(ях)
kolobokus на пути к лучшему
По умолчанию Re: Проблемы с моделированием работы сторожевого таймера.

Не уверен. Поэтому и хотел бы услышать тех, кто имеет опыт в этом вопросе. Когда раньше использовал "собаку", то как-то с бубном обходилось. Но сейчас другой комп, другие версии программ.
При прошивке в МК программа работает как надо с задействованным на сброс WDR.
По этому, чтобы разобраться решил помучить только одну эту функцию (сброс по сторожевому таймеру) в выложенном проекте.
Прошу откликнуться тех, кто столкнулся с этой проблемой или знает, в чем дело.
__________________
Электроника - это то, что было до фотоники.

Последний раз редактировалось kolobokus; 04.03.2018 в 17:49.
kolobokus вне форума  
Непрочитано 04.03.2018, 13:28  
ForcePoint
Почётный гражданин KAZUS.RU
 
Регистрация: 20.03.2007
Адрес: "Братское кольцо враждебности", т.е. ближайшее заМКАДье.
Сообщений: 6,783
Сказал спасибо: 2,911
Сказали Спасибо 3,118 раз(а) в 2,109 сообщении(ях)
ForcePoint на пути к лучшему
По умолчанию Re: Проблемы с моделированием работы сторожевого таймера.

Сообщение от DanilinSA Посмотреть сообщение
Он и в железе бывает глючит
То, что не отражено в errata - существует только в нашем воображении.
Сообщение от DanilinSA Посмотреть сообщение
а вы в симуляции корректной работы хотите.
Это - более вероятно.

А теперь - посмотрим на code.txt и /List/1.lst и увидим, что макрос инициализации таймера - спорный. Вместо
Код:
#asm("wdr")
WDTCSR=0x1E; // init WDT
WDTCSR=0x0E; // 1s
следует писать (как указано в примерах в документации на МК - глава Watchdog Timer, раздел Overview)
Код:
#asm("wdr")
MCUSR &= (0xFF & (0 ‹‹ WDRF));	// Clear WDRF in MCUSR
WDTCSR=0x18;	// а лучше - (1 ‹‹ WDCE)+(1 ‹‹ WDE)
WDTCSR=0x0E;	// а лучше - (1 ‹‹ WDE)+(1 ‹‹ WDP2)+(1 ‹‹ WDP1)

Также - зачем стоит в самом низу "while (1){}"? Не там-ли спотыкается тест?
Да и на "delay_ms(1000); // 1s" уже есть шанс поймать сброс.
__________________
Экзорцист 40-го уровня.

Последний раз редактировалось ForcePoint; 04.03.2018 в 15:15. Причина: Движок возбудился на "<<" и съел половину кода.
ForcePoint на форуме  
Непрочитано 04.03.2018, 14:48  
kolobokus
Прописка
 
Аватар для kolobokus
 
Регистрация: 10.09.2009
Адрес: Санкт-Петербург
Сообщений: 101
Сказал спасибо: 11
Сказали Спасибо 4 раз(а) в 4 сообщении(ях)
kolobokus на пути к лучшему
По умолчанию Re: Проблемы с моделированием работы сторожевого таймера.

Возможно, проблема в симуляторе.
Код взят из даташита
Нажмите, чтобы открыть спойлер
C Code Example(1)
void WDT_Prescaler_Change(void)
{
__disable_interrupt();
__watchdog_reset();
/* Start timed equence */
WDTCSR |= (1‹‹WDCE) | (1‹‹WDE);
/* Set new prescaler(time-out) value = 64K cycles (~0.5 s) */
WDTCSR = (1‹‹WDE) | (1‹‹WDP2) | (1‹‹WDP0);
__enable_interrupt();
}


и из визарда кодевижен.
Нажмите, чтобы открыть спойлер
// Watchdog Timer initialization
// Watchdog Timer Prescaler: OSC/128k
// Watchdog Timer interrupt: Off
#pragma optsize-
#asm("wdr")
WDTCSR=0x1E;
WDTCSR=0x0E;
#ifdef _OPTIMIZE_SIZE_
#pragma optsize+
#endif


"while (1){}" - это, собственно, основная программа
Пока она крутится, переполняется WDR и спустя 1 с (задано установками WDP2 и WDP0) должен пройти сброс МК, а на самом деле он проходит спустя 0,5мс (смотри лог) после установки. Да и сама установка при этом равна 0,5мс вместо 1с.

Функция delay_ имеет встроенный сброс wdr с периодом 1мс (см. описание функции в CV) и помешать не может. Ее использую только для наглядности мигания светодиода (без задержки не увидишь кратковременного загорания светодиода). То есть, если бы симуляция работала правильно, то на выходе PB0 был бы меандр с частотой пол герца.
__________________
Электроника - это то, что было до фотоники.

Последний раз редактировалось kolobokus; 04.03.2018 в 14:51.
kolobokus вне форума  
Непрочитано 04.03.2018, 14:54  
kolobokus
Прописка
 
Аватар для kolobokus
 
Регистрация: 10.09.2009
Адрес: Санкт-Петербург
Сообщений: 101
Сказал спасибо: 11
Сказали Спасибо 4 раз(а) в 4 сообщении(ях)
kolobokus на пути к лучшему
По умолчанию Re: Проблемы с моделированием работы сторожевого таймера.

Clear WDRF in MCUSR не помогает, проверено.
Период delay уменьшал до 500мс - не помогло.
__________________
Электроника - это то, что было до фотоники.
kolobokus вне форума  
Непрочитано 04.03.2018, 17:57  
kolobokus
Прописка
 
Аватар для kolobokus
 
Регистрация: 10.09.2009
Адрес: Санкт-Петербург
Сообщений: 101
Сказал спасибо: 11
Сказали Спасибо 4 раз(а) в 4 сообщении(ях)
kolobokus на пути к лучшему
По умолчанию Re: Проблемы с моделированием работы сторожевого таймера.

Думаю, вопрос надо считать решенным: При прошивке в МК программа работает правильно. Значит глючит Протеус.
Всем кто наступит на те же грабли рекомендую отлаживать программу в Протеусе с закоментированными строчками инициализации сторожевого таймера в коде и с Unprogrammed WDTON в свойствах камушка в Протеусе.
А при заливке не забыть разкомментировать инициализацию WDT и перекомпилировать проект.
__________________
Электроника - это то, что было до фотоники.
kolobokus вне форума  
Непрочитано 04.03.2018, 19:27  
jump
Почётный гражданин KAZUS.RU
 
Регистрация: 20.06.2006
Адрес: Украина, Запорожье
Сообщений: 7,981
Сказал спасибо: 0
Сказали Спасибо 4,939 раз(а) в 2,369 сообщении(ях)
jump на пути к лучшему
По умолчанию Re: Проблемы с моделированием работы сторожевого таймера.

Сообщение от kolobokus Посмотреть сообщение
При прошивке в МК программа работает правильно. Значит глючит Протеус
ну, думаю, - выздоравливает человек, но дальше читаю
Сообщение от kolobokus Посмотреть сообщение
рекомендую отлаживать программу в Протеусе
болезнь с новой силой схватила за ****
jump вне форума  
 

Закладки
Опции темы

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Обзоры покупок товаров на GEARBEST.COM mikesmith Барахолка электронных компонентов 397 12.10.2018 22:51
Переключение режима таймера STM32F100 в процессе работы busannovmail ARM 2 19.11.2017 10:50
"Глюк" AVR таймера от кварца 32768 Гц alexgap Коллекция глюков 23 16.09.2013 07:29
Проблема при симуляции puchik006 Proteus 57 30.06.2013 08:13


Часовой пояс GMT +4, время: 00:28.


Powered by vBulletin® Version 3.8.4
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd. Перевод: zCarot