реклама на сайте
подробности

 
 
2 страниц V   1 2 >  
Reply to this topicStart new topic
> watchdog, atmega88pa
max_mart
сообщение Jul 24 2012, 18:16
Сообщение #1


Местный
***

Группа: Участник
Сообщений: 248
Регистрация: 30-09-11
Пользователь №: 67 474



Всем привет.

Собрал устройство на atmega88pa. Оно находится все время в режиме power-down, просыпается по изменению состояния одной из ножек и по прерыванию от watchdog(WDIE). Работает от 2 батареек типа ААА(напряжение 3В). Но наши современные батарейки полный отстой и хороших найти трудно(с падением тока падает и напряжение). Сначала все работало отлично: при нажатии кнопки, контроллер делал что надо и по прерыванию watchdog(каждые 8S) тоже выполнял свои функции(напряжение было 3В). Но как только напряжение упало до 2.72В watchdog сначало работал, но плохо(мог проснуться и через 8 секунд, а мог и через 1 минуту или вообще заглохнуть), потом напряжение снизилось до 2.7В и все помер!!! Хотя прерывание по кнопкам, как и работало, так и работает без каких либо проблем.
Подскажите, пожалуйста, какая может быть беда с watchdog и как ее преодолеть?
Go to the top of the page
 
+Quote Post
_Артём_
сообщение Jul 24 2012, 18:34
Сообщение #2


Гуру
******

Группа: Свой
Сообщений: 2 128
Регистрация: 21-05-06
Пользователь №: 17 322



Цитата(max_mart @ Jul 24 2012, 21:16) *
потом напряжение снизилось до 2.7В и все помер

Напряжение больно характерное - не настроет ли у вас BOD на 2,7 В?
Цитата(max_mart @ Jul 24 2012, 21:16) *
Хотя прерывание по кнопкам, как и работало, так и работает без каких либо проблем.

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

Go to the top of the page
 
+Quote Post
SmarTrunk
сообщение Jul 24 2012, 18:49
Сообщение #3


Местный
***

Группа: Участник
Сообщений: 406
Регистрация: 22-05-11
Из: Москва
Пользователь №: 65 195



watchdog работает от своего собственного внутреннего генератора, частота которого приведена в разделе "типичные характеристики" для напряжения питания в диапазоне 2,7...5,5В. Может, перестает работать этот генератор?
Go to the top of the page
 
+Quote Post
max_mart
сообщение Jul 24 2012, 19:01
Сообщение #4


Местный
***

Группа: Участник
Сообщений: 248
Регистрация: 30-09-11
Пользователь №: 67 474



BOD - отключен.
Тактирование RC.
Без нажатии кнопки watchdog должен работать(пытался проверить на светодиоде - не работало)
Go to the top of the page
 
+Quote Post
_Артём_
сообщение Jul 24 2012, 19:28
Сообщение #5


Гуру
******

Группа: Свой
Сообщений: 2 128
Регистрация: 21-05-06
Пользователь №: 17 322



А на какой частоте мега работает?
Не нарушаются ли ограничения:
Цитата
• Speed Grade:
– 0 - 4 MHz@1.8 - 5.5V, 0 - 10 MHz@2.7 - 5.5.V, 0 - 20 MHz @ 4.5 - 5.5V


Попробуйте частоту поделить до 1 МГц.
Go to the top of the page
 
+Quote Post
max_mart
сообщение Jul 24 2012, 19:39
Сообщение #6


Местный
***

Группа: Участник
Сообщений: 248
Регистрация: 30-09-11
Пользователь №: 67 474



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

Speed Grade:
– 0 - 4 MHz@1.8 - 5.5V, 0 - 10 MHz@2.7 - 5.5.V, 0 - 20 MHz @ 4.5 - 5.5V

А откуда Вы это взяли? В даташите на atmega88pa ничего подобного нету!
Go to the top of the page
 
+Quote Post
_Артём_
сообщение Jul 24 2012, 19:44
Сообщение #7


Гуру
******

Группа: Свой
Сообщений: 2 128
Регистрация: 21-05-06
Пользователь №: 17 322



Цитата(max_mart @ Jul 24 2012, 22:39) *
Speed Grade:
– 0 - 4 MHz@1.8 - 5.5V, 0 - 10 MHz@2.7 - 5.5.V, 0 - 20 MHz @ 4.5 - 5.5V

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

На первой странице - Features - Speed Grade ( в моей версии DS предпоследний пункт)
Go to the top of the page
 
+Quote Post
max_mart
сообщение Jul 24 2012, 19:51
Сообщение #8


Местный
***

Группа: Участник
Сообщений: 248
Регистрация: 30-09-11
Пользователь №: 67 474



Спасибо огромное.
Но что-то как-то странно в typical characteristics ничего подобного нет. Указан минимум 1.8 и максимум 5.5 вольт и перечислены все возможные моменты при работе меги в этом диапазоне
Go to the top of the page
 
+Quote Post
_Артём_
сообщение Jul 24 2012, 20:04
Сообщение #9


Гуру
******

Группа: Свой
Сообщений: 2 128
Регистрация: 21-05-06
Пользователь №: 17 322



Цитата(max_mart @ Jul 24 2012, 22:51) *
Указан минимум 1.8 и максимум 5.5 вольт и перечислены все возможные моменты при работе меги в этом диапазоне

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

А, нашёл:
28.3 Speed Grades
Figure 28-1. Maximum Frequency vs. VCC
Go to the top of the page
 
+Quote Post
max_mart
сообщение Jul 24 2012, 20:09
Сообщение #10


Местный
***

Группа: Участник
Сообщений: 248
Регистрация: 30-09-11
Пользователь №: 67 474



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

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

Сообщение отредактировал max_mart - Jul 24 2012, 20:13
Go to the top of the page
 
+Quote Post
max_mart
сообщение Jul 26 2012, 09:48
Сообщение #11


Местный
***

Группа: Участник
Сообщений: 248
Регистрация: 30-09-11
Пользователь №: 67 474



Попробовал проще: запитал от блока питания на 3.3В. Проблема осталась, менял контроллер - тоже самое. Ума приложить не могу!!! 2 недели на этой программе все работало прекрасно, а щас чудеса товрятся какие-то!!!
Подскажите, пожалуйста, куда рыть? Где может быть проблема?
Go to the top of the page
 
+Quote Post
Палыч
сообщение Jul 26 2012, 10:22
Сообщение #12


Гуру
******

Группа: Свой
Сообщений: 2 399
Регистрация: 10-05-06
Из: г. Новочеркасск
Пользователь №: 16 954



Цитата(max_mart @ Jul 26 2012, 13:48) *
Подскажите, пожалуйста, куда рыть? Где может быть проблема?

Fuse SUT1:0 не равно ли 11 ?
Go to the top of the page
 
+Quote Post
max_mart
сообщение Jul 26 2012, 10:42
Сообщение #13


Местный
***

Группа: Участник
Сообщений: 248
Регистрация: 30-09-11
Пользователь №: 67 474



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

странно...без флага работает!!!Если просто включать и выключать светодиод через определенное время!!!???
Go to the top of the page
 
+Quote Post
SON.OF.STONE
сообщение Jul 26 2012, 11:33
Сообщение #14


Участник
*

Группа: Участник
Сообщений: 22
Регистрация: 26-07-12
Пользователь №: 72 913



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В

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


скинь код! Тут скорее всего чисто программная ошибка...
Go to the top of the page
 
+Quote Post
_Артём_
сообщение Jul 26 2012, 15:48
Сообщение #15


Гуру
******

Группа: Свой
Сообщений: 2 128
Регистрация: 21-05-06
Пользователь №: 17 322



Цитата(max_mart @ Jul 26 2012, 13:42) *
странно...без флага работает!!!Если просто включать и выключать светодиод через определенное время!!!???

А watchdog работает в режиме прерываний?
Чему равен WDTON?
Какие fuse?
Go to the top of the page
 
+Quote Post

2 страниц V   1 2 >
Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 19th July 2025 - 07:35
Рейтинг@Mail.ru


Страница сгенерированна за 0.01498 секунд с 7
ELECTRONIX ©2004-2016