|
|
  |
Как распознать кратковременное выключение на Tiny13, Управление режимами фонарика кнопкой питания |
|
|
|
Jan 7 2010, 11:51
|

4 синих кубика
   
Группа: Участник
Сообщений: 526
Регистрация: 19-09-08
Из: полупроводника, металла и стекла
Пользователь №: 40 326

|
Я бы сделал так: 1. Подаётся питание, начинает работать программа. 2. Проверяем сразу же ячейку №2 EEPROM: - если она равна 0, то режим не меняем, а просто читаем его из ячейки №1 EEPROM. - если она равна 1, то читаем режим из ячейки №1 EEPROM, инкрементируем, применяем маску и загоняем назад в эту ячейку. 3. Пишем в ячейку №2 единицу. 4. Запускаем таймер, чтобы реализовать задержку, скажем, в 1 секунду (я понимаю, что таймер там один и задействован он на ШИМ, но это не проблема, задержку и без таймера можно сделать). 5. Спустя задержки пишем в ячейку №2 значение 0.
Т.е., если контроллер поработает до отключения меньше секунды, то при следующем включении режим сменится.
--------------------
p-n-p-p-n-p-n-n-p-n-p структура однако очень эффективна
|
|
|
|
|
Jan 7 2010, 12:16
|
Знающий
   
Группа: Свой
Сообщений: 841
Регистрация: 10-05-07
Из: Чебоксары (Россия)
Пользователь №: 27 640

|
Цитата(МП41 @ Jan 7 2010, 14:51)  Т.е., если контроллер поработает до отключения меньше секунды, то при следующем включении режим сменится. Просьба к МП41 и всем остальным, кто сюда пишет. Прежде, чем писать - прочитайте эту тему. Я понимаю, что это трудно т.к. постов много, но всётаки. А так ещё больше постов станет, и вообще разобраться будет невозможно...
|
|
|
|
|
Jan 7 2010, 12:43
|
Участник

Группа: Участник
Сообщений: 36
Регистрация: 23-07-08
Пользователь №: 39 167

|
поддерживаю МП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); }
|
|
|
|
Guest_@Ark_*
|
Jan 7 2010, 12:51
|
Guests

|
Цитата поддерживаю МП41, идея достойная жизни... Только, совсем не по теме топика...
|
|
|
|
|
Jan 7 2010, 12:51
|

Йа моск ;)
     
Группа: Модераторы
Сообщений: 4 345
Регистрация: 7-07-05
Из: Kharkiv-city
Пользователь №: 6 610

|
Цитата Эту теорию можно было бы "притянуть", если бы в момент пропадания на выходе всегда был "1". А если "0" ? Там же есть возможность измерить напряжение питания. А значит, задолго до умирания перевести ножку в лог. 1 Цитата При выключении питания быстро отключить АЦП, чтобы не разрядить конденсатор, а при старте - посмотреть, осталось ли там что-нибудь... Такой вариант мне в голову приходил. Но помнится мне, что постоянная времени там хиленькая - раз, второе - как произвести преобразование без внутреннего цикла выборки АЦП? Ибо подключение конденсатора ко входным цепям в момент семплирования (курить диаграммы работы АЦП) , боюсь, приведет к отрицательным результатам. Хотя.. Если в комплексе - собственная емкость висящей в воздухе ножки и конденсатор хранения, то может оказаться вполне-вполне.
--------------------
"Практика выше (теоретического) познания, ибо она имеет не только достоинство всеобщности, но и непосредственной действительности." - В.И. Ленин
|
|
|
|
Guest_@Ark_*
|
Jan 7 2010, 12:56
|
Guests

|
Цитата Такой вариант мне в голову приходил... Это нужно пробовать. К сожалению, Тиньки под рукой нет. А результаты экспериментов на PIC12, боюсь, автор темы не примет.
|
|
|
|
Guest_@Ark_*
|
Jan 7 2010, 13:09
|
Guests

|
Цитата Вопрос был у топикстартера, как контроллер определяет кратковременное отключение питания. А у Вас получается - кратковременное подключение питания! Дык, кто из нас в танке?
|
|
|
|
|
Jan 7 2010, 13:13
|
Местный
  
Группа: Свой
Сообщений: 475
Регистрация: 14-04-05
Из: Москва
Пользователь №: 4 140

|
Цитата Хм, я - в танке что-ли? Спишем на НГ  Ибо предложил ты алгорит определения кратковременного включения
|
|
|
|
|
Jan 7 2010, 13:15
|
Гуру
     
Группа: Участник
Сообщений: 3 834
Регистрация: 14-06-06
Из: Moscow, Russia
Пользователь №: 18 047

|
Цитата(МП41 @ Jan 7 2010, 16:01)  Хм, я - в танке что-ли?  Вопрос был у топикстартера, как контроллер определяет кратковременное отключение питания. Ну да, _отключение_. А предложенное решение - как определить кратковременное _включение_. Решение неплохое, кстати - переключение кратковременным разрывом интересно для оперативного управления и оно часто "достает", срабатывая когда не надо (и всякие "шаманства" с сохранением содержимого неудобны непредсказуемым и ненормированным временем реакции, что уще усугубляет - потому я и предлагал отдельный конденсатор с отдельным резистором утечки, и конденсатор взять не керамический, а пленочный, для стабильности). А переключать кратковременным включением удобно для "долговременного" использования, чтобы выбрать режим и им пользоваться, все время не дергая (хотя тоже проблема - короткие световые сигналы кнопкой с прямым кликом уже подавать нельзя), только надо разумно использовать ресурс EEPROM, "размазать" его...
|
|
|
|
|
Jan 7 2010, 13:17
|
Участник

Группа: Участник
Сообщений: 36
Регистрация: 23-07-08
Пользователь №: 39 167

|
Фото фанарика можно? куплю и тоже засяду за измерениями, уж очень как-то мистически все получается.
|
|
|
|
|
Jan 7 2010, 13:37
|
Знающий
   
Группа: Свой
Сообщений: 841
Регистрация: 10-05-07
Из: Чебоксары (Россия)
Пользователь №: 27 640

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

4 синих кубика
   
Группа: Участник
Сообщений: 526
Регистрация: 19-09-08
Из: полупроводника, металла и стекла
Пользователь №: 40 326

|
Цитата(@Ark @ Jan 7 2010, 15:09)  А у Вас получается - кратковременное подключение питания! Дык, кто из нас в танке?  А-а-а, ну понятно. Согласен.  Будем думать дальше над усовершенствованием алгоритма. Насчет ресурса EEPROM: не думаю, что китайцы сильно об этом беспокоятся. Даже лучше, если фонарик сам "сдохнет" когда-нибудь, чтобы пользователь купил новый.
--------------------
p-n-p-p-n-p-n-n-p-n-p структура однако очень эффективна
|
|
|
|
|
  |
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|