| Форум РадиоКот https://radiokot.ru/forum/ |
|
| Sleep https://radiokot.ru/forum/viewtopic.php?f=57&t=126098 |
Страница 1 из 2 |
| Автор: | Belerafon [ Чт янв 21, 2016 18:19:38 ] |
| Заголовок сообщения: | Sleep |
Подскажите как реализовать спящий режим в mega8 чтоб МК просыпался, делал дело и снова засыпал, при том что сон нужен самый глубокий, а в нем только работает собака и внешнее прерывание. Внешнее прерывание сразу отпадает, а собаку походу можно только настроить до 2-х секунд. Хотелось бы чтоб МК просыпался раз в 10-60сек. |
|
| Автор: | COKPOWEHEU [ Чт янв 21, 2016 22:10:35 ] |
| Заголовок сообщения: | Re: Sleep |
А асинхронный таймер не устраивает? Его можно настроить на 8 сек. Он работает в режиме powersave. Не знаю, что потребляет больше, асинхронный таймер или собака. В любом случае, проснуться пару раз для счета времени вряд ли сильно повысит потребление. |
|
| Автор: | VAT [ Пт янв 22, 2016 12:15:09 ] |
| Заголовок сообщения: | Re: Sleep |
WD вроде больше жрет и намного. |
|
| Автор: | Demiurg [ Вс янв 24, 2016 16:40:41 ] |
| Заголовок сообщения: | Re: Sleep |
Тут посмотрите. |
|
| Автор: | Belerafon [ Пн янв 25, 2016 09:34:35 ] |
| Заголовок сообщения: | Re: Sleep |
Demiurg писал(а): Тут посмотрите. Штука интересная,но фиг где заказать на пробу. |
|
| Автор: | Belerafon [ Пн янв 25, 2016 09:35:56 ] |
| Заголовок сообщения: | Re: Sleep |
COKPOWEHEU писал(а): А асинхронный таймер не устраивает? Его можно настроить на 8 сек. Он работает в режиме powersave. Не знаю, что потребляет больше, асинхронный таймер или собака. В любом случае, проснуться пару раз для счета времени вряд ли сильно повысит потребление. Смотрел вроде сами режимы сна значительно отличаются по потреблению, но надо попробовать в железе проверить. |
|
| Автор: | НАПАЛМ [ Пн янв 25, 2016 10:38:07 ] |
| Заголовок сообщения: | Re: Sleep |
Ну так пробуйте и отпишитесь о результатах. |
|
| Автор: | ARV [ Пн янв 25, 2016 13:26:09 ] |
| Заголовок сообщения: | Re: Sleep |
настроить WD на прерывание, а не сброс, в прерывании завести переменную-счетчик и уже по его переполнению выполнять какую-то полезную работу - так можно хоть на пару суток выдержку задавать (если точность не требуется). Хотя можно и без прерывания, если работать на ассемблере или хорошо знать способы обхода автоматического обнуления переменных в Си при сбросе. |
|
| Автор: | Belerafon [ Пн янв 25, 2016 13:43:44 ] |
| Заголовок сообщения: | Re: Sleep |
ARV писал(а): настроить WD на прерывание, а не сброс, в прерывании завести переменную-счетчик и уже по его переполнению выполнять какую-то полезную работу - так можно хоть на пару суток выдержку задавать (если точность не требуется). Хотя можно и без прерывания, если работать на ассемблере или хорошо знать способы обхода автоматического обнуления переменных в Си при сбросе. Я только додумался считать время при сбросе через EEPROM но это как то нехорошо, ненадолго хватит памяти,хотя ячеек много. Я вот про прерывание можно подумать. С асинхронным таймером потребление падает до 0.2мА а с собакой до 0.01мА по мультиметру. |
|
| Автор: | ARV [ Пн янв 25, 2016 14:14:47 ] |
| Заголовок сообщения: | Re: Sleep |
ну вот и смотрите, что лучше. только имейте ввиду, что прерывание и сброс для вашей программы - принципиально разные режимы! при сбросе вы НЕИЗБЕЖНО, хоть и на короткое время, потеряете уровни на выводах (они будут аппаратно переключены в режим входов без подтяжек), а при прерывании - уровни будут сохранены. |
|
| Автор: | Мурик [ Пн янв 25, 2016 14:20:54 ] |
| Заголовок сообщения: | Re: Sleep |
ARV писал(а): настроить WD на прерывание Belerafon писал(а): mega8 В ATmega8 сторожевой таймер не поддерживает прерывания. Для этого нужен ATmega88 или подобный.
|
|
| Автор: | ARV [ Пн янв 25, 2016 14:44:11 ] |
| Заголовок сообщения: | Re: Sleep |
Мурик писал(а): В ATmega8 сторожевой таймер не поддерживает прерывания. ну невнимательный я, старею видимо...
|
|
| Автор: | Belerafon [ Пн янв 25, 2016 16:09:17 ] |
| Заголовок сообщения: | Re: Sleep |
Подскажите в спящем режиме Power-Save переменные сбрасываются? |
|
| Автор: | Demiurg [ Пн янв 25, 2016 16:29:41 ] |
| Заголовок сообщения: | Re: Sleep |
Belerafon писал(а): Подскажите в спящем режиме Power-Save переменные сбрасываются? Нет. Это же не сброс. При аппаратном сбросе сбрасывается: регистры общего назначения, регистры ввода-вывода. SRAM не сбрасывается. Очистка ОЗУ задача программиста и компиляторов. |
|
| Автор: | akl [ Вт янв 26, 2016 01:25:36 ] |
| Заголовок сообщения: | Re: Sleep |
Замечу. Demiurg писал(а): При аппаратном сбросе сбрасывается: регистры общего назначения... РОН, не сбрасываютсяDemiurg писал(а): Очистка ОЗУ задача программиста и компиляторов. Зачем чистить ОЗУ после аппаратного сброса? Совершенно бестолковая задача.
|
|
| Автор: | ARV [ Вт янв 26, 2016 07:29:03 ] |
| Заголовок сообщения: | Re: Sleep |
akl писал(а): Зачем чистить ОЗУ после аппаратного сброса? Совершенно бестолковая задача. речь идет о том, что если надо - то это должен делать программист.в частности, Си автоматически заполняет нулями все глобальные (не register) переменные до входа в main, что формально эквивалентно "после сброса МК" |
|
| Автор: | Demiurg [ Вт янв 26, 2016 07:44:19 ] |
| Заголовок сообщения: | Re: Sleep |
akl писал(а): РОН, не сбрасываются По РОН может и ошибочно написал, позже проверю. Регистры ввода-вывода устанавливаются при сбросе на значения по умолчанию. akl писал(а): Зачем чистить ОЗУ после аппаратного сброса? Совершенно бестолковая задача. Выше ответили. |
|
| Автор: | VAT [ Вт фев 02, 2016 06:18:45 ] |
| Заголовок сообщения: | Re: Sleep |
после почти написания кода на асме пытаюсь выловить глюк как то связанный со Sleep. в основном МК в режиме PowerSave. При этом он просыпается по асинхронному таймеру, собирает данные и инициирует прерывание EEPROM, чтобы если что изменилось записать. Если я читаю EPPROM с помощью Казамы - я там вижу эти данные в том виде как должно быть. Если я перевожу МК в режим Idle для чтения данных по компорту - данные в ЕЕПРОМ съезжают, или вообще портятся. За пределы отведенного места в ЕЕПРОМ не выходят впрочем. То что МЕГА 48PA может работать с ЕЕПРОМ в PowerSave я выяснил опытным путем, хотя табличка даташит говорит обратное. Но табличка даташит противоречит и абзацу описания режима в части прерываний PinChange - они тоже как бы не должны работать. Как бы понять - где правда? Может есть какие-то хитрости если меняешь режим сна по ходу? |
|
| Автор: | akl [ Вт фев 02, 2016 07:55:40 ] |
| Заголовок сообщения: | Re: Sleep |
VAT писал(а): Но табличка даташит противоречит и абзацу описания режима в части прерываний PinChange - они тоже как бы не должны работать. Прерывание Pin Change у ATmega48 работает во всех режимах сна.Вложение: ATmega48_SLEEP.PNG
|
|
| Автор: | VAT [ Вт фев 02, 2016 09:40:35 ] |
| Заголовок сообщения: | Re: Sleep |
Вложение: akl писал(а): VAT писал(а): Но табличка даташит противоречит и абзацу описания режима в части прерываний PinChange - они тоже как бы не должны работать. Прерывание Pin Change у ATmega48 работает во всех режимах сна.Вложение: Вложение ATmega48_SLEEP.PNG больше недоступно. Да - по факту в Powersave - Pinchange работает. Хотя по приведенной вами таблице в которую и я смотрю - не должны (см ссылку 3 под таблицей). А в пояснения к режиму PS опять должно. Согласен - видимо в таблице ошибка. Но - запись по прерыванию EEprom ready тоже работает по факту. Хотя по таблице - не должно. Разница в потреблении c idle - 300раз - не заметить невозможно. Интересно - могут ЧипДип торговать какими нибудь "усовершенствованными" микросхемами? Не хотелось бы полагаться на такую фичу. |
|
| Страница 1 из 2 | Часовой пояс: UTC + 3 часа |
| Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group http://www.phpbb.com/ |
|


