|
|
|
|
picmaniac: Почему она нарушится? Работа устройства для пользователя должна остаться такой же. А уж сколько раз кнопки проверять и как - это забота программиста. Я имел ввиду другое. Мы же теперь можем прекращать "бегущий огонь" в любой момент, если кнопка отпущена, не дожидаясь конца цикла сдвига. Это (+) или (-)? Точно также, не дожидаясь конца пробегания огня, при нажатии второй кнопки, можно сразу зажигать два средних светодиода. Опять же, преимущество это или нет? Что касается нарушения работы, то ведь теперь и одновременное нажатие и отпускание двух кнопок будет обрабатываься с задержкой. Что касается проверок, мне думается при таком раскладе (0, 50, 100 мс) фактически будет две проверки, 0 не в счет. Может все-таки проверок побольше, а период прерываний поменьше? А ведь можно и бегущий огонь сделать в прерываниях, считая эти самые прерывания в самих прерываниях. Тогда уж вообще ресурсы основной программы освободятся. Мне кажется, что это даже будет более поучительно, ведь "простой" бег. огонь-то мы уже реализовывали. |
|
|
Zandy: Может все-таки проверок побольше, а период прерываний поменьше? Вообще-то, думаю, достаточно и одной проверки по истечении 100 мс. Кнопку ведь нажимает человек, а не робот. И если через 100 мс после обнаружения нажатия кнопка остаётся нажатой можно считать, что это нажатие, а не помеха. |
|
|
Да, с расчётом я наглюкал неслабо... Это всё пиво! Сегодня не буду больше ничего считать. |
|
|
А что вы скажете про это: http://www.chip-news.ru/archive/chipnews/200203/Article_05.pdf Аппаратная реализация антидребезга, по сути очень похожая на нашу. А в принципе мне все равно, как и что делать, лишь бы побыстрее начать программу писать. А то ведь забуду всё, чему научили. Так что жду окончательного решения по Т.З. от "мэтров" МК. |
|
|
А вот еще. 61193.doc |
|
|
SAK: Вообще-то, думаю, достаточно и одной проверки по истечении 100 мс. Кнопку ведь нажимает человек Так-то оно так...И на вашем столе макетик будет безотказно щелкать... Но ведь Вы поставили кнопочки подешевле? А...в реальных условиях девайса, со временем (и достаточно быстро), дребезг будет увеличиваться. А не дай Бог, во влажной среде побывает.. Тут учимся ресурсы расходовать рационально. Но кому понадобится рациональность без нормальной достоверности? Если только с макетками поиграться... Мой скромный опыт заставил меня усвоить: минимально 4 проверки, нормально 8, - где дрянные контакты со временем могут быть или небрежная эксплуатация. Чтобы потом голова не болела. Кстати, тут неплохая аналогия с UART (RS232), там в самом простом аппаратном варианте минимум трижды сканируется временная зона бита для принятия решения "0" или "1".
|
|
|
Zandy: А вот еще. Ну вот, тут даже до 50 раз... Если пойти далее в чащу по кнопкам.. Существует еще один прием для повышения надежности работы кнопок в малопотребляющих девайсах. Ессно если схема это позволяет.Там подтяжки на многокилоомных резисторах или вовсе без них. Экономия! Ток кнопки слишком мал. И перед окончательным принятием решения этот вход делают выходом и кратковременно туда еденичку тыкают. Контроллеру ничего не будет. А если после такой пробы контакт остается в нуле, значит действительно нолик... Ну это просто на заметку, сейчас делать это не надо.....
|
|
|
Zandy: Что касается нарушения работы, то ведь теперь и одновременное нажатие и отпускание двух кнопок будет обрабатываься с задержкой. А почему? Обработка одной кнопки с исполнением,- всяко до десятков микросекунд. Zandy: А ведь можно и бегущий огонь сделать в прерываниях, считая эти самые прерывания в самих прерываниях.. ОТЛИЧНО Zandy! ПРОЦЕСС ПОШЕЛ!!.... И в этом-же прерывании ВСЕ текущие нажатия обрабатываются и все решения принимаются... Кстати, на этом-же прерывании можно и часики реального времени сваять..без индикации ессно, для внутренних нужд. И что забавно, даже после кнопок и часиков, ресурсов еще навалом будет, даже в самом простом контроллере...
|
|
|
Vlad_Petr: Но кому понадобится рациональность без нормальной достоверности? В данном задании бороться с дребезгом не требуется вообще, он здесь никак не повлияет на работу устройства, но задержка необходима для того, что бы заметить одновременное нажатие кнопок. А если хотим сделать систему пуска ядерной ракеты и нужна надежность 200%, то даже 1000 проверок будет недостаточно, как минимум надо ставить кнопки с переключением как это делается в устройствах с RS триггером. Зачем решать несуществующие проблемы? |
|
|
SAK: Зачем решать несуществующие проблемы? Понятно! Вам такие проблемы еще никогда не встречались...
|
|
|
|
|