|
Как распознать кратковременное выключение на Tiny13, Управление режимами фонарика кнопкой питания |
|
|
|
 |
Ответов
(45 - 59)
Guest_@Ark_*
|
Jan 5 2010, 18:34
|
Guests

|
Цитата Если топикстартер подключался программатором, стирал исходную программу, заливал свою и его программа работала, то я таки думаю, что он правильно идентифицировал микроконтроллер... Безусловно. Осталось дождаться подтверждения этого факта топикстартером. И опубликования точной схемы, для конструктивного продолжения дискуссии...
|
|
|
|
|
Jan 5 2010, 20:29
|
Местный
  
Группа: Свой
Сообщений: 475
Регистрация: 14-04-05
Из: Москва
Пользователь №: 4 140

|
Цитата Безусловно. Осталось дождаться подтверждения этого факта топикстартером. И опубликования точной схемы, для конструктивного продолжения дискуссии... Извини, но рисовать схему я не буду. Из неизвестного там только номинал конденсатора, но его я дома померить не могу - тупо нечем. Все остальное на 200% соответствует моему словеcному описанию. Укол про PIC, будем считать, я пропустил мимо ушей.
|
|
|
|
|
Jan 5 2010, 20:59
|
Гуру
     
Группа: Участник
Сообщений: 3 834
Регистрация: 14-06-06
Из: Moscow, Russia
Пользователь №: 18 047

|
Я все ж подозреваю (на 90%), что дело в сохранении содержимого памяти и после BOR. Пока из приведенных диаграмм вовсе не очевидно поведение напряжения на конденсаторе, поскольку "нуля" не видно (смотреть, само собой, надо по крайней мере 10-мегаомным делителем), как там дальше, за 1.8V ? Для пробы зашунтировать цепь питания у "прототипа" (сотню килоом) - переключение режимов должно бы перестать работать... А емкость вполне можно оценить - или скопом и хоть каким генератором прямоугольника, либо с помощью звуковой карты компьютера.
Сообщение отредактировал rx3apf - Jan 5 2010, 21:01
|
|
|
|
|
Jan 5 2010, 21:43
|
Местный
  
Группа: Свой
Сообщений: 475
Регистрация: 14-04-05
Из: Москва
Пользователь №: 4 140

|
Цитата(galjoen @ Jan 4 2010, 20:14)  1. Выделяем и в ОЗУ и в EEPROM по две 8-ми байтных переменных. 1-ю пару назовём ConstR (ОЗУ) и ConstE (EEPROM), а 2-ю соответственно VarR и VarE. 2. При запуске побитно сравниваем ConstR с ConstE и VarR с VarE. Считаем кол-во отличающихся бит. ConstN и VarN соответственно. 3. Если ConstN > 0.8*VarN, то {времени от выключения прошло много; ConstE=ConstR; VarE=VarR; VarR=!VarR; } иначе{времени от выключения прошло мало; ConstE=ConstR; VarR=!VarE;}
Как алгоритм? Не совсем понятна физика процесса. Вот берем мы две ячейки ОЗУ. После включения они с точностью до 6-7 бит стремятся к одному значению. Теперь начинаем одной переменной давать сильное воздействие посредством инвертирования битов, а вторую не трогаем. Чем больше бит совпало в той что "теребили" тем дольше было выключено питание. А вот зачем в процессе участвует ConstR ? Ведь у неё ожидается достаточно стабильное значение ConstN?
|
|
|
|
|
Jan 5 2010, 22:21
|
Местный
  
Группа: Свой
Сообщений: 475
Регистрация: 14-04-05
Из: Москва
Пользователь №: 4 140

|
Цитата Я все ж подозреваю (на 90%), что дело в сохранении содержимого памяти и после BOR. Пока из приведенных диаграмм вовсе не очевидно поведение напряжения на конденсаторе, поскольку "нуля" не видно (смотреть, само собой, надо по крайней мере 10-мегаомным делителем), как там дальше, за 1.8V ? Для пробы зашунтировать цепь питания у "прототипа" (сотню килоом) - переключение режимов должно бы перестать работать... А емкость вполне можно оценить - или скопом и хоть каким генератором прямоугольника, либо с помощью звуковой карты компьютера. Там же две диаграммы. На одной из них развернуто на 80 мс после выключения и видно, что через 35 мс напряжение уже упало совсем. Оно ненулевое, но это особенности ключа, через который я подаю импульсы питания для измерений. Если выключать кнопкой, то оно естественно до нуля падает. Ну пусть еще на 5 мс дольше - это погоды не делает. Щуп 10 МОм - тут подвоха не стоит искать. По крайней мере, изменения диаграммы в зависимомсти от программы я вижу хорошо. Точное значение ёмкости, как мне кажется, непринципиально. Видно же, что запитать от неё микроконтроллер на время, соизмеримое со временем размыкания и замыкания кнопки человеком не получается. Изобретать из-за этого измерительный стенд дома не очень хочется. Обещаю, на работе в понедельник измерю - делов то на 1 минуту, когда приборы есть. Дома у меня даже паяльника чтобы 0603 паять нет.
|
|
|
|
|
Jan 5 2010, 22:23
|
Знающий
   
Группа: Свой
Сообщений: 841
Регистрация: 10-05-07
Из: Чебоксары (Россия)
Пользователь №: 27 640

|
Цитата(VladislavS @ Jan 6 2010, 00:43)  Не совсем понятна физика процесса. Вот берем мы две ячейки ОЗУ. После включения они с точностью до 6-7 бит стремятся к одному значению. Теперь начинаем одной переменной давать сильное воздействие посредством инвертирования битов, а вторую не трогаем. Чем больше бит совпало в той что "теребили" тем дольше было выключено питание. А вот зачем в процессе участвует ConstR ? Ведь у неё ожидается достаточно стабильное значение ConstN? ConstN это база. У разных микросхем, и при разных включениях одной микросхемы, число "плавающих" бит может существенно различатся. Исходим из предположения, что на биты, из которых состоят, ConstR и VarR эти факторы влияют одинаково. Вам же не хочется для каждого фонарика ставить эксперименты с определением именно его значения ConstN. И изменять это число в программе. Вот для самонастройки на конкретный образец и используется ConstR. Алгоритм я несколько упростил. Реально у меня ConstR и VarR являлись разными битами одного байта. Т.е. это были 2 битовые строки, в перемешанном виде размещённые в ОЗУ. Наверно непонятно. Объясню на примере. Если представить ОЗУ как битовую строку, то биты относящиеся к ConstR и VarR размещались случайным (заданным 1 раз при написании программы) образом, например, так: ccvcvvcc cvvvccvc vccvvvcv cvcvccvv и т.д где "c" биты, относящиеся к ConstR, а "v" биты, относящиеся к VarR. Подредактировал из-за описок.
|
|
|
|
Guest_@Ark_*
|
Jan 5 2010, 22:39
|
Guests

|
Цитата Извини, но рисовать схему я не буду. Когда чел. задает вопрос и отказывается представить схему, то разговаривать не о чем ...
|
|
|
|
|
Jan 5 2010, 22:45
|
Гуру
     
Группа: Участник
Сообщений: 3 834
Регистрация: 14-06-06
Из: Moscow, Russia
Пользователь №: 18 047

|
Цитата(VladislavS @ Jan 6 2010, 01:21)  Видно же, что запитать от неё микроконтроллер на время, соизмеримое со временем размыкания и замыкания кнопки человеком не получается. Изобретать из-за этого измерительный стенд дома не очень хочется. И все ж предлагаю сделать простейший эксперимент (но именно с "прототипом", т.е. с платой, где прошивка не менялась) - зашунтировать питание сотней килоом. Если работа переключателя при этом не изменилась - то почти наверняка что-то со статистикой переброса битов памяти, непосредственно с питанием не связанной. Если перестало работать - банальное сохранение содержимого... Могу, в принципе, проверить то же самое с обломком моего драйвера, но там наверняка не tiny13 (иначе зачем бы там еще и отдельный EEPROM), а вот логика, скорее всего, похожая...
|
|
|
|
|
Jan 5 2010, 23:01
|
Местный
  
Группа: Свой
Сообщений: 475
Регистрация: 14-04-05
Из: Москва
Пользователь №: 4 140

|
Цитата И все ж предлагаю сделать простейший эксперимент (но именно с "прототипом", т.е. с платой, где прошивка не менялась) - зашунтировать питание сотней килоом. В понедельник. Дома нет возможности. Цитата Когда чел. задает вопрос и отказывается представить схему, то разговаривать не о чем ... Когда человек не способен на слух воспринять схему из одной микросхемы, одного диода, одного конденсатора и двух резисторов, то разговаривать действительно не о чем ...
|
|
|
|
Guest_@Ark_*
|
Jan 5 2010, 23:27
|
Guests

|
Цитата Когда человек не способен на слух воспринять схему из одной микросхемы, одного диода, одного конденсатора и двух резисторов, то разговаривать действительно не о чем ... Когда человек не способен точно померить емкости и резисторы в схеме, и при этом задает вопросы, то разговаривать, действительно, не о чем...
|
|
|
|
|
Jan 6 2010, 10:53
|
Гуру
     
Группа: Участник
Сообщений: 3 834
Регистрация: 14-06-06
Из: Moscow, Russia
Пользователь №: 18 047

|
Цитата(stells @ Jan 6 2010, 13:30)  так автор несколько раз писал, что питание намного быстрее падает, чем требуется. если вот только содержимое хранится за счет собственной емкости ячеек? Писать-то писал... Просто я _очень_ сомневаюсь, что напряжение спадает до "настоящего" нуля в том случае, когда питается только микроконтроллер. После того, как все провалилось ниже предела работоспособности, потребление должно резко упасть и "остаток" может позволить продержаться содержимому памяти какое-то время. Уж чего проще - зашунтировать питание и посмотреть поведение ? Нет под рукой резистора - ну мультиметром на низких пределах, в конце концов...
|
|
|
|
Guest_@Ark_*
|
Jan 6 2010, 11:02
|
Guests

|
Цитата @Ark, номиналы резисторов я указал дважды. Резисторы это такие маленькие черненикие детальки прямоугольной формы - номиналы написаны прямо на них.. Конденнсатор мой опыт позволяет идентифицировать как 0.1-1 мкФ, а померить без паяльника дома просто нечем. Если не умеешь читать, то не встревай, пожалуйста, со своими PIC-ми. А тип МК тоже "на глаз" определили? По цвету корпуса?
|
|
|
|
|
  |
2 чел. читают эту тему (гостей: 2, скрытых пользователей: 0)
Пользователей: 0
|
|
|