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

Всем привет.

 

Собрал устройство на atmega88pa. Оно находится все время в режиме power-down, просыпается по изменению состояния одной из ножек и по прерыванию от watchdog(WDIE). Работает от 2 батареек типа ААА(напряжение 3В). Но наши современные батарейки полный отстой и хороших найти трудно(с падением тока падает и напряжение). Сначала все работало отлично: при нажатии кнопки, контроллер делал что надо и по прерыванию watchdog(каждые 8S) тоже выполнял свои функции(напряжение было 3В). Но как только напряжение упало до 2.72В watchdog сначало работал, но плохо(мог проснуться и через 8 секунд, а мог и через 1 минуту или вообще заглохнуть), потом напряжение снизилось до 2.7В и все помер!!! Хотя прерывание по кнопкам, как и работало, так и работает без каких либо проблем.

Подскажите, пожалуйста, какая может быть беда с watchdog и как ее преодолеть?

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


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

потом напряжение снизилось до 2.7В и все помер

Напряжение больно характерное - не настроет ли у вас BOD на 2,7 В?

Хотя прерывание по кнопкам, как и работало, так и работает без каких либо проблем.

Может при нажатии кнопки напряжение возрастает до величины большей 2,7 В и всё работает какое-то время?

 

 

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


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

watchdog работает от своего собственного внутреннего генератора, частота которого приведена в разделе "типичные характеристики" для напряжения питания в диапазоне 2,7...5,5В. Может, перестает работать этот генератор?

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


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

BOD - отключен.

Тактирование RC.

Без нажатии кнопки watchdog должен работать(пытался проверить на светодиоде - не работало)

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


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

А на какой частоте мега работает?

Не нарушаются ли ограничения:

• Speed Grade:

– 0 - 4 [email protected] - 5.5V, 0 - 10 [email protected] - 5.5.V, 0 - 20 MHz @ 4.5 - 5.5V

 

Попробуйте частоту поделить до 1 МГц.

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


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

8 МГц - внутренний RC

 

Speed Grade:

– 0 - 4 [email protected] - 5.5V, 0 - 10 [email protected] - 5.5.V, 0 - 20 MHz @ 4.5 - 5.5V

 

А откуда Вы это взяли? В даташите на atmega88pa ничего подобного нету!

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


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

Speed Grade:

– 0 - 4 [email protected] - 5.5V, 0 - 10 [email protected] - 5.5.V, 0 - 20 MHz @ 4.5 - 5.5V

 

А откуда Вы это взяли? В даташите на atmega88pa ничего подобного нету!

На первой странице - Features - Speed Grade ( в моей версии DS предпоследний пункт)

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


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

Спасибо огромное.

Но что-то как-то странно в typical characteristics ничего подобного нет. Указан минимум 1.8 и максимум 5.5 вольт и перечислены все возможные моменты при работе меги в этом диапазоне

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


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

Указан минимум 1.8 и максимум 5.5 вольт и перечислены все возможные моменты при работе меги в этом диапазоне

Должен быть в даташите график какой-то напряжение - максимальная тактовая ядра.

Но как он назывался - не помню.

По нему давно считали для мега128 на 3,7 В, получилось, что на 12,8МГц - работает, на 14,37 - уже не гарантируется. На m88 тоже должен быть такой.

 

А, нашёл:

28.3 Speed Grades

Figure 28-1. Maximum Frequency vs. VCC

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


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

Спасибо огромное!!! Завтра попробую. И завтра отпишусь по результатам.

 

По графику по идее должен работать до 2.5В, но посмотрим.

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

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


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

Попробовал проще: запитал от блока питания на 3.3В. Проблема осталась, менял контроллер - тоже самое. Ума приложить не могу!!! 2 недели на этой программе все работало прекрасно, а щас чудеса товрятся какие-то!!!

Подскажите, пожалуйста, куда рыть? Где может быть проблема?

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


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

Подскажите, пожалуйста, куда рыть? Где может быть проблема?

Fuse SUT1:0 не равно ли 11 ?

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


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

Очень интересный факт наблюдается. По топотреблению видел, что watchdog работает(просыпался каждые 8 секунд), но только почему-то не управляет светодиодом, должен по флагу включать и выключать его(если флаг=0, то включить; если 1, товыключить). Напряжение от блока питания 3.3В

 

странно...без флага работает!!!Если просто включать и выключать светодиод через определенное время!!!???

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


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

1. Попробовать написать пробную программу в которой watchdog работает в режиме сброса и посмотреть, есть ли сброс от него. Скорее всего сброса не будет - у этой серии (atmega*8pa) уже попадались такие "фрукты" причем иногда была неисправность в прескалере(!) сторожевого таймера - сброс не проходил при определенных его значениях. Если сброс проходит - попробовать запустить прерывание от сторожевого таймера и проверить его прохождение. Все манипуляции рекомендуется проделывать при разных питающих напряжениях - от 2.5В до 5В - так можно понять где глюк - в железе (т. е. в чипе) или в софте.

2. Если у вас микроконтроллер работает от внутреннего генератора то наверняка ноги для подключения кварцевого резонатора свободны. Подключите туда часовой кварц (без конденсаторов!) и настройте Timer2 для работы в асинхронном режиме от внешнего кварца. При максимальном значении предделителя (Tosc/1024) прерывание по переполнению таймера будет происходить как раз каждые 8 секунд (только спящий режим надо брать не PowerDown а PowerSave - самый прикол что это получается даже экономичнее чем со сторожевым таймером раза в 4).

3. Еще один способ заставить микроконтроллер просыпаться из PowerDown- это использование внешней RC цепочки (паралельно соединенный танталовый или керамический конденсатор и резистор на пару мегоом). Я так делал на старых AVR (типа ATmega8) у которых небыло асинхронных PCINT'ов и небыло возможности поставить часовой кварц, т. к. использовалось тактирование от кварцевого резонатора. Для этого необходимо подключить RC цепочку к любому свободному входу запроса прерывания INT (для новых микросхем AVR сгодится вообще любой свободный пин любого порта, т. к. у них по всем портам PCINT'ы). Вход запроса прерывания конфигурировать на срабатывание от низкого уровня сигнала (для INT) и настраивать как выход с логической 1. Непосредственно перед уходом в PowerDown перевести этот пин в режим входа с высоким импедансом (DDR*.*=0; PORT*.*=0; -> в такой последовательности чтобы не подсадить конденсатор переключением порта на вывод низкого уровня). Как только конденсатор разрядится до порогового уровня логического нуля - будет сгенерировано прерывание.

 

 

Очень интересный факт наблюдается. По топотреблению видел, что watchdog работает(просыпался каждые 8 секунд), но только почему-то не управляет светодиодом, должен по флагу включать и выключать его(если флаг=0, то включить; если 1, товыключить). Напряжение от блока питания 3.3В

 

странно...без флага работает!!!Если просто включать и выключать светодиод через определенное время!!!???

 

скинь код! Тут скорее всего чисто программная ошибка...

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


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

странно...без флага работает!!!Если просто включать и выключать светодиод через определенное время!!!???

А watchdog работает в режиме прерываний?

Чему равен WDTON?

Какие fuse?

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


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

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

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

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

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

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

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

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

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

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