Перейти к содержанию
    

WatchDog

СОбственно сабж!

Как это реализовать на atmega168A.

 

Вот такой код

 

#pragma optsize-

#asm("wdr")

WDTCSR=0x1A;

WDTCSR=0x42;

#ifdef _OPTIMIZE_SIZE_

#pragma optsize+

#endif

 

// Global enable interrupts

#asm("sei")

sleep_enable();

UDR0='!';

while (!( UCSR0A & (1<<UDRE)) )

while (1)

{

UDR0=cnt;

while ( !( UCSR0A & (1<<UDRE)) );

cnt++;

powerdown();

};

 

Упорно сбрасывается! А надо только чтобы выводил контроллер из слипа.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Стесняюсь спросить: обработчик прерывания от WDT в программе имеется ?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Я на меге 8 делал, там WDT только сбрасывать умеет, так пришлось стартовый код "пообкусювать", чтобы он переменные не затирал.

В 168 не знаю.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Стесняюсь спросить: обработчик прерывания от WDT в программе имеется ?

Ээ..Естесственно!

 

---

Туплю! Действительно! Грохнул часть кода с прерыванием при бездумном копировании! ДА вы провидец! :) Спасибо!

Изменено пользователем MKdemiurg

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...