Jump to content

    
Sign in to follow this  
VladislavS

Как распознать кратковременное выключение на Tiny13

Recommended Posts

Я бы сделал так:

1. Подаётся питание, начинает работать программа.

2. Проверяем сразу же ячейку №2 EEPROM:

- если она равна 0, то режим не меняем, а просто читаем его из ячейки №1 EEPROM.

- если она равна 1, то читаем режим из ячейки №1 EEPROM, инкрементируем, применяем маску и загоняем назад в эту ячейку.

3. Пишем в ячейку №2 единицу.

4. Запускаем таймер, чтобы реализовать задержку, скажем, в 1 секунду (я понимаю, что таймер там один и задействован он на ШИМ, но это не проблема, задержку и без таймера можно сделать).

5. Спустя задержки пишем в ячейку №2 значение 0.

 

Т.е., если контроллер поработает до отключения меньше секунды, то при следующем включении режим сменится.

Share this post


Link to post
Share on other sites
Т.е., если контроллер поработает до отключения меньше секунды, то при следующем включении режим сменится.

Просьба к МП41 и всем остальным, кто сюда пишет. Прежде, чем писать - прочитайте эту тему. Я понимаю, что это трудно т.к. постов много, но всётаки.

А так ещё больше постов станет, и вообще разобраться будет невозможно...

Share this post


Link to post
Share on other sites

Я прочитал всю тему до этого.

 

Если Вас смущает задержка в одну секунду, то это для примера. Её можно сделать хоть в 5 секунд, если опрос АЦП и работа ШИМа идёт через прерывания, то визуально это не повлияет на работу фонаря.

Share this post


Link to post
Share on other sites

поддерживаю МП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);
}

Share this post


Link to post
Share on other sites
Guest @Ark
поддерживаю МП41, идея достойная жизни...

Только, совсем не по теме топика... :)

Share this post


Link to post
Share on other sites
Эту теорию можно было бы "притянуть", если бы в момент пропадания на выходе всегда был "1". А если "0" ?

 

Там же есть возможность измерить напряжение питания. А значит, задолго до умирания перевести ножку в лог. 1

 

При выключении питания быстро отключить АЦП, чтобы не разрядить конденсатор, а при старте - посмотреть, осталось ли там что-нибудь...

 

Такой вариант мне в голову приходил. Но помнится мне, что постоянная времени там хиленькая - раз, второе - как произвести преобразование без внутреннего цикла выборки АЦП? Ибо подключение конденсатора ко входным цепям в момент семплирования (курить диаграммы работы АЦП) , боюсь, приведет к отрицательным результатам. Хотя.. Если в комплексе - собственная емкость висящей в воздухе ножки и конденсатор хранения, то может оказаться вполне-вполне.

Share this post


Link to post
Share on other sites
Guest @Ark
Такой вариант мне в голову приходил...

Это нужно пробовать. К сожалению, Тиньки под рукой нет. А результаты экспериментов на PIC12, боюсь, автор темы не примет. :)

Share this post


Link to post
Share on other sites
Только, совсем не по теме топика... :)

Хм, я - в танке что-ли? :)

Вопрос был у топикстартера, как контроллер определяет кратковременное отключение питания.

Share this post


Link to post
Share on other sites
Guest @Ark
Вопрос был у топикстартера, как контроллер определяет кратковременное отключение питания.

А у Вас получается - кратковременное подключение питания! Дык, кто из нас в танке? :)

Share this post


Link to post
Share on other sites
Хм, я - в танке что-ли?

Спишем на НГ :) Ибо предложил ты алгорит определения кратковременного включения :)

Share this post


Link to post
Share on other sites
Хм, я - в танке что-ли? :)

Вопрос был у топикстартера, как контроллер определяет кратковременное отключение питания.

Ну да, _отключение_. А предложенное решение - как определить кратковременное _включение_. Решение неплохое, кстати - переключение кратковременным разрывом интересно для оперативного управления и оно часто "достает", срабатывая когда не надо (и всякие "шаманства" с сохранением содержимого неудобны непредсказуемым и ненормированным временем реакции, что уще усугубляет - потому я и предлагал отдельный конденсатор с отдельным резистором утечки, и конденсатор взять не керамический, а пленочный, для стабильности). А переключать кратковременным включением удобно для "долговременного" использования, чтобы выбрать режим и им пользоваться, все время не дергая (хотя тоже проблема - короткие световые сигналы кнопкой с прямым кликом уже подавать нельзя), только надо разумно использовать ресурс EEPROM, "размазать" его...

Share this post


Link to post
Share on other sites

Фото фанарика можно? куплю и тоже засяду за измерениями, уж очень как-то мистически все получается.

Share this post


Link to post
Share on other sites
только надо разумно использовать ресурс EEPROM, "размазать" его...

Мои девайсы на AVR, которые имеют загрузчик, переходят в режим загрузчика после двух, следующих друг за другом, кратковременных включений (менее 2 сек). По EEPROM всё "размазано", также поддерживается счётчик включений. НО объяснить пользователю как перевести девайс в режим загрузки крайне сложно. Не всем конечно. Некоторые сразу попадают. Зато другие... Инструкции им не помогают... Переписка через электронную почту тоже. Так они и выключают девайс на 2 секунды... Неделями... Помогает только телефонный звонок и работа с девайсом по командам в реалтайме (в телефонную трубку). Вот поэтому я думаю, а м.б. это более естественно - девайс выключать на 2 секунды. Ну или можно сделать чтобы и так и так в загрузчик он переходил.

Простите за оффтоп.

Share this post


Link to post
Share on other sites
А у Вас получается - кратковременное подключение питания! Дык, кто из нас в танке? :)

А-а-а, ну понятно. Согласен. :) Будем думать дальше над усовершенствованием алгоритма.

Насчет ресурса EEPROM: не думаю, что китайцы сильно об этом беспокоятся. Даже лучше, если фонарик сам "сдохнет" когда-нибудь, чтобы пользователь купил новый.

Share this post


Link to post
Share on other sites
Фото фанарика можно?

 

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

Share this post


Link to post
Share on other sites
Guest
This topic is now closed to further replies.
Sign in to follow this