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

 
 
 
Reply to this topicStart new topic
> AVR + TWI + POWER_DOWN, не работает
ARV
сообщение Nov 27 2011, 18:08
Сообщение #1


Профессионал
*****

Группа: Свой
Сообщений: 1 143
Регистрация: 30-09-08
Из: Новочеркасск
Пользователь №: 40 581



обращаюсь к уважаемому сообществу со своей проблемой, голову уже сломал.

делаю девайс на atmega8, который в одном из режимов уходит в POWER_DOWN с пробуждением по INT1. обработчик прерывания - пустышка, только чтоб проснуться. как только девайс просыпается, он берет из RTC DS1337 дату и время и сохраняет это в EEPROM, после чего снова уходит в отключку.

для работы с и2ц использую библиотеку TWI от Peter Fleury <pfleury @ gmx.ch> http://jump.to/fleury .в общем, в нормальных режимах она не подводит, правда програмный и2ц почему-то не работает, но это к проблеме отношения не имеет. так вот, проблема в том, что после пробуждения МК начинает считывать время из часов и где-то там зависает, т.е. снова в спячку уже не уходит. я это точно вычислил, т.к. при заремаривании обращения к часам все отлично. причем в нормальном режиме (без спячки) работа с RTC осуществляется без проблем, проблема исключительно в момент обращения после пробуждения. отладку веду исключиельно по току потребления МК, т.к. выводить какую-то диагностику некуда и нечем - память на пределе и ноги заняты sad.gif

грешу на какой-то неизвестный мне нюанс работы с TWI... может, надо как-то по-особенному пробуждаться, что-нибудь там инициализировать в этом TWI? подскажите, куда рыть - третьи сутки практически не сплю... в крайнем случае дайте, пожалуйста, рабочую либу, что ли... хоть бы и программную реализацию, совместимую по функциям с упомянутой либой, чтобы меньше править код... у самого уже крыша набекрень sad.gif

надеюсь на вашу помощь


--------------------
Я бы взял частями... но мне надо сразу.
Go to the top of the page
 
+Quote Post
Sergey_Aleksandr...
сообщение Nov 28 2011, 07:15
Сообщение #2


Частый гость
**

Группа: Свой
Сообщений: 168
Регистрация: 8-10-08
Из: РФ Смоленск
Пользователь №: 40 764



Резисторы подтягивающие SDA и SCL у вас внешние или внутренние? Выводы МК в момент входа/выхода в режим сна как-нибудь реконфигурируете?
Неплохо осциллографом посмотреть на линиях SCL и SDA, как идёт обмен и на каком этапе обмена происходит сбой.
Go to the top of the page
 
+Quote Post
ARV
сообщение Nov 28 2011, 07:54
Сообщение #3


Профессионал
*****

Группа: Свой
Сообщений: 1 143
Регистрация: 30-09-08
Из: Новочеркасск
Пользователь №: 40 581



резисторы внешние. при входе в сон состояние портов не изменяю, соответственно, каким оно было после последнего обмена по и2ц, тем и остается. осциллографом буду пользоваться лишь сегодня к вечеру, раньше не было возможности. но пока не представляю, чем это мне поможет sad.gif главное-то: без сна все работает! в чем разница между обычным состоянием и состоянием после пробуждения?!


--------------------
Я бы взял частями... но мне надо сразу.
Go to the top of the page
 
+Quote Post
Trashy
сообщение Nov 28 2011, 09:38
Сообщение #4


Частый гость
**

Группа: Свой
Сообщений: 121
Регистрация: 19-01-05
Пользователь №: 2 049



Из слипа выходил так:

Код
           Delay(100);
            ClrBit(GICR,INT0);
            ClrBit(MCUCR,SE);
            SetBit(UCSRB,TXEN);
            SetBit(SPCR,SPE);
            DDRA = 0xFE;
            PORTA = 0xF8;

Почему? Не помню. Пять лет назад было.
Go to the top of the page
 
+Quote Post
ARV
сообщение Nov 28 2011, 09:49
Сообщение #5


Профессионал
*****

Группа: Свой
Сообщений: 1 143
Регистрация: 30-09-08
Из: Новочеркасск
Пользователь №: 40 581



спасибо, вечером попробую. задержка 100 - это в каких единицах? если в миллисекундах - это для меня может быть полный крах, т.к. питание от литиевой батарейки, а потребление в активном режиме около 17 мА... боюсь, быстро разрядится...


--------------------
Я бы взял частями... но мне надо сразу.
Go to the top of the page
 
+Quote Post
PlainUser
сообщение Nov 28 2011, 11:05
Сообщение #6


Частый гость
**

Группа: Участник
Сообщений: 84
Регистрация: 23-06-05
Пользователь №: 6 244



Цитата(ARV @ Nov 27 2011, 21:08) *
обращаюсь к уважаемому сообществу со своей проблемой, голову уже сломал.
...
надеюсь на вашу помощь

DS проснуться не успевает как следует? Более режимы ничем не отличаются.

Сообщение отредактировал IgorKossak - Nov 29 2011, 07:53
Причина редактирования: Бездумное цитирование
Go to the top of the page
 
+Quote Post
ARV
сообщение Nov 28 2011, 11:20
Сообщение #7


Профессионал
*****

Группа: Свой
Сообщений: 1 143
Регистрация: 30-09-08
Из: Новочеркасск
Пользователь №: 40 581



DS и не спит - он и без сна ноноамперы потребляет... что-то с AVR TWI не то...


--------------------
Я бы взял частями... но мне надо сразу.
Go to the top of the page
 
+Quote Post
Палыч
сообщение Nov 28 2011, 11:23
Сообщение #8


Гуру
******

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



Для пробуждения МК уровень на INT1 откуда приходит? Как долго держится? Запрещаются ли прерывания по INT1 после пробуждения МК?
Go to the top of the page
 
+Quote Post
ARV
сообщение Nov 28 2011, 11:35
Сообщение #9


Профессионал
*****

Группа: Свой
Сообщений: 1 143
Регистрация: 30-09-08
Из: Новочеркасск
Пользователь №: 40 581



прерывания на INT1 в настоящее время поступают от проводка с общего провода, которым я касаюсь ножки sm.gif сигнал держится недолго - всего один "тыц" sm.gif прерывания от INT1 не запрещаются никогда, обработчик прерывания состоит из RETI.

P.S. да, пробовал из сна выходить не по INT1, а по WDT - выходит и все нормально работает, что заставляет меня думать о том, что периферия TWI все-таки как-то портится либо во сне, либо по выходу из сна и аппаратный сброс ее лечит. МК у меня старый, ему, наверное, года 3 - может, какая-то старая ревизия кристалла с errata ? в даташите последнем errata начинается с ревизии D - может у меня А или В? есть у кого-нибудь древняя errata для справки?


--------------------
Я бы взял частями... но мне надо сразу.
Go to the top of the page
 
+Quote Post
Палыч
сообщение Nov 28 2011, 12:29
Сообщение #10


Гуру
******

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



Цитата(ARV @ Nov 28 2011, 15:35) *
в даташите последнем errata начинается с ревизии D - может у меня А или В? есть у кого-нибудь древняя errata для справки?
В DS на m8 Rev.2486M-AVR-12/03 Erratas тоже с D начинаются. Неужели у Вас более "древний" МК?

PS. На местном FTP лежит DS Rev.H - если уж очень хочется проверить.
Go to the top of the page
 
+Quote Post
ARV
сообщение Nov 28 2011, 16:07
Сообщение #11


Профессионал
*****

Группа: Свой
Сообщений: 1 143
Регистрация: 30-09-08
Из: Новочеркасск
Пользователь №: 40 581



ну, если 0536 в маркировке обозначает 2005 год 36 неделя - то у меня еще не очень древний... тогда, блин, какого ему надо?!


--------------------
Я бы взял частями... но мне надо сразу.
Go to the top of the page
 
+Quote Post
ARV
сообщение Nov 28 2011, 19:38
Сообщение #12


Профессионал
*****

Группа: Свой
Сообщений: 1 143
Регистрация: 30-09-08
Из: Новочеркасск
Пользователь №: 40 581



ПРОБЛЕМА РЕШЕНА, тему можно закрывать.
то ли из-за кривизны упомянутой мною библиотеки, то ли из-за неописанного бага самого TWI, но модуль и2ц после пробуждения оказывался в каком-то состоянии, препятствующем началу нормального обмена - а в либе, как и приведено в примерах из даташита, сплошные бесконечные циклы ожидания нужного состояния...
в общем, решил проблему тупым TWCR = 0; сразу после пробуждения - если кто будет использовать эту либу, имейте ввиду.


--------------------
Я бы взял частями... но мне надо сразу.
Go to the top of the page
 
+Quote Post
PlainUser
сообщение Nov 29 2011, 03:35
Сообщение #13


Частый гость
**

Группа: Участник
Сообщений: 84
Регистрация: 23-06-05
Пользователь №: 6 244



Цитата(ARV @ Nov 28 2011, 14:20) *
DS и не спит - он и без сна ноноамперы потребляет... что-то с AVR TWI не то...

Ну так надо организовать им штатную рабочую ситуацию.
ЦПУ сбрасывать , а таймер переводить с батарейного питания на основное.
Начать со сброса цпу.
Go to the top of the page
 
+Quote Post
ARV
сообщение Nov 29 2011, 06:03
Сообщение #14


Профессионал
*****

Группа: Свой
Сообщений: 1 143
Регистрация: 30-09-08
Из: Новочеркасск
Пользователь №: 40 581



Цитата(PlainUser @ Nov 29 2011, 07:35) *
Ну так надо организовать им штатную рабочую ситуацию.
ЦПУ сбрасывать , а таймер переводить с батарейного питания на основное.
Начать со сброса цпу.
вы невнимательно прочли тему: в шаттном режиме все отлично работает, и при сбросе тоже. так же напоминаю, что проблему решил костылем.


--------------------
Я бы взял частями... но мне надо сразу.
Go to the top of the page
 
+Quote Post

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

 


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


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