AVR Раздел по микроконтроллерам компании Atmel - AVR / ATtiny / ATmega / ATMega128 / ATxmega, вопросы по программированию в AVR studio и все, относящееся к AVR... |
07.02.2013, 15:38
|
|
Гражданин KAZUS.RU
Регистрация: 04.08.2006
Сообщений: 911
Сказал спасибо: 28
Сказали Спасибо 180 раз(а) в 139 сообщении(ях)
|
Re: RESET в AVR
Пока отвечал, вы уже тут нового нагородили.
Если вы хотите работать c wdt и засыпать не собираетесь, то вам надо сброс wdt организовывать в основном цикле. Иначе как вы сбрасывать будете если прерывание приходит неравномерно.
В любом случае wdt не имеет никакого отношения к USART. Так как это асинхронный порт. И в общем случае он может заработать раз в год.
|
|
|
|
07.02.2013, 15:41
|
|
Почётный гражданин KAZUS.RU
Регистрация: 26.11.2011
Адрес: Анапа
Сообщений: 1,620
Сказал спасибо: 284
Сказали Спасибо 129 раз(а) в 111 сообщении(ях)
|
Re: RESET в AVR
Многие (если не все) gsm-модули имеют пин - сигнализирующий об активности. Его и можно завести на ногу прерывания и стартовать камень. Вот только не вижу смысла в экономии энергосбережения на МК на фоне постоянно работающего gsm.
|
|
|
|
07.02.2013, 17:12
|
|
Временная регистрация
Регистрация: 08.01.2007
Сообщений: 92
Сказал спасибо: 17
Сказали Спасибо 9 раз(а) в 9 сообщении(ях)
|
Re: RESET в AVR
Спасибо за ответы!
Но все же:
PHP код:
|
W=MCUSR&0x08;
while(W)
{
}
|
Согласно ДШ 3 й бит это указатель на то что был сброс по WDT.
А оно не читается((
|
|
|
|
07.02.2013, 19:11
|
|
Почётный гражданин KAZUS.RU
Регистрация: 19.08.2006
Адрес: Львов
Сообщений: 1,616
Сказал спасибо: 65
Сказали Спасибо 315 раз(а) в 264 сообщении(ях)
|
Re: RESET в AVR
Сообщение от papa_n
|
Спасибо за ответы!
Но все же:
PHP код:
|
W=MCUSR&0x08; while(W) { }
|
Согласно ДШ 3 й бит это указатель на то что был сброс по WDT.
А оно не читается((
|
А за что вы так полюбили while(..?
Лепите его повсеместно и неуместно. ![Улыбка](images/smilies/icon_smile.gif)
Если вам нужно постоянное исполнение кода внутри блока до выполнения определенного условия - пожалуйста. Но если вам нужно однократное выполнение по условию - уместнее было бы простое if(..
Создается впечатление, что вы не совсем хорошо понимаете назначение while(..
В вашем коде видится:
Код:
|
do{
....
} while( MCUSR&0x08 ); |
true или false в скобках - по вашему желанию. Блок будет выполняться, если условие всегда истинно.
Наверное, лучше сначала кубики алгоритма нарисовать, потом писать строки программы, чем перебирая собственные ошибки выйти на правильную логику.
__________________
С уважением,
Vic / ut1wpr
Последний раз редактировалось ut1wpr; 07.02.2013 в 19:13.
|
|
|
|
07.02.2013, 19:11
|
|
Почётный гражданин KAZUS.RU
Регистрация: 13.10.2007
Адрес: Беларусь
Сообщений: 8,048
Сказал спасибо: 60
Сказали Спасибо 3,954 раз(а) в 2,309 сообщении(ях)
|
Re: RESET в AVR
Сообщение от whoim
|
постоянно работающий gsm
|
...Потребляет 1...2 мА, АВР на 8 МГц в ожидании потребляет 3 мА
Экономия налицо
|
|
|
|
07.02.2013, 19:37
|
|
Почётный гражданин KAZUS.RU
Регистрация: 08.06.2008
Сообщений: 1,394
Сказал спасибо: 4
Сказали Спасибо 183 раз(а) в 167 сообщении(ях)
|
Re: RESET в AVR
Что то не очень понятно о чем речь. Что б экономить - надо использовать команду sleep, а вот ее что то не видно в программе
|
|
|
|
07.02.2013, 20:07
|
|
Почётный гражданин KAZUS.RU
Регистрация: 26.11.2011
Адрес: Анапа
Сообщений: 1,620
Сказал спасибо: 284
Сказали Спасибо 129 раз(а) в 111 сообщении(ях)
|
Re: RESET в AVR
Сообщение от niXto
|
...Потребляет 1...2 мА, АВР на 8 МГц в ожидании потребляет 3 мА
Экономия налицо
|
одна перерегистрация в сети и опять особо нет экономии)
а их бывает не одна за день.. До 2 ампер кратковременно жрет..
|
|
|
|
07.02.2013, 20:34
|
|
Почётный гражданин KAZUS.RU
Регистрация: 13.10.2007
Адрес: Беларусь
Сообщений: 8,048
Сказал спасибо: 60
Сказали Спасибо 3,954 раз(а) в 2,309 сообщении(ях)
|
Re: RESET в AVR
Но это не значит, что можно отказаться от всех доступных режимов экономии
А если девайс стоит в машине, а машина стоит под окнами, то перерегистраций почти не будет
|
|
|
|
08.02.2013, 09:22
|
|
Почётный гражданин KAZUS.RU
Регистрация: 20.03.2007
Адрес: "Братское кольцо враждебности", т.е. ближайшее заМКАДье.
Сообщений: 6,916
Сказал спасибо: 2,980
Сказали Спасибо 3,161 раз(а) в 2,146 сообщении(ях)
|
Re: RESET в AVR
Сообщение от papa_n
|
PHP код:
|
W=MCUSR&0x08;
while(W)
{
}
|
Согласно ДШ 3 й бит это указатель на то что был сброс по WDT.
А оно не читается((
|
Опрос MCUSR надо поставить в секцию "_no_init" (Или как-то она там называется, нет примера под руками. Если это GCC). Т.е. что-бы инфа оттуда была считана во временную переменную до выполнениея пролога Си-программы.
Последний раз редактировалось ForcePoint; 08.02.2013 в 09:25.
|
|
|
Сказали "Спасибо" ForcePoint
|
|
|
08.02.2013, 12:32
|
|
Временная регистрация
Регистрация: 08.01.2007
Сообщений: 92
Сказал спасибо: 17
Сказали Спасибо 9 раз(а) в 9 сообщении(ях)
|
Re: RESET в AVR
Сообщение от ut1wpr
|
Если вам нужно постоянное исполнение кода внутри блока до выполнения определенного условия - пожалуйста.
|
Да, мне нужно отрабатывать сессию с ком портом ПК, пока ПК ее не разорвет
|
|
|
|
Ваши права в разделе
|
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения
HTML код Выкл.
|
|
|
Часовой пояс GMT +4, время: 08:59.
|
|