AVR Раздел по микроконтроллерам компании Atmel - AVR / ATtiny / ATmega / ATMega128 / ATxmega, вопросы по программированию в AVR studio и все, относящееся к AVR... |
23.02.2013, 18:31
|
#101
|
Почётный гражданин KAZUS.RU
Регистрация: 13.10.2007
Адрес: Беларусь
Сообщений: 8,048
Сказал спасибо: 60
Сказали Спасибо 3,954 раз(а) в 2,309 сообщении(ях)
|
Re: Режимы сна Атмега-8
Сообщение от ForcePoint
|
сбросьте флаг и снова разрешайте только перед очередным засыпанием.
|
С секундными импульсами вначале нужно подождать 0,5 с, пока часы выставят на выходе единицу, и только потом включать прерывание
Тогда проще вообще не возиться со сном, экономии энергии почти не будет
|
|
|
|
23.02.2013, 21:54
|
#102
|
Частый гость
Регистрация: 29.04.2008
Сообщений: 39
Сказал спасибо: 6
Сказали Спасибо 16 раз(а) в 8 сообщении(ях)
|
Re: Режимы сна Атмега-8
Да на железе проверил - косяк - я его в сон а оно сразу просыпается....Потом около секунды спит.....
|
|
|
|
23.02.2013, 22:07
|
#103
|
Частый гость
Регистрация: 29.04.2008
Сообщений: 39
Сказал спасибо: 6
Сказали Спасибо 16 раз(а) в 8 сообщении(ях)
|
Re: Режимы сна Атмега-8
вот же блин косяк - народ может какие предложения будут? Есть блин AMEGA88 но шить нечем - я так понял в ней есть режим на изменение фронта просыпаться.... Может кто знает как PONY PROG заставить шить 88ю. Ребятам кто откликнулся низкий поклон за помощь!!!
|
|
|
|
23.02.2013, 23:23
|
#104
|
Почётный гражданин KAZUS.RU
Регистрация: 20.03.2007
Адрес: "Братское кольцо враждебности", т.е. ближайшее заМКАДье.
Сообщений: 6,938
Сказал спасибо: 2,991
Сказали Спасибо 3,167 раз(а) в 2,149 сообщении(ях)
|
Re: Режимы сна Атмега-8
Сообщение от mvn77
|
народ может какие предложения будут?
|
Я уж не помню, писали-ли Вы логику работы. Так-ли необходимо просыпаться ежесекундно? А варианты...
1. Просыпаться по WDT.
2. Встроенный RTC. Есть будет, конечно, побольше. 5..7 мка.
3. Внешняя логика, например - объединить SQW/OUT по XOR с сигналом разрешения от МК.
4. ИМС часов с возможностью выдачи побудки.
|
|
|
|
24.02.2013, 00:09
|
#105
|
Вид на жительство
Регистрация: 21.10.2009
Сообщений: 343
Сказал спасибо: 181
Сказали Спасибо 64 раз(а) в 56 сообщении(ях)
|
Re: Режимы сна Атмега-8
Сообщение от mvn77
|
Да на железе проверил - косяк - я его в сон а оно сразу просыпается....Потом около секунды спит.....
|
Из сна поднять может только низкий уровень,но он длится пол секунды, попробуйте поставить последовательно конденсатор, чтобы происходило только одно прерывание.
Емкость необходимо подобрать, чтобы проц успел проснуться, но не происходило нового прерывания, пока не поменяется сигнал на выходе DS1307. (одно прерывание во время полу секундного низкого уровня)
Последний раз редактировалось CodeNameHawk; 24.02.2013 в 00:16.
|
|
|
|
24.02.2013, 00:19
|
#106
|
Частый гость
Регистрация: 29.04.2008
Сообщений: 39
Сказал спасибо: 6
Сказали Спасибо 16 раз(а) в 8 сообщении(ях)
|
Re: Режимы сна Атмега-8
Не обезательно ежесекундно. Можно намного реже, интервал снятия показаний должен быть в районе раз в пол часа. По WDT все мутно, да и там интервала большого не добьешься. По часам - да есть 2 микрухи на пробу PCF - но в даташите темны лес - еще на месяц.
|
|
|
|
24.02.2013, 00:38
|
#107
|
Почётный гражданин KAZUS.RU
Регистрация: 05.05.2011
Адрес: Харьков
Сообщений: 5,049
Сказал спасибо: 592
Сказали Спасибо 3,968 раз(а) в 1,826 сообщении(ях)
|
Re: Режимы сна Атмега-8
Что тут мутного? Проснулся раз в секунду, увеличил счетчик, проверил не достиг ли он 1800 и опять в спячку. Если достиг, то сначала снял показания, обнулил счетчик, а потом в спячку. Все.
|
|
|
|
24.02.2013, 02:54
|
#108
|
Частый гость
Регистрация: 29.04.2008
Сообщений: 39
Сказал спасибо: 6
Сказали Спасибо 16 раз(а) в 8 сообщении(ях)
|
Re: Режимы сна Атмега-8
Сообщение от alvadep
|
Что тут мутного? Проснулся раз в секунду, увеличил счетчик, проверил не достиг ли он 1800 и опять в спячку. Если достиг, то сначала снял показания, обнулил счетчик, а потом в спячку. Все.
|
Да неудобно уже спрашивать - не пойму как WDT ресет делать в CV AVR - так и перегружается с интервалом в 2 секунды. И еще вопрос при выходе из повердавна так и должно быть что код выполняется с нуля?
|
|
|
|
24.02.2013, 07:51
|
#109
|
Почётный гражданин KAZUS.RU
Регистрация: 13.10.2007
Адрес: Беларусь
Сообщений: 8,048
Сказал спасибо: 60
Сказали Спасибо 3,954 раз(а) в 2,309 сообщении(ях)
|
Re: Режимы сна Атмега-8
По выходу из Любого режима спячки начинают выполняться команды, идущие сразу после команды Sleep
Сообщение от CodeNameHawk
|
Емкость необходимо подобрать, чтобы проц успел проснуться, но не происходило нового прерывания, пока не поменяется сигнал на выходе DS1307.
|
Не надо ничего подбирать, достаточно добавить диод. Выше писал, как.
Вачдог в мега8 только перезагружает контроллер, генерить прерывание не умеет. Но можно проверять флаг вачдога и если установлен - пропускать начальную инициализацию регистров по Ресету, а прибавлять единицу к счетчику
|
|
|
|
24.02.2013, 10:34
|
#110
|
Частый гость
Регистрация: 29.04.2008
Сообщений: 39
Сказал спасибо: 6
Сказали Спасибо 16 раз(а) в 8 сообщении(ях)
|
Re: Режимы сна Атмега-8
Все сделал - через WDT (оказалось куда проще чем думал), в 5 утра сбылось - запустил. Щас проверил вроде все нормально. Ток потребления 0.12 скачет до 0.9, надо еще через ключ питание на остальные компоненты сделать, а то 1307 0.11ma хавает, а используется раз в 10 минут... Да инициализацию регистров в проверку еще не убрал. В дальнейшем можно будет перейти на прерывание по будильнику PCF8583, но с ней разбираться надо...
Огромное спасибо за помощь, всех кто откликнулся и особенно niXto и ForcePoint!
Сам процесс засыпания выглядит так (atmega 8 ) ;
DDRB = 0x00; // все выводы порта B сконфигурировать как входы.
PORTB = 0xFF; // с подтяжками
DDRC = 0x00; // все выводы порта C сконфигурировать как входы.
PORTC = 0xFF; // с подтяжками
DDRD = 0x00; // все выводы порта D сконфигурировать как входы
PORTD = 0xFF; // с подтяжками
MCUCR |= ((1‹‹SE)|(1‹‹SM1)|(1‹‹SM0)); // для PowerSave mode
// Watchdog Timer initialization
// Watchdog Timer Prescaler: OSC/2048k
WDTCR=0x1F;
WDTCR=0x0F;
#asm("sleep"); //Отправляем контроллер в спящий режим
Через две секунды микроконтроллер сбрасывается и приращивает флаг времени
*max_alarm = *max_alarm + 1 ;
if (*max_alarm ›= 60) {
......... инициализация систем и код программы....
*max_alarm = mysec + 2 ; // собственно подгонка под минуту (интервал ровно минута получается)
}
Особое внимание для экономии энергии надо обратить на чисты монтаж, могут быть большие утечки через флюс.
Собственно и все - вдруг кому пригодится.
Последний раз редактировалось mvn77; 24.02.2013 в 10:47.
|
|
|
|
Ваши права в разделе
|
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения
HTML код Выкл.
|
|
|
Часовой пояс GMT +4, время: 23:20.
|
|