Sleep

Обсуждаем контроллеры компании Atmel.
Ответить
Встал на лапы
Сообщения: 110
Зарегистрирован: Вс май 10, 2009 18:23:45

Сообщение Belerafon »

Подскажите как реализовать спящий режим в mega8 чтоб МК просыпался, делал дело и снова засыпал, при том что сон нужен самый глубокий, а в нем только работает собака и внешнее прерывание. Внешнее прерывание сразу отпадает, а собаку походу можно только настроить до 2-х секунд. Хотелось бы чтоб МК просыпался раз в 10-60сек.
Реклама
Говорящий с текстолитом
Аватара пользователя
Сообщения: 1525
Зарегистрирован: Чт июн 10, 2010 20:11:19

Сообщение COKPOWEHEU »

А асинхронный таймер не устраивает? Его можно настроить на 8 сек. Он работает в режиме powersave. Не знаю, что потребляет больше, асинхронный таймер или собака.
В любом случае, проснуться пару раз для счета времени вряд ли сильно повысит потребление.
Реклама
VAT
Встал на лапы
Сообщения: 90
Зарегистрирован: Вс дек 20, 2015 21:03:39

Сообщение VAT »

WD вроде больше жрет и намного.
Это не хвост, это антенна
Сообщения: 1492
Зарегистрирован: Ср июн 25, 2008 15:19:44

Сообщение Demiurg »

Тут посмотрите.
Контактная информация:
Реклама
Эиком - электронные компоненты и радиодетали
Встал на лапы
Сообщения: 110
Зарегистрирован: Вс май 10, 2009 18:23:45

Сообщение Belerafon »

Demiurg писал(а):Тут посмотрите.
Штука интересная,но фиг где заказать на пробу.
Реклама
Встал на лапы
Сообщения: 110
Зарегистрирован: Вс май 10, 2009 18:23:45

Сообщение Belerafon »

COKPOWEHEU писал(а):А асинхронный таймер не устраивает? Его можно настроить на 8 сек. Он работает в режиме powersave. Не знаю, что потребляет больше, асинхронный таймер или собака.
В любом случае, проснуться пару раз для счета времени вряд ли сильно повысит потребление.
Смотрел вроде сами режимы сна значительно отличаются по потреблению, но надо попробовать в железе проверить.
Реклама
Это не хвост, это антенна
Аватара пользователя
Сообщения: 1315
Зарегистрирован: Пт ноя 27, 2009 19:47:13
Откуда: Казань

Сообщение НАПАЛМ »

Ну так пробуйте и отпишитесь о результатах.
ARV
Ум, честь и совесть. И скромность.
Аватара пользователя
Сообщения: 18785
Зарегистрирован: Чт дек 28, 2006 08:19:56
Откуда: Новочеркасск

Сообщение ARV »

настроить WD на прерывание, а не сброс, в прерывании завести переменную-счетчик и уже по его переполнению выполнять какую-то полезную работу - так можно хоть на пару суток выдержку задавать (если точность не требуется).

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

Мой уютный бложик... заходите!
Контактная информация:
Встал на лапы
Сообщения: 110
Зарегистрирован: Вс май 10, 2009 18:23:45

Сообщение Belerafon »

ARV писал(а):настроить WD на прерывание, а не сброс, в прерывании завести переменную-счетчик и уже по его переполнению выполнять какую-то полезную работу - так можно хоть на пару суток выдержку задавать (если точность не требуется).

Хотя можно и без прерывания, если работать на ассемблере или хорошо знать способы обхода автоматического обнуления переменных в Си при сбросе.
Я только додумался считать время при сбросе через EEPROM но это как то нехорошо, ненадолго хватит памяти,хотя ячеек много. Я вот про прерывание можно подумать. С асинхронным таймером потребление падает до 0.2мА а с собакой до 0.01мА по мультиметру.
ARV
Ум, честь и совесть. И скромность.
Аватара пользователя
Сообщения: 18785
Зарегистрирован: Чт дек 28, 2006 08:19:56
Откуда: Новочеркасск

Сообщение ARV »

ну вот и смотрите, что лучше. только имейте ввиду, что прерывание и сброс для вашей программы - принципиально разные режимы!
при сбросе вы НЕИЗБЕЖНО, хоть и на короткое время, потеряете уровни на выводах (они будут аппаратно переключены в режим входов без подтяжек), а при прерывании - уровни будут сохранены.
если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе
при взгляде на многих сверху ничего не меняется...

Мой уютный бложик... заходите!
Контактная информация:
Друг Кота
Аватара пользователя
Сообщения: 3385
Зарегистрирован: Пн окт 11, 2010 19:00:08

Сообщение Мурик »

ARV писал(а):настроить WD на прерывание
Belerafon писал(а):mega8
В ATmega8 сторожевой таймер не поддерживает прерывания. Для этого нужен ATmega88 или подобный.
ARV
Ум, честь и совесть. И скромность.
Аватара пользователя
Сообщения: 18785
Зарегистрирован: Чт дек 28, 2006 08:19:56
Откуда: Новочеркасск

Сообщение ARV »

Мурик писал(а):В ATmega8 сторожевой таймер не поддерживает прерывания.
ну невнимательный я, старею видимо... :dont_know:
если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе
при взгляде на многих сверху ничего не меняется...

Мой уютный бложик... заходите!
Контактная информация:
Встал на лапы
Сообщения: 110
Зарегистрирован: Вс май 10, 2009 18:23:45

Сообщение Belerafon »

Подскажите в спящем режиме Power-Save переменные сбрасываются?
Это не хвост, это антенна
Сообщения: 1492
Зарегистрирован: Ср июн 25, 2008 15:19:44

Сообщение Demiurg »

Belerafon писал(а):Подскажите в спящем режиме Power-Save переменные сбрасываются?
Нет. Это же не сброс. При аппаратном сбросе сбрасывается: регистры общего назначения, регистры ввода-вывода. SRAM не сбрасывается. Очистка ОЗУ задача программиста и компиляторов.
Контактная информация:
akl
Друг Кота
Сообщения: 4468
Зарегистрирован: Пт мар 07, 2008 06:54:43
Откуда: Ижевск

Сообщение akl »

Замечу.
Demiurg писал(а):При аппаратном сбросе сбрасывается: регистры общего назначения...
РОН, не сбрасываются
Demiurg писал(а):Очистка ОЗУ задача программиста и компиляторов.
Зачем чистить ОЗУ после аппаратного сброса? Совершенно бестолковая задача.
ARV
Ум, честь и совесть. И скромность.
Аватара пользователя
Сообщения: 18785
Зарегистрирован: Чт дек 28, 2006 08:19:56
Откуда: Новочеркасск

Сообщение ARV »

akl писал(а):Зачем чистить ОЗУ после аппаратного сброса? Совершенно бестолковая задача.
речь идет о том, что если надо - то это должен делать программист.

в частности, Си автоматически заполняет нулями все глобальные (не register) переменные до входа в main, что формально эквивалентно "после сброса МК"
если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе
при взгляде на многих сверху ничего не меняется...

Мой уютный бложик... заходите!
Контактная информация:
Это не хвост, это антенна
Сообщения: 1492
Зарегистрирован: Ср июн 25, 2008 15:19:44

Сообщение Demiurg »

akl писал(а):РОН, не сбрасываются
По РОН может и ошибочно написал, позже проверю. Регистры ввода-вывода устанавливаются при сбросе на значения по умолчанию.
akl писал(а):Зачем чистить ОЗУ после аппаратного сброса? Совершенно бестолковая задача.
Выше ответили.
Контактная информация:
VAT
Встал на лапы
Сообщения: 90
Зарегистрирован: Вс дек 20, 2015 21:03:39

Сообщение VAT »

после почти написания кода на асме пытаюсь выловить глюк как то связанный со Sleep.
в основном МК в режиме PowerSave. При этом он просыпается по асинхронному таймеру, собирает данные и инициирует прерывание EEPROM, чтобы если что изменилось записать.

Если я читаю EPPROM с помощью Казамы - я там вижу эти данные в том виде как должно быть.
Если я перевожу МК в режим Idle для чтения данных по компорту - данные в ЕЕПРОМ съезжают, или вообще портятся. За пределы отведенного места в ЕЕПРОМ не выходят впрочем.

То что МЕГА 48PA может работать с ЕЕПРОМ в PowerSave я выяснил опытным путем, хотя табличка даташит говорит обратное. Но табличка даташит противоречит и абзацу описания режима в части прерываний PinChange - они тоже как бы не должны работать.

Как бы понять - где правда? Может есть какие-то хитрости если меняешь режим сна по ходу?
akl
Друг Кота
Сообщения: 4468
Зарегистрирован: Пт мар 07, 2008 06:54:43
Откуда: Ижевск

Сообщение akl »

VAT писал(а):Но табличка даташит противоречит и абзацу описания режима в части прерываний PinChange - они тоже как бы не должны работать.
Прерывание Pin Change у ATmega48 работает во всех режимах сна.
ATmega48_SLEEP.PNG
VAT
Встал на лапы
Сообщения: 90
Зарегистрирован: Вс дек 20, 2015 21:03:39

Сообщение VAT »

48pa.jpg
(194.65 КБ) 378 скачиваний
akl писал(а):
VAT писал(а):Но табличка даташит противоречит и абзацу описания режима в части прерываний PinChange - они тоже как бы не должны работать.
Прерывание Pin Change у ATmega48 работает во всех режимах сна.
Вложение ATmega48_SLEEP.PNG больше недоступно
Да - по факту в Powersave - Pinchange работает. Хотя по приведенной вами таблице в которую и я смотрю - не должны (см ссылку 3 под таблицей). А в пояснения к режиму PS опять должно. Согласен - видимо в таблице ошибка.
Но - запись по прерыванию EEprom ready тоже работает по факту. Хотя по таблице - не должно. Разница в потреблении c idle - 300раз - не заметить невозможно.

Интересно - могут ЧипДип торговать какими нибудь "усовершенствованными" микросхемами?
Не хотелось бы полагаться на такую фичу.
Ответить

Вернуться в «AVR»