AVR Раздел по микроконтроллерам компании Atmel - AVR / ATtiny / ATmega / ATMega128 / ATxmega, вопросы по программированию в AVR studio и все, относящееся к AVR... |
19.10.2011, 13:40
|
#61
|
Почётный гражданин KAZUS.RU
Регистрация: 13.10.2007
Адрес: Беларусь
Сообщений: 8,048
Сказал спасибо: 60
Сказали Спасибо 3,954 раз(а) в 2,309 сообщении(ях)
|
Re: Режимы сна Атмега-8
Сообщение от putmannn
|
А можно минимизировать потери поставив в делителе в 10 раз большие сопротивления ?
|
У стабилитрона есть минимальный ток стабилизации, ниже которого он будет врать. Отключая его в паузах, удастся сэкономить гораздо больше
|
|
|
|
19.10.2011, 22:54
|
#62
|
Частый гость
Регистрация: 23.04.2011
Адрес: Санкт- Петербург
Сообщений: 42
Сказал спасибо: 0
Сказали Спасибо 17 раз(а) в 13 сообщении(ях)
|
Re: Режимы сна Атмега-8
С моей башни:
Про стабилитрон - верно. Надо либо отключать, либо менять. Отключить можно кмоп транзистором. Это что, так измеряете питание?
R10 - не нужен, C4, C5 - по 20p
С U5 - все в порядке, когда port, ddr в 0, они - не выходы, а входы, соотв. не могут ничего коротить.
Важно - надо отключить U4, для этого - 3 ногу - резистором 100К на землю, или выход порта - ddr - в 1, port - в 0.
Стабилизатор надо подобрать получше:
http://catalog.compel.ru/linereg/lis...00&IQ_LE=0.100
U4 тоже потребляет немало, 200-300мкА по двум питаниям, стоит либо отключать по питанию, либо подобрать потише.
Q3 видимо стоит выключить ножкой порта аналогично 3 ноге U4, хотя транзистор биполярный, с малым бета и сам выключится.
Попробовал разобраться с транзистором U6. Сразу не вышло. Зачем это?
|
|
|
|
20.10.2011, 04:00
|
#63
|
Почётный гражданин KAZUS.RU
Регистрация: 13.03.2010
Сообщений: 2,897
Сказал спасибо: 499
Сказали Спасибо 3,061 раз(а) в 1,425 сообщении(ях)
|
Re: Режимы сна Атмега-8
Сообщение от putmannn
|
Может кто нибудь подскажит линейный стабилизатор на 5 вольт с меньшим потреблением, тут 3-4 мА получается.
|
LP2950-5.0, еще лучше такую же на 3 вольта - меньше потребление МК
Последний раз редактировалось AR_Favorit; 20.10.2011 в 04:03.
|
|
|
|
20.10.2011, 08:38
|
#64
|
Гражданин KAZUS.RU
Регистрация: 01.02.2011
Адрес: г. Долгопрудный
Сообщений: 996
Сказал спасибо: 339
Сказали Спасибо 94 раз(а) в 91 сообщении(ях)
|
Re: Режимы сна Атмега-8
llans, Большое спасибо за ответ. По ссылке нашел стабилизатор с потреблением макс. 6 мкА и недорогой, еще раз спасибо =)
Я когда с платы выпаивал детали по одной и измерял, то U4 почти не влияла... было в начале 11 мА, заметно уменьшилось когда стал снимать танталовые конденсаторы по питанию... может они у меня плохие ??? я их снимаю с китайских автомагнитолл.
Теперь по U6, к ногам 1 и 7,8 (параллельно) стоит первый светодиод, к ногам 5,6 к клемме К5 второй светодиод. Если оба полевика закрыты то ток потечёт через 2 светодиода , если один из них откроется то шунтирует светодиод и гореть остаётся только один. Это сделано для раздельн-совместного последовательного включения светодиодов. Ну и конечно лучше не открывать оба транзистора =)
|
|
|
|
22.10.2011, 08:06
|
#65
|
Гражданин KAZUS.RU
Регистрация: 01.02.2011
Адрес: г. Долгопрудный
Сообщений: 996
Сказал спасибо: 339
Сказали Спасибо 94 раз(а) в 91 сообщении(ях)
|
Re: Режимы сна Атмега-8
Собрал на новой плате схему, после припайки 2-3 деталей смотрел ток и так все детали по очереди. Один конденсатор отловил (100 нан на землю), из-за него потребление на 200 мкА выростало, брак наверное. В итоге потребление отдельно контроллера 2.3 мкА, вместе с 78L05 3.8 мА, а всей схемы 4 мА, получается когда поменяю стабилизатор, то будет 200 мкА. Это меня устраивает, на моём аккумуляторе если забудут отключить проработает чуть больше двух лет, вполне приемлемо.
Всем спасибо ещё раз за ответы !
|
|
|
|
25.01.2013, 23:37
|
#66
|
Частый гость
Регистрация: 29.04.2008
Сообщений: 39
Сказал спасибо: 6
Сказали Спасибо 16 раз(а) в 8 сообщении(ях)
|
Re: Режимы сна Атмега-8
Сообщение от putmannn
|
Всем спасибо ещё раз за ответы !
|
Вот класс - прочитал 7 страниц а автор даже постеснялся выложить итоговый вариант усыпления. Бьюсь с той же проблемой - правда на C.
// ----сон---------
delay_ms(1000);
TIMSK |= (1‹‹TOIE1); // разрешить прерывание по переполнению таймера счетчика T1
TCCR1B = (1‹‹CS12)|(1‹‹CS11)|(1‹‹CS10); // устанавливаем отсчет по синхроимпульсу на T1
TCNT1 = 65525; // до переполнения 10 тактов в нашем случае 10 секунд
// TCNT1 = 63936; // раз в пол часа переполнение.
GICR|=0x40; //включить INT1
//MCUCR=0x80; // idle mode
MCUCR=0xA0; //power down mode только в этом режиме можно проснутся по переполнению в протеусе а в реальности не просыпается.
//MCUCR=0xB0; // power save mode
//MCUCR=0xE0; // standby mode
GIFR=0x40;
SFIOR = (1‹‹PUD); //включаем на всех шинах Z
ACSR |= (1‹‹ACD); //выключем компаратор
ADCSRA = (0‹‹ADEN);// выключаем АЦП
WDTCR = 0x00; //Выключить WDT
#asm("sei") //Глобальное разрешение прерываний.
#asm("sleep") //Отправляем контроллер в спящий режим
#asm("cli") //Глобальное запрещение прерываний.
Вроде так - как в С переключить все порты на вход, никто так и не смог ответить. Все посылают в даташит, который уже и так до дыр дочитал Может кто еще что посоветует?
|
|
|
|
26.01.2013, 04:36
|
#67
|
Гражданин KAZUS.RU
Регистрация: 16.03.2011
Сообщений: 486
Сказал спасибо: 8
Сказали Спасибо 131 раз(а) в 116 сообщении(ях)
|
Re: Режимы сна Атмега-8
Сообщение от mvn77
|
как в С переключить все порты на вход, никто так и не смог ответить
|
А на выход они у вас как включаются?
На вход также, только наоборот:
Или что-то другое неясно?
Последний раз редактировалось _Артём_; 26.01.2013 в 04:41.
|
|
|
|
26.01.2013, 08:01
|
#68
|
Почётный гражданин KAZUS.RU
Регистрация: 13.10.2007
Адрес: Беларусь
Сообщений: 8,048
Сказал спасибо: 60
Сказали Спасибо 3,954 раз(а) в 2,309 сообщении(ях)
|
Re: Режимы сна Атмега-8
Висящие в воздухе ноги нужно переключать на выход или на вход с подтяжкой, иначе из-за неопределенного уровня будут сквозные токи и контроллер будет потреблять до миллиампера. Вообще, даже не знаю откуда пошел этот бред с переключением всех ног на входы - разницы в потреблении нет вообще. Читаем основы работы с КМОП-микросхемами, любыми, а не только контроллерами
|
|
|
|
26.01.2013, 11:43
|
#69
|
Частый гость
Регистрация: 29.04.2008
Сообщений: 39
Сказал спасибо: 6
Сказали Спасибо 16 раз(а) в 8 сообщении(ях)
|
Re: Режимы сна Атмега-8
Спасибо большое за подсказку. Столкнулся с проблемой что на реальном железе этот код не выходит из сна, хотя в протеусе все нормально, хотел сам этот вопрос решить, но уже 3 дня бьюсь, сдвигов ноль.
Не при переполнении TCNT0:
TIMSK |= (1‹‹TOIE0); //разрешаем прерывание по переполнению
TCCR0 |= (1 ‹‹ CS00)|(1 ‹‹ CS01)|(1 ‹‹ CS02); // устанавливаем отсчет по синхроимпульсу на T0
TCNT0 = 245; // до переполнения 10 тактов в нашем случае 10 секунд (тактовый сигнал 1сек на T0)
не при переполнении TCNT1:
TIMSK |= (1‹‹TOIE1); // разрешить прерывание по переполнению таймера счетчика T1
TCCR1B = (1‹‹CS12)|(1‹‹CS11)|(1‹‹CS10); // устанавливаем отсчет по синхроимпульсу на T1
TCNT1 = 65525; // до переполнения 10 тактов в нашем случае 10 секунд(тактовый сигнал 1сек на T1)
[/I]
не выходит из сна
усыпляю так -
//MCUCR=0x80; // idle mode
//MCUCR=0xA0; //power down mode только в этом режиме можно проснутся по переполнению в протеусе
MCUCR=0xB0; // power save mode
//MCUCR=0xE0; // standby mode
GIFR=0x40;
SFIOR = (1‹‹PUD); //включаем на всех шинах Z
ACSR |= (1‹‹ACD); //выключем компаратор
ADCSRA = (0‹‹ADEN);// выключаем АЦП
WDTCR = 0x00; //Выключить WDT
#asm("sei") //Глобальное разрешение прерываний.
#asm("sleep") //Отправляем контроллер в спящий режим
MCUCR = (0‹‹SE);
#asm("cli") //Глобальное запрещение прерываний.
Как по вашему в чем может быть проблема.
фьюзы стоят sut0=1 cksel3=1 cksel2=1 - (4mhz)
Синхроимпульс идет от внешних часов реального времени 1ГЦ.
По идее вроде atmega 8 должна выходить из спячки по переполению - но такое только происходит в протеусе. В режиме PowerSave mode вообще ни выходит не в протеусе не в реальном железе.
схема -
|
|
|
|
26.01.2013, 11:54
|
#70
|
Почётный гражданин KAZUS.RU
Регистрация: 29.12.2012
Адрес: Питер
Сообщений: 982
Сказал спасибо: 131
Сказали Спасибо 230 раз(а) в 157 сообщении(ях)
|
Re: Режимы сна Атмега-8
Сообщение от mvn77
|
WDTCR = 0x00; //Выключить WDT
|
Тут точно ошибка.
Цитата:
|
When the WDE is written to logic one, the Watchdog Timer is enabled, and if the WDE is written to logic zero, the Watchdog Timer function is disabled. WDE can only be cleared if the WDCE bit has logic level one.
|
|
|
|
|
Ваши права в разделе
|
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения
HTML код Выкл.
|
|
|
Часовой пояс GMT +4, время: 12:25.
|
|