Например TDA7294

Форум РадиоКот • Просмотр темы - Atmega 8. Выход из режима power-down.
Форум РадиоКот
Здесь можно немножко помяукать :)

Текущее время: Вт дек 16, 2025 11:07:06

Часовой пояс: UTC + 3 часа


ПРЯМО СЕЙЧАС:



Начать новую тему Ответить на тему  [ Сообщений: 35 ]  1,  
Автор Сообщение
Не в сети
 Заголовок сообщения: Atmega 8. Выход из режима power-down.
СообщениеДобавлено: Ср мар 26, 2014 11:34:15 
Нашел транзистор. Понюхал.

Зарегистрирован: Сб ноя 07, 2009 15:27:59
Сообщений: 194
Рейтинг сообщения: 0
Добрый день!
Использую в своем девайсе контроллер Atmega8 совместно с часами реального времени DS1339. По задумке, будильник часов должен выводить контроллер из спящего режима, с помощью подтяжки линии прерывания к земле. Линия также подтянута к питанию через резистор. Использую режим power-down, как самый экономичный. Согласно даташиту, из этого режима контроллер выходит с помощью внешнего прерывания или ресета. Прерывание настроено на срабатывание по перепаду из 1 в 0, однако он категорически отказывается из него выходить. Без использования спящего режима все в порядке, прерывание срабатывает. В чем может быть дело?
Заранее благодарен.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Atmega 8. Выход из режима power-down.
СообщениеДобавлено: Ср мар 26, 2014 11:39:46 
Друг Кота
Аватар пользователя

Карма: 67
Рейтинг сообщений: 1066
Зарегистрирован: Чт сен 18, 2008 12:27:21
Сообщений: 19966
Откуда: Столица Мира Санкт-Петербург
Рейтинг сообщения: 0
Медали: 1
Получил миской по аватаре (1)
kushman писал(а):
Прерывание настроено на срабатывание по перепаду из 1 в 0, однако он категорически отказывается из него выходить.

Естессно отказывается. Читайте в ДШ раздел вывода из сна по прерываниям внимательней (сноки и пр.).

_________________
[ Всё дело не столько в вашей глупости, сколько в моей гениальности ] [ Правильно заданный вопрос содержит в себе половину ответа ]
Измерить нннада?


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Atmega 8. Выход из режима power-down.
СообщениеДобавлено: Ср мар 26, 2014 11:40:12 
Ум, честь и совесть. И скромность.
Аватар пользователя

Карма: 98
Рейтинг сообщений: 2135
Зарегистрирован: Чт дек 28, 2006 08:19:56
Сообщений: 18446
Откуда: Новочеркасск
Рейтинг сообщения: 0
Медали: 2
Получил миской по аватаре (1) Мявтор 3-й степени (1)
данный МК не пробуждается из Power Down по внешнему прерыванию, настроенному на перепад (фронт) - настройте прерывание на УРОВЕНЬ и будет вам счастье.

_________________
если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе
при взгляде на многих сверху ничего не меняется...

Мой уютный бложик... заходите!


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Atmega 8. Выход из режима power-down.
СообщениеДобавлено: Ср мар 26, 2014 12:22:38 
Нашел транзистор. Понюхал.

Зарегистрирован: Сб ноя 07, 2009 15:27:59
Сообщений: 194
Рейтинг сообщения: 0
Да, извиняюсь за свою невнимательность, пропустил это в даташите.
Но возникла другая проблема, МК вообще не хочет генерировать прерывание по уровню.
Хотя часы притягивают линию к земле, это точно, тестером проверял. Может маленькая длительность?


Вернуться наверх
 
Эиком - электронные компоненты и радиодетали
Не в сети
 Заголовок сообщения: Re: Atmega 8. Выход из режима power-down.
СообщениеДобавлено: Ср мар 26, 2014 12:24:13 
Друг Кота
Аватар пользователя

Карма: 67
Рейтинг сообщений: 1066
Зарегистрирован: Чт сен 18, 2008 12:27:21
Сообщений: 19966
Откуда: Столица Мира Санкт-Петербург
Рейтинг сообщения: 0
Медали: 1
Получил миской по аватаре (1)
kushman писал(а):
Может маленькая длительность?

Может, прерывание не настроено?

_________________
[ Всё дело не столько в вашей глупости, сколько в моей гениальности ] [ Правильно заданный вопрос содержит в себе половину ответа ]
Измерить нннада?


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Atmega 8. Выход из режима power-down.
СообщениеДобавлено: Ср мар 26, 2014 12:32:51 
Друг Кота

Карма: 64
Рейтинг сообщений: 1020
Зарегистрирован: Пт мар 07, 2008 06:54:43
Сообщений: 4369
Откуда: Ижевск
Рейтинг сообщения: 0
kushman писал(а):
Хотя часы притягивают линию к земле, это точно, тестером проверял. Может маленькая длительность?
Может это поможет.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Atmega 8. Выход из режима power-down.
СообщениеДобавлено: Ср мар 26, 2014 13:14:49 
Нашел транзистор. Понюхал.

Зарегистрирован: Сб ноя 07, 2009 15:27:59
Сообщений: 194
Рейтинг сообщения: 0
Да нет, все вроде настроено, я только поменял пару битов в регистре MCUCR, настроил их на работу по низкому уровню (ISC11=0, ISC10=0). По перепаду без использования спящего режима срабатывает на ура, а по уровню, что со спящим, что без спящего - никакой реакции.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Atmega 8. Выход из режима power-down.
СообщениеДобавлено: Ср мар 26, 2014 15:43:00 
Друг Кота

Карма: 64
Рейтинг сообщений: 1020
Зарегистрирован: Пт мар 07, 2008 06:54:43
Сообщений: 4369
Откуда: Ижевск
Рейтинг сообщения: 0
С примером кода было бы проще.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Atmega 8. Выход из режима power-down.
СообщениеДобавлено: Ср мар 26, 2014 17:56:20 
Нашел транзистор. Понюхал.

Зарегистрирован: Сб ноя 07, 2009 15:27:59
Сообщений: 194
Рейтинг сообщения: 0
Вот кусок кода (лишнее выкинул).

Код:
interrupt [EXT_INT1] void INT1_ISR(void)

    normal_mode();


void sleep_mode(void) {

   MCUCR = MCUCR|0xA0; //SE=1, power-down mode
   #asm
   sleep
   #endasm

}

void normal_mode(void) {
   
   #asm
   nop
   nop
   nop
   nop
   nop
   #endasm
   MCUCR = MCUCR&0x7F; //SE=0;           

}

void INT_Init(void) {
   
     GICR=0xC0;
     MCUCR=0x00;   
}

void main(void) {
   
    INT_Init();
    SREG.7=1;
    sleep_mode();
}



Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Atmega 8. Выход из режима power-down.
СообщениеДобавлено: Чт мар 27, 2014 09:03:59 
Друг Кота

Карма: 64
Рейтинг сообщений: 1020
Зарегистрирован: Пт мар 07, 2008 06:54:43
Сообщений: 4369
Откуда: Ижевск
Рейтинг сообщения: 0
В принципе нормально. Если бы ещё сделали так
void sleep_mode(void) {

MCUCR = MCUCR|0xA0; //SE=1, power-down mode
; #asm
; sleep
; #endasm

- при высоком уровне на входах INTx сбросить флаги
GIFR=0xC0
- глобально разрешить прерывания
SREG.7=1
- и только теперь
#asm
SLEEP
#endasm
то камень обязан уйти в POWER DOWN
Но, вопрос корректного выхода из POWER DOWN остался.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Atmega 8. Выход из режима power-down.
СообщениеДобавлено: Чт мар 27, 2014 10:11:50 
Нашел транзистор. Понюхал.

Зарегистрирован: Сб ноя 07, 2009 15:27:59
Сообщений: 194
Рейтинг сообщения: 0
Пробовал сгенерировать прерывание по уровню без спящего режима - не срабатывает. По перепаду - пожалуйста, по уровню - ни в какую. Вот в чем проблема. С чем это может быть связано?
Линия то притягивается к земле, это точно.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Atmega 8. Выход из режима power-down.
СообщениеДобавлено: Чт мар 27, 2014 15:34:28 
Друг Кота

Карма: 28
Рейтинг сообщений: 568
Зарегистрирован: Чт май 05, 2011 21:26:34
Сообщений: 4550
Откуда: Украина, Славутич
Рейтинг сообщения: 0
А ДО этого, она удерживается в плюсе? Может попробовать не прерывание от порта, а специальный вход внешнего прерывания INT0/INT1?


Последний раз редактировалось Alexeyslav Чт мар 27, 2014 15:43:59, всего редактировалось 2 раз(а).

Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Atmega 8. Выход из режима power-down.
СообщениеДобавлено: Чт мар 27, 2014 15:41:34 
Друг Кота
Аватар пользователя

Карма: 67
Рейтинг сообщений: 1066
Зарегистрирован: Чт сен 18, 2008 12:27:21
Сообщений: 19966
Откуда: Столица Мира Санкт-Петербург
Рейтинг сообщения: 0
Медали: 1
Получил миской по аватаре (1)
Alexeyslav писал(а):
Может попробовать не прерывание от порта, а специальный вход внешнего прерывания INT0/INT1?

В смысле? Из PD только INT0/INT1 и выводят.

_________________
[ Всё дело не столько в вашей глупости, сколько в моей гениальности ] [ Правильно заданный вопрос содержит в себе половину ответа ]
Измерить нннада?


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Atmega 8. Выход из режима power-down.
СообщениеДобавлено: Чт мар 27, 2014 16:08:16 
Нашел транзистор. Понюхал.

Зарегистрирован: Сб ноя 07, 2009 15:27:59
Сообщений: 194
Рейтинг сообщения: 0
Alexeyslav писал(а):
А ДО этого, она удерживается в плюсе? Может попробовать не прерывание от порта, а специальный вход внешнего прерывания INT0/INT1?


Так и и использую вход INT1. А как от порта можно прерывание получить? Или может я что-то не понял. :)


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Atmega 8. Выход из режима power-down.
СообщениеДобавлено: Чт мар 27, 2014 16:13:16 
Друг Кота
Аватар пользователя

Карма: 67
Рейтинг сообщений: 1066
Зарегистрирован: Чт сен 18, 2008 12:27:21
Сообщений: 19966
Откуда: Столица Мира Санкт-Петербург
Рейтинг сообщения: 0
Медали: 1
Получил миской по аватаре (1)
kushman писал(а):
А как от порта можно прерывание получить?

В других МК есть прерывания от портов.

_________________
[ Всё дело не столько в вашей глупости, сколько в моей гениальности ] [ Правильно заданный вопрос содержит в себе половину ответа ]
Измерить нннада?


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Atmega 8. Выход из режима power-down.
СообщениеДобавлено: Чт мар 27, 2014 22:57:08 
Мучитель микросхем

Карма: 4
Рейтинг сообщений: 41
Зарегистрирован: Вт фев 09, 2010 17:52:26
Сообщений: 475
Рейтинг сообщения: 0
kushman писал(а):

Код:

     GICR=0xC0;



0xC0 == 11000000 , значит разрешены прерывания INT0,INT1 , а обработчик прерывания только для INT1.
Если раньше возникнет INT0, то начнется цирк.

Цитата:
Код:
MCUCR = MCUCR&0x7F;


Чего этим хотите достичь?

Попробуйте оформлять в виде
Код:
   MCUCR &= ~((1<<ISC11) | (1<<ISC10)); //INT1 low level
   GICR     |=    (1<<INT1);           // разрешить прерывание INT1



Сразу видно что к чему.

Я бы советовал изменить логику программы, изменения режимов работы производите в маин, а в прерывании устанавливайте информационный флаг.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Atmega 8. Выход из режима power-down.
СообщениеДобавлено: Чт мар 27, 2014 23:43:39 
Мучитель микросхем

Карма: 4
Рейтинг сообщений: 41
Зарегистрирован: Вт фев 09, 2010 17:52:26
Сообщений: 475
Рейтинг сообщения: 0
Гляньте на пример.
Код:
/*
 * main.c
 *
 *  Created on: 27.03.2014
 *      Author: Marian
 */

#include <avr/io.h>
#include <avr/interrupt.h>
 #include <avr/sleep.h>

volatile uint8_t flag1;
uint8_t musor;


ISR(INT1_vect )
{
    // user code here
   flag1=0;
}

int main(void)
{
   DDRB = 0xFF;//na vyvod

   DDRD  &=~((1<<PD3)|(1<<PD0)); //na vvod
   PORTD |= (1<<PD3)|(1<<PD0);   //vkl podciazku

   MCUCR &= ~((1<<ISC11) | (1<<ISC10)); //INT1 low level
   GICR     |=    (1<<INT1);           // разрешить прерывание INT1

   flag1=1;//dla otslezivanija prerywanija
   musor=0; //dla primera;

   set_sleep_mode(SLEEP_MODE_PWR_DOWN);

   while (1)
   {

         musor++;
         PORTB = musor;
         if((PIND & 0x01)!= 0x01 )
         {
            flag1=1;
            sei();
            sleep_mode();
            cli();
         }

      }

} //




В архиве проект для протеуса
Вложение:
temp.rar [42.9 KiB]
Скачиваний: 227


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Atmega 8. Выход из режима power-down.
СообщениеДобавлено: Сб мар 29, 2014 21:59:13 
Мучитель микросхем

Карма: 4
Рейтинг сообщений: 41
Зарегистрирован: Вт фев 09, 2010 17:52:26
Сообщений: 475
Рейтинг сообщения: 0
Тут присутствует одна особенность, прерывания (если назначены по низкому уровню) происходят до тех пор, пока на ноге низкий уровень.
Значит проц будет постоянно выходить из повер довн.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Atmega 8. Выход из режима power-down.
СообщениеДобавлено: Пн мар 31, 2014 11:32:38 
Нашел транзистор. Понюхал.

Зарегистрирован: Сб ноя 07, 2009 15:27:59
Сообщений: 194
Рейтинг сообщения: 0
Попробовал выводить контроллер из спящего режима по любому логическому изменению на INT1 - и все в порядке, выходит и работает. Единственная загвоздка в том, что возникает два прерывания, несмотря на то, что они глобально запрещены на время обработки.
Сегодня еще попробую вышеприведенный код, посмотрим что получится.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Atmega 8. Выход из режима power-down.
СообщениеДобавлено: Пн мар 31, 2014 16:16:16 
Мучитель микросхем

Карма: 4
Рейтинг сообщений: 41
Зарегистрирован: Вт фев 09, 2010 17:52:26
Сообщений: 475
Рейтинг сообщения: 0
Не ясно для чего вы выставляете "по любому логическому изменению на INT1", если есть возможность выставить по фронту или по спаду на INT1.

kushman писал(а):
Единственная загвоздка в том, что возникает два прерывания, несмотря на то, что они глобально запрещены на время обработки.


Флаг прерывания устанавливается, даже если они глобально запрещены, если есть необходимость выполните ручной сброс флага прерывания, перед разрешением прерываний.


Вернуться наверх
 
Показать сообщения за:  Сортировать по:  Вернуться наверх
Начать новую тему Ответить на тему  [ Сообщений: 35 ]  1,  

Часовой пояс: UTC + 3 часа


Кто сейчас на форуме

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 18


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

Найти:
Перейти:  


Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
Русская поддержка phpBB
Extended by Karma MOD © 2007—2012 m157y
Extended by Topic Tags MOD © 2012 m157y