Страница 1 из 3 123 ПоследняяПоследняя
Показано с 1 по 10 из 25
  1. #1
    Продвинутый
    Регистрация
    19.02.2010
    Возраст
    46
    Сообщений
    244
    Вес репутации
    223

    По умолчанию Watchdog. Не дадим контроллеру зависнуть.

    Приветствую, уважаемые!

    Научите пользоваться этим механизмом. Крайне простая задача: при зависании МК - перезагрузить оный.
    Рытие просторов глобальной сети привело к каше в голове.
    Регистр WDTCR вроде понятен, но общая схема применения не очень.
    Если можно в двух вариантах: при вшитом WDTON и не вшитом.

    Заранее спасибо!

  2. #2
    Администратор Аватар для Chip
    Регистрация
    08.06.2007
    Возраст
    54
    Сообщений
    13,379
    Вес репутации
    10

    По умолчанию Re: Watchdog. Не дадим контроллеру зависнуть.

    WDT это не зависимый от основного генератора таймер.
    У него есть делитель частоты, с этой выбранной частотой происходит сброс контроллера. И ключевой момент, Основная программа контроллера должна всегда успевать сбрасывать WDT что бы он не успел ресетнуть контроллер.Для чего это нужно? Для того если вдруг контроллер повиснет , то WDT его реанимирует
    Вот вроде и все
    Последний раз редактировалось Chip; 24.11.2011 в 00:01.

  3. #3
    Продвинутый
    Регистрация
    19.02.2010
    Возраст
    46
    Сообщений
    244
    Вес репутации
    223

    По умолчанию Re: Watchdog. Не дадим контроллеру зависнуть.

    Меня программная реализация интересует.
    Так правильно?

    PHP код:
    void setup() {
    cli();// wdr
    WDTCR=(1<<WDCE) | (1<<WDE);
    WDTCR=(1<<WDE) | (1<<WDP2) | (1<<WDP1) | (1<<WDP0);
    sei();
    ...
    }

    void loop()
    {
       
    __asm__ __volatile__ ("wdr");
     ...
    }
    sei(); 

  4. #4
    Администратор Аватар для Chip
    Регистрация
    08.06.2007
    Возраст
    54
    Сообщений
    13,379
    Вес репутации
    10

    По умолчанию Re: Watchdog. Не дадим контроллеру зависнуть.

    Честно говоря на AVR никогда не пробывал WDT, сейчас посмотрю
    Последний раз редактировалось Chip; 24.11.2011 в 00:50.

  5. #5
    Продвинутый
    Регистрация
    19.02.2010
    Возраст
    46
    Сообщений
    244
    Вес репутации
    223

    По умолчанию Re: Watchdog. Не дадим контроллеру зависнуть.

    Внедрил этот код в мегу8. Сижу туплю, как ее заставить зависнуть, но так, чтобы это было понятно.

  6. #6
    Администратор Аватар для Chip
    Регистрация
    08.06.2007
    Возраст
    54
    Сообщений
    13,379
    Вес репутации
    10

    По умолчанию Re: Watchdog. Не дадим контроллеру зависнуть.

    Сделай бесконечный цикл, в цикле включи светодиод D13
    Последний раз редактировалось Chip; 24.11.2011 в 01:15.

  7. #7
    Модератор
    Регистрация
    06.07.2008
    Возраст
    46
    Сообщений
    414
    Вес репутации
    436

    По умолчанию Re: Watchdog. Не дадим контроллеру зависнуть.

    да очень просто - при резете шлешь в uart символ, дальше можешь зажечь светодиод и загнать МК в бесконечный цикл. И слушаешь терминалку. Можно при старте мигнуть светодиодом и дальше бесконечный цикл...

  8. #8
    Администратор Аватар для Chip
    Регистрация
    08.06.2007
    Возраст
    54
    Сообщений
    13,379
    Вес репутации
    10

    По умолчанию Re: Watchdog. Не дадим контроллеру зависнуть.

    Вот пример скетча
    ардуино через 8сек. должен сбросится , или попасть в ступор
    Скорее всего второе так как основная масса Arduino прошиты старой версией bootloader
    PHP код:
    #include <avr/wdt.h>  
    int n 0

    void setup()  

      
    Serial.begin(115200); 
      
    wdt_enable (WDTO_8S); 


    void loop()  

      
    Serial.println(nDEC);  
      ++
    n
      
    delay(1000);
        
    //wdt_reset();  

    Последний раз редактировалось Chip; 24.11.2011 в 03:33.

  9. #9
    Продвинутый
    Регистрация
    19.02.2010
    Возраст
    46
    Сообщений
    244
    Вес репутации
    223

    По умолчанию Re: Watchdog. Не дадим контроллеру зависнуть.

    Попробую сегодня.

  10. #10
    Продвинутый
    Регистрация
    19.02.2010
    Возраст
    46
    Сообщений
    244
    Вес репутации
    223

    По умолчанию Re: Watchdog. Не дадим контроллеру зависнуть.

    Попробовал. Работает. Спасибо!
    Кстати, тот код, что запостил я, тоже работает
    Последний раз редактировалось BlkDem; 24.11.2011 в 20:41.

Страница 1 из 3 123 ПоследняяПоследняя

Информация о теме

Пользователи, просматривающие эту тему

Эту тему просматривают: 1 (пользователей: 0 , гостей: 1)

Ваши права

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