Например TDA7294

Форум РадиоКот • Просмотр темы - WatchDog Timer Сторожевой таймер в AVR
Форум РадиоКот
Здесь можно немножко помяукать :)



Текущее время: Ср янв 22, 2020 02:46:48

Часовой пояс: UTC + 3 часа


ПРЯМО СЕЙЧАС:



Начать новую тему Ответить на тему  [ Сообщений: 207 ]     ... , , , 9, ,  
Автор Сообщение
Не в сети
 Заголовок сообщения: Re: WatchDog Timer Сторожевой таймер в AVR
СообщениеДобавлено: Ср ноя 08, 2017 10:13:25 
Первый раз сказал Мяу!

Зарегистрирован: Ср сен 13, 2017 05:53:24
Сообщений: 29
Рейтинг сообщения: 0
А можно ли сторожевой таймер использовать не по назначению, лишь как обычный таймер?


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: WatchDog Timer Сторожевой таймер в AVR
СообщениеДобавлено: Ср ноя 08, 2017 10:27:45 
Друг Кота
Аватар пользователя

Карма: 69
Рейтинг сообщений: 1187
Зарегистрирован: Вс мар 29, 2009 22:09:05
Сообщений: 7426
Рейтинг сообщения: 0
В некоторых контроллерах - да.

_________________
Разница между теорией и практикой на практике гораздо больше, чем в теории.


Вернуться наверх
 
JLCPCB, всего $2 за прототип печатной платы! Цвет - любой!

Отличное качество, подтвержденное более чем 600,000 пользователей! Более 10,000 заказов в день.

Зарегистрируйтесь и получите два купона по 5$ каждый:https://jlcpcb.com/quote

Не в сети
 Заголовок сообщения: Re: WatchDog Timer Сторожевой таймер в AVR
СообщениеДобавлено: Ср ноя 08, 2017 10:28:50 
Ум, честь и совесть. И скромность.
Аватар пользователя

Карма: 83
Рейтинг сообщений: 1537
Зарегистрирован: Чт дек 28, 2006 08:19:56
Сообщений: 14458
Откуда: Новочеркасск
Рейтинг сообщения: 0
Медали: 2
Получил миской по аватаре (1) Мявтор 3-й степени (1)
В некоторых контроллерах - да.

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

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

клавиатура частенько сбоит - пропускает буквы. так что прошу простить, если что...


Вернуться наверх
 
PCBWay - всего $5 за 10 печатных плат, первый заказ для новых клиентов БЕСПЛАТЕН

Сборка печатных плат от $88 + БЕСПЛАТНАЯ доставка по всему миру + трафарет

Онлайн просмотровщик Gerber-файлов от PCBWay
Не в сети
 Заголовок сообщения: Re: WatchDog Timer Сторожевой таймер в AVR
СообщениеДобавлено: Пт дек 15, 2017 18:39:49 
Модератор
Аватар пользователя

Карма: 148
Рейтинг сообщений: 2203
Зарегистрирован: Сб авг 14, 2010 15:05:51
Сообщений: 15057
Откуда: г. Озерск, Челябинская обл.
Рейтинг сообщения: 0
Медали: 1
Лучший человек Форума 2017 (1)
решил тут поэкспериментировать с собакой, до этого собакой не занимался.
МК ATmega8, проверяю в АВР Студио.
делаю инициализацию согласно даташита:

ldi R16, 0b00010000 ; WDCE
out WDTCR, R16
ldi R16, 0b00011111 ; watchdog enable, 2 сек
out WDTCR, R16

не работает!
и даже не сбрасывает бит WDCE через 4 цикла, как это должен был делать.

ранее товарищ присылал свой проект для ATtiny13 - собака работает прекрасно в АВР Студио.

что я еще не доделал или не правильно сделал?

_________________
Мудрость приходит вместе с импотенцией...


Вернуться наверх
 
Контроль в спящем режиме: повышение КПД батарейного питания с помощью DC/DC MAX17225 nanoPower

В статье описан практический опыт разработчика, применившего повышающий DC/DC-преобразователь MAX17225. В результате ряда практических экспериментов, потребовавших существенного обновления технической базы компании-разработчика, автор убедительно доказывает преимущества выбранного компонента и схемотехнической реализации. Увеличенное на 50% время автономной работы лучше других аргументов говорит об эффективности конвертеров MAX17225, а также о важности предварительной оценки элементной базы.

Читать статьи>>
Не в сети
 Заголовок сообщения: Re: WatchDog Timer Сторожевой таймер в AVR
СообщениеДобавлено: Пт дек 15, 2017 19:12:25 
Друг Кота
Аватар пользователя

Карма: 69
Рейтинг сообщений: 1187
Зарегистрирован: Вс мар 29, 2009 22:09:05
Сообщений: 7426
Рейтинг сообщения: 0
Я так понимаю из прочтения параграфа в даташите, что писать WDCE надо только когда вы хотите выключить таймер. Да и в AVR132 написано:

To disable the WDT System Reset Mode, the Watchdog Change Enable bit must be set within four CPU clock cycles prior to the disabling. If not, the WDT System Reset Mode will stay enabled. If the WDTON fuse is programmed the WDT System Reset Mode is always enabled.

To change the timeout period, the Watchdog Change Enable bit must be set within four CPU clock cycles prior to changing the timeout value. It is however not recommended to change the timeout period during normal operation. This should be done once in the initialization code.

If the WDTON fuse is unprogrammed on ATtiny13 and ATtiny2313, it is possible to change the WDT timeout period without following the timed sequence.

Changing the WDT Interrupt Mode setting or enabling the WDT System Reset Mode needs no special considerations.

_________________
Разница между теорией и практикой на практике гораздо больше, чем в теории.


Вернуться наверх
 
Руководство для разработчика приложений на базе STM32WB55

Представив двухъядерные беспроводные микроконтроллеры STM32WB для IoT-приложений, компания STMicroelectronics предлагает разработчикам экосистему, включающую в себя отладочные платы, примеры кода для микроконтроллера, готовое ПО всех уровней и большой массив документации.

Читать статью>>
Не в сети
 Заголовок сообщения: Re: WatchDog Timer Сторожевой таймер в AVR
СообщениеДобавлено: Пт дек 15, 2017 19:34:57 
Модератор
Аватар пользователя

Карма: 148
Рейтинг сообщений: 2203
Зарегистрирован: Сб авг 14, 2010 15:05:51
Сообщений: 15057
Откуда: г. Озерск, Челябинская обл.
Рейтинг сообщения: 0
Медали: 1
Лучший человек Форума 2017 (1)
в даташите сказано:

To disable an enabled Watchdog Timer and/or changing the Watchdog Time-out, the following procedure must be followed:
1. In the same operation, write a logic one to WDCE and WDE. A logic one must be written to WDE regardless of the previous value of the WDE bit.
2. Within the next four clock cycles, in the same operation, write the WDE and WDP bits as desired, but with the WDCE bit cleared.

в связи с этими указаниями я сделал:

ldi R16, 0b00011000
out WDTCR, R16
ldi R16, 0b00001111
out WDTCR, R16

первая запись - в соответствие пункту 1,
вторая запись - в соответствие пункту 2.
все равно не работает.

_________________
Мудрость приходит вместе с импотенцией...


Вернуться наверх
 


Не в сети
 Заголовок сообщения: Re: WatchDog Timer Сторожевой таймер в AVR
СообщениеДобавлено: Пт дек 15, 2017 19:36:55 
Друг Кота
Аватар пользователя

Карма: 69
Рейтинг сообщений: 1187
Зарегистрирован: Вс мар 29, 2009 22:09:05
Сообщений: 7426
Рейтинг сообщения: 0
Странно. Я исследую этот вопрос, как только доберусь до своего основного ПК...

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

_________________
Разница между теорией и практикой на практике гораздо больше, чем в теории.


Вернуться наверх
 


Не в сети
 Заголовок сообщения: Re: WatchDog Timer Сторожевой таймер в AVR
СообщениеДобавлено: Пт дек 15, 2017 22:19:44 
Модератор
Аватар пользователя

Карма: 148
Рейтинг сообщений: 2203
Зарегистрирован: Сб авг 14, 2010 15:05:51
Сообщений: 15057
Откуда: г. Озерск, Челябинская обл.
Рейтинг сообщения: 0
Медали: 1
Лучший человек Форума 2017 (1)
меняю в отладчике на ATtiny13 - собака работает прекрасно.
возвращаю ATmega8 - перестает работать.
биты у них совпадают.

Добавлено after 1 hour 48 minutes 32 seconds:
бля...
уже пошел на то, чтобы проверить собаку на реальном устройстве.
и этот код прекрасно РАБОТАЕТ!!!
проявились баги АВР Студио...

_________________
Мудрость приходит вместе с импотенцией...


Вернуться наверх
 
Распродажа паяльных станций ATTEN и аксессуаров!
Индукционная паяльная станция AT315D - 3 977 ₽, станция паяльная AT80D – 2177 ₽, станция паяльная AT936b – 1000 ₽!

Заходите в раздел акции и спецпредложения на сайте prist.ru, покупайте измерительные приборы, инструмент и паяльно-ремонтное оборудование по специальным ценам.
Не в сети
 Заголовок сообщения: Re: WatchDog Timer Сторожевой таймер в AVR
СообщениеДобавлено: Сб дек 16, 2017 09:25:21 
Друг Кота
Аватар пользователя

Карма: 69
Рейтинг сообщений: 1187
Зарегистрирован: Вс мар 29, 2009 22:09:05
Сообщений: 7426
Рейтинг сообщения: 0
А AVR Studio какой версии? Но вообще да, симуляторы - они такие... Можно почитать раздел device limitations в документации на симулятор, может быть там чего написано.

_________________
Разница между теорией и практикой на практике гораздо больше, чем в теории.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: WatchDog Timer Сторожевой таймер в AVR
СообщениеДобавлено: Сб дек 16, 2017 12:06:08 
Модератор
Аватар пользователя

Карма: 148
Рейтинг сообщений: 2203
Зарегистрирован: Сб авг 14, 2010 15:05:51
Сообщений: 15057
Откуда: г. Озерск, Челябинская обл.
Рейтинг сообщения: 0
Медали: 1
Лучший человек Форума 2017 (1)
версия 4.19, билд 730.

_________________
Мудрость приходит вместе с импотенцией...


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: WatchDog Timer Сторожевой таймер в AVR
СообщениеДобавлено: Сб дек 16, 2017 13:06:11 
Друг Кота
Аватар пользователя

Карма: 69
Рейтинг сообщений: 1187
Зарегистрирован: Вс мар 29, 2009 22:09:05
Сообщений: 7426
Рейтинг сообщения: 0
У меня стоит 4.14, но я зашел в Help -> AVR Tools User Guide, Simulator -> Known Issues -> ATmega8 и там написано следующее:

The USART's UBRRH and UCSRC registers share the same I/O address. Writing to one of the registers will cause both registers to contain the new value, regardless of the value of URSEL. Reading these registers do not work as described in the datasheet.

The ADC noise reduction function is not supported. Setting the ADIF flag will not wake the CPU from sleep mode.

The Watchdog is not simulated.


Так что да, это правда ограничение симулятора. Причем, как видно, есть еще пара особенностей. Кроме того, есть ограничения, общие для всех контроллеров (перечислены на первой странице раздела Known Issues) - например, не работает бит SPI2X, не симулируется выключение периферии при установке соответствующих битов в PRR (в контроллерах, в которых он есть) и т.д.

_________________
Разница между теорией и практикой на практике гораздо больше, чем в теории.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: WatchDog Timer Сторожевой таймер в AVR
СообщениеДобавлено: Сб дек 16, 2017 20:07:38 
Модератор
Аватар пользователя

Карма: 148
Рейтинг сообщений: 2203
Зарегистрирован: Сб авг 14, 2010 15:05:51
Сообщений: 15057
Откуда: г. Озерск, Челябинская обл.
Рейтинг сообщения: 0
Медали: 1
Лучший человек Форума 2017 (1)
спасибо за найденную информацию.
не беда. зато я теперь знаю, что сторожевой таймер при инициализации согласно даташита прекрасно работает в "железе".

_________________
Мудрость приходит вместе с импотенцией...


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: WatchDog Timer Сторожевой таймер в AVR
СообщениеДобавлено: Пт апр 13, 2018 14:13:15 
Родился

Зарегистрирован: Пн июн 13, 2016 00:15:06
Сообщений: 15
Рейтинг сообщения: 0
----Пытаюсь разобраться с вачдогом, работая в Atmel studio 6. Включаю так : wdt_enable(WDTO_4S). Если хоть раз выдать wdt_reset(), то далее вачдог отключается и больше не сбрасывает. Так и должно быть ? Он же должен только таймер сбрасывать, а не отключать его ?
----Такой же эффект наблюдается, если в коде выдать еще раз wdt_enable(WDTO_4S), то вачдог сного отключается и не ребутит МК.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: WatchDog Timer Сторожевой таймер в AVR
СообщениеДобавлено: Сб апр 14, 2018 17:39:40 
Родился

Зарегистрирован: Пн июн 13, 2016 00:15:06
Сообщений: 15
Рейтинг сообщения: 0
Разобрался. Проблема была в Proteus-e. В реальном железе все работает норм, а в протеусе нет.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: WatchDog Timer Сторожевой таймер в AVR
СообщениеДобавлено: Ср авг 29, 2018 04:30:56 
Опытный кот

Зарегистрирован: Сб ноя 08, 2008 18:32:36
Сообщений: 732
Рейтинг сообщения: 0
Здравствуйте! столкнулся вот с такой проблемой : Контроллер Mega168P настраиваю ватчдог на 2 секунды времени,
но почему то прерывание происходит значительно чаще (несколько раз в секунду) Какое бы значение предделителя я не выставил,все отдно и тоже. Светодиод мигает с одинаковой скоростью при любых значениях предделителя,кроме самых быстрых.
Если в теле функции задержки писать asm("wdr"); , то таймер сбрасывается раньше,и прерывание вообще не происходит,как и должно быть.
но мне нужно получить временные интервала в 2 сек.
Я уже перепробывал все варианты,ничего не помогает. Может все дело в китайском контроллере?

Код:
#include <avr/io.h>
#include <avr/interrupt.h>

ISR (WDT_vect)  //Вектор WDT
  {
  PORTD ^= 16;
  WDTCSR |= (1<<WDIE);//разрешить прерывание WDT
  }
 
 
  void delay (void) //цикл задержки
{
for(uint8_t x=0; x<=10; x++ )
   {
      for(uint16_t y=0; y<=60000; y++) {  /*asm("wdr"); */  };
   }         
}

int main(void)
{
  DDRD = 0xff;
  DDRC = 0xff;
  PORTD = 0;
  PORTC = 0;

  asm("wdr");
  WDTCSR |= (1<<WDCE) | (0<<WDE) | (1<<WDIE);//Режим генерации прерываний
  WDTCSR |= (1<<WDCE) | (1<<WDP0)| (1<<WDP1) | (1<<WDP2) |(0<<WDP3);
  sei();
 
  while(1)
  {
    PORTC ^=4;
    delay();
  }
}


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: WatchDog Timer Сторожевой таймер в AVR
СообщениеДобавлено: Ср авг 29, 2018 05:09:28 
Друг Кота

Карма: 54
Рейтинг сообщений: 724
Зарегистрирован: Пт мар 07, 2008 06:54:43
Сообщений: 3692
Откуда: Ижевск
Рейтинг сообщения: 0
Взять пример из DS не пробовали?
Код:
void WDT_Prescaler_Change(void)
{
    __disable_interrupt();
    __watchdog_reset();
    /* Start timed sequence */
    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();
}


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: WatchDog Timer Сторожевой таймер в AVR
СообщениеДобавлено: Ср авг 29, 2018 05:28:40 
Опытный кот

Зарегистрирован: Сб ноя 08, 2008 18:32:36
Сообщений: 732
Рейтинг сообщения: 0
только что пробывал написать так

Код:
  //******настройка предделителя по примеру из даташита*******
  asm("cli");//глобально отключить прерывания
  asm("wdr");
  WDTCSR |= (1<<WDCE)|(1<<WDE);//разрешть RESET
  WDTCSR |= (1<<WDE) | (1<<WDP0)| (1<<WDP1) | (1<<WDP2) |(0<<WDP3);//установить предделитель
  WDTCSR |= (1<<WDCE)|(1<<WDIE); //разрешить прерывания от WDT
  sei();//разрешить прерывания
 

только ничего не изменилось. Светодиод как мигал 10 раз в секунду,так и мигает

Добавлено after 3 minutes 59 seconds:
Залейте кто нибудь пожалуйста этот код в свою отладочную плату, я почти уверен что во всем виноват контроллер


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: WatchDog Timer Сторожевой таймер в AVR
СообщениеДобавлено: Ср авг 29, 2018 07:40:18 
Друг Кота

Карма: 54
Рейтинг сообщений: 724
Зарегистрирован: Пт мар 07, 2008 06:54:43
Сообщений: 3692
Откуда: Ижевск
Рейтинг сообщения: 0
Не понимаю в ваших кыржиках, поэтому рабочий код, генерирующий прерывание WDT 2 секунды. Каждое прерывание переключает лапы PD2 и PD5

Вложение:
TEST_M168.hex [227 байт]
Скачиваний: 420


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: WatchDog Timer Сторожевой таймер в AVR
СообщениеДобавлено: Пт авг 31, 2018 14:28:38 
Опытный кот

Зарегистрирован: Сб ноя 08, 2008 18:32:36
Сообщений: 732
Рейтинг сообщения: 0
Огромное вам спасибо! ваш код на ассемблере работает так : 2 сек на линии 1, 2 сек 0.
Получается контроллер исправен. Я перенес то что было написано на ассемблере в си, но все равно светодиод на PB0 мигает раз 5 в секунду,ничего не изменилось. Что может быть не так? Открыл окно отладчика, IO/view,выбрал WDT и вижу, что все биты кроме WDPn устанавливаются, а нужные биты WDPn отладчик предлагает выбрать из выпадающего списка. Это нормально?

Код:
#include <avr/io.h>
#include <avr/interrupt.h>

ISR (WDT_vect)  //Вектор WDT
  {
  PORTB ^=1;//переключить PB0
  }
 
 
int main(void)
{
DDRB = 0b11111111;   
PORTB = 0;

  cli();//глобально отключить прерывания
  asm("wdr");
  WDTCSR |= (1<<WDCE)|(1<<WDE);//разрешть RESET
  WDTCSR |= (1<<WDE) | (1<<WDP2) | (1<<WDP1)| (1<<WDP0);//установить предделитель
  MCUSR &= ~(1<<WDRF); /* Clear WDRF in MCUSR */
  WDTCSR |= (1<<WDCE) | (1<<WDE)| (1<<WDIE);//разрешить прерывания от WDT
  sei();//разрешить прерывания
 
  while(1)
  {
 
  }
}




Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: WatchDog Timer Сторожевой таймер в AVR
СообщениеДобавлено: Сб сен 01, 2018 07:42:30 
Это не хвост, это антенна
Аватар пользователя

Карма: 17
Рейтинг сообщений: 19
Зарегистрирован: Чт апр 04, 2013 22:22:57
Сообщений: 1413
Откуда: Белгород, РФ
Рейтинг сообщения: 0
Попробовал вот так инициализировать

Код:
WDTCSR = (1<<WDCE)|(1 << WDE);
WDTCSR = (1<<WDCE)|(1 << WDIE)|(0 << WDE)|(1 << WDP2)|(1 << WDP1)|(1 << WDP0);


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


Вернуться наверх
 
Показать сообщения за:  Сортировать по:  Вернуться наверх
Начать новую тему Ответить на тему  [ Сообщений: 207 ]     ... , , , 9, ,  

Часовой пояс: UTC + 3 часа


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

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 6


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

Найти:
Перейти:  


Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
Русская поддержка phpBB
Extended by Karma MOD © 2007—2012 m157y
Extended by Topic Tags MOD © 2012 m157y