mp41 0 7 января, 2010 Опубликовано 7 января, 2010 · Жалоба Я бы сделал так: 1. Подаётся питание, начинает работать программа. 2. Проверяем сразу же ячейку №2 EEPROM: - если она равна 0, то режим не меняем, а просто читаем его из ячейки №1 EEPROM. - если она равна 1, то читаем режим из ячейки №1 EEPROM, инкрементируем, применяем маску и загоняем назад в эту ячейку. 3. Пишем в ячейку №2 единицу. 4. Запускаем таймер, чтобы реализовать задержку, скажем, в 1 секунду (я понимаю, что таймер там один и задействован он на ШИМ, но это не проблема, задержку и без таймера можно сделать). 5. Спустя задержки пишем в ячейку №2 значение 0. Т.е., если контроллер поработает до отключения меньше секунды, то при следующем включении режим сменится. Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
galjoen 0 7 января, 2010 Опубликовано 7 января, 2010 · Жалоба Т.е., если контроллер поработает до отключения меньше секунды, то при следующем включении режим сменится. Просьба к МП41 и всем остальным, кто сюда пишет. Прежде, чем писать - прочитайте эту тему. Я понимаю, что это трудно т.к. постов много, но всётаки. А так ещё больше постов станет, и вообще разобраться будет невозможно... Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
mp41 0 7 января, 2010 Опубликовано 7 января, 2010 · Жалоба Я прочитал всю тему до этого. Если Вас смущает задержка в одну секунду, то это для примера. Её можно сделать хоть в 5 секунд, если опрос АЦП и работа ШИМа идёт через прерывания, то визуально это не повлияет на работу фонаря. Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
andrik.kiev.ua 0 7 января, 2010 Опубликовано 7 января, 2010 · Жалоба поддерживаю МП41, идея достойная жизни, правда еепром дергаем часто. void main() { unsigned char mode; mode = read_mode_from_ee(); set_lighting_mode(mode); mode++; write_mode_to_ee(mode); wait_one_second(); mode--; write_mode_to_ee(mode); while(1); } Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Гость @Ark 7 января, 2010 Опубликовано 7 января, 2010 · Жалоба поддерживаю МП41, идея достойная жизни... Только, совсем не по теме топика... :) Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Rst7 5 7 января, 2010 Опубликовано 7 января, 2010 · Жалоба Эту теорию можно было бы "притянуть", если бы в момент пропадания на выходе всегда был "1". А если "0" ? Там же есть возможность измерить напряжение питания. А значит, задолго до умирания перевести ножку в лог. 1 При выключении питания быстро отключить АЦП, чтобы не разрядить конденсатор, а при старте - посмотреть, осталось ли там что-нибудь... Такой вариант мне в голову приходил. Но помнится мне, что постоянная времени там хиленькая - раз, второе - как произвести преобразование без внутреннего цикла выборки АЦП? Ибо подключение конденсатора ко входным цепям в момент семплирования (курить диаграммы работы АЦП) , боюсь, приведет к отрицательным результатам. Хотя.. Если в комплексе - собственная емкость висящей в воздухе ножки и конденсатор хранения, то может оказаться вполне-вполне. Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Гость @Ark 7 января, 2010 Опубликовано 7 января, 2010 · Жалоба Такой вариант мне в голову приходил... Это нужно пробовать. К сожалению, Тиньки под рукой нет. А результаты экспериментов на PIC12, боюсь, автор темы не примет. :) Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
mp41 0 7 января, 2010 Опубликовано 7 января, 2010 · Жалоба Только, совсем не по теме топика... :) Хм, я - в танке что-ли? :) Вопрос был у топикстартера, как контроллер определяет кратковременное отключение питания. Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Гость @Ark 7 января, 2010 Опубликовано 7 января, 2010 · Жалоба Вопрос был у топикстартера, как контроллер определяет кратковременное отключение питания. А у Вас получается - кратковременное подключение питания! Дык, кто из нас в танке? :) Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
VladislavS 39 7 января, 2010 Опубликовано 7 января, 2010 · Жалоба Хм, я - в танке что-ли? Спишем на НГ :) Ибо предложил ты алгорит определения кратковременного включения :) Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
rx3apf 0 7 января, 2010 Опубликовано 7 января, 2010 · Жалоба Хм, я - в танке что-ли? :) Вопрос был у топикстартера, как контроллер определяет кратковременное отключение питания. Ну да, _отключение_. А предложенное решение - как определить кратковременное _включение_. Решение неплохое, кстати - переключение кратковременным разрывом интересно для оперативного управления и оно часто "достает", срабатывая когда не надо (и всякие "шаманства" с сохранением содержимого неудобны непредсказуемым и ненормированным временем реакции, что уще усугубляет - потому я и предлагал отдельный конденсатор с отдельным резистором утечки, и конденсатор взять не керамический, а пленочный, для стабильности). А переключать кратковременным включением удобно для "долговременного" использования, чтобы выбрать режим и им пользоваться, все время не дергая (хотя тоже проблема - короткие световые сигналы кнопкой с прямым кликом уже подавать нельзя), только надо разумно использовать ресурс EEPROM, "размазать" его... Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
andrik.kiev.ua 0 7 января, 2010 Опубликовано 7 января, 2010 · Жалоба Фото фанарика можно? куплю и тоже засяду за измерениями, уж очень как-то мистически все получается. Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
galjoen 0 7 января, 2010 Опубликовано 7 января, 2010 · Жалоба только надо разумно использовать ресурс EEPROM, "размазать" его... Мои девайсы на AVR, которые имеют загрузчик, переходят в режим загрузчика после двух, следующих друг за другом, кратковременных включений (менее 2 сек). По EEPROM всё "размазано", также поддерживается счётчик включений. НО объяснить пользователю как перевести девайс в режим загрузки крайне сложно. Не всем конечно. Некоторые сразу попадают. Зато другие... Инструкции им не помогают... Переписка через электронную почту тоже. Так они и выключают девайс на 2 секунды... Неделями... Помогает только телефонный звонок и работа с девайсом по командам в реалтайме (в телефонную трубку). Вот поэтому я думаю, а м.б. это более естественно - девайс выключать на 2 секунды. Ну или можно сделать чтобы и так и так в загрузчик он переходил. Простите за оффтоп. Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
mp41 0 7 января, 2010 Опубликовано 7 января, 2010 · Жалоба А у Вас получается - кратковременное подключение питания! Дык, кто из нас в танке? :) А-а-а, ну понятно. Согласен. :) Будем думать дальше над усовершенствованием алгоритма. Насчет ресурса EEPROM: не думаю, что китайцы сильно об этом беспокоятся. Даже лучше, если фонарик сам "сдохнет" когда-нибудь, чтобы пользователь купил новый. Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
VladislavS 39 7 января, 2010 Опубликовано 7 января, 2010 · Жалоба Фото фанарика можно? http://www.dealextreme.com/products.dx/category.940 - выбирай :) 99% из них с торцевой кнопкой. Так что, те что многорежимные и те что с памятью это оно. http://www.dealextreme.com/details.dx/sku.6190 - отдельно драйвер. http://www.dealextreme.com/details.dx/sku.7612 - отдельно драйвер. Думаю что вот эти точно с таким драйвером: http://www.dealextreme.com/details.dx/sku.32720 http://www.dealextreme.com/details.dx/sku.15335 Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться