Перейти к содержанию
    

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

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

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

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

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

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

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

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

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

 

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

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

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

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

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

 

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

поддерживаю МП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
поддерживаю МП41, идея достойная жизни...

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

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

 

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

 

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

 

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Гость @Ark
Такой вариант мне в голову приходил...

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

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

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

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

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

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

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

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

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

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

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

только надо разумно использовать ресурс EEPROM, "размазать" его...

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

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

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

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

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Фото фанарика можно?

 

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Гость
Эта тема закрыта для публикации ответов.
×
×
  • Создать...