Кнопки и кнопочный интерфейс

Обсуждаем контроллеры компании Atmel.
Ответить
Мудрый кот
Аватара пользователя
Сообщения: 1802
Зарегистрирован: Ср сен 07, 2011 21:40:30

Сообщение Flasher »

RS решает лучше.
А еще лучше https://datasheets.maximintegrated.com/ ... AX6818.pdf
Реклама
Прорезались зубы
Аватара пользователя
Сообщения: 225
Зарегистрирован: Сб янв 14, 2012 22:53:50

Сообщение philosoraptor »

против этого я и хотел выступить - 1) ты сделал 2 коротких нажатия, а получил одно длинное, т.к. второе нажатие совпало с вторым опросом, 2) даже если надо одно короткое, но выверенное по времени, то это будет сложно сделать т.к. система будет ожидать 2го замера, чтобы убедиться, что нажатие было коротким, и вообще система будет казаться тормознутой (по той же причине).
В отличие от диванных теоретиков, никогда не писавших ничего сложнее диммеров и регуляторов вентилятора для уборной, у меня есть вполне рабочие проекты с многоуровневыми меню. Пример для Прот.8 ниже.
Попробуй вызвать в нем длинное нажатие двумя короткими и расскажи, как оно. Ну а неспособным написать простейший автомат состояний никто не запрещает юзать задержки, благо, в серию эти поделки никогда не пойдут.
prot_rem_v2.7z
(44.02 КБ) 269 скачиваний
Реклама
Друг Кота
Аватара пользователя
Сообщения: 7016
Зарегистрирован: Вс июл 12, 2009 19:15:29
Откуда: Ижевск

Сообщение pyzhman »

Не в тему. Не перестаю умиляться:
[uquote="Jack_A",url="/forum/viewtopic.php?p=3280241#p3280241"]...об delay ...[/uquote]
Об ледовом побоище.
Docendo discimus
Контактная информация:
ARV
Ум, честь и совесть. И скромность.
Аватара пользователя
Сообщения: 18757
Зарегистрирован: Чт дек 28, 2006 08:19:56
Откуда: Новочеркасск

Сообщение ARV »

philosoraptor писал(а):у меня есть вполне рабочие проекты с многоуровневыми меню.
вау! :shock: :))) :facepalm:
если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе
при взгляде на многих сверху ничего не меняется...

Мой уютный бложик... заходите!
Контактная информация:
Реклама
Эиком - электронные компоненты и радиодетали
Друг Кота
Аватара пользователя
Сообщения: 6331
Зарегистрирован: Вт апр 24, 2007 07:45:40
Откуда: Minsk

Сообщение Jack_A »

ozonn писал(а):не вижу ничего плохого в применении _delay где бы то ни было и уж тем более для подавления дребезга :)
Это пройдет со временем, наверно.
Изображение
Реклама
Вымогатель припоя
Сообщения: 522
Зарегистрирован: Чт янв 21, 2016 15:59:10

Сообщение ozonn »

[uquote="Jack_A",url="/forum/viewtopic.php?p=3280784#p3280784"]
ozonn писал(а):не вижу ничего плохого в применении _delay где бы то ни было и уж тем более для подавления дребезга :)
Это пройдет со временем, наверно.[/uquote]
я вас умоляю... :))
вот скажите мне, пожалуйста, если мне нужна задержка в 10 мкс, что мне делать? Таймер использовать? :))
Реклама
Друг Кота
Аватара пользователя
Сообщения: 7077
Зарегистрирован: Пт ноя 11, 2016 05:48:09
Откуда: Сердце Пармы

Сообщение Ivanoff-iv »

я так для себя и решил delay_us(); можно, если осторожно, а вот delay_ms(); это уже перебор.
Для тех, кто не учил магию мир полон физики :)
Безграмотно вопрошающим про силовую или высоковольтную электронику я не отвечаю, а то ещё посадят за участие в (само)убиении оболтуса...
Вымогатель припоя
Сообщения: 522
Зарегистрирован: Чт янв 21, 2016 15:59:10

Сообщение ozonn »

[uquote="Ivanoff-iv",url="/forum/viewtopic.php?p=3281133#p3281133"]я так для себя и решил delay_us(); можно, если осторожно, а вот delay_ms(); это уже перебор.[/uquote]
представьте себе, что вы инициализируете дисплей, там нужны задержки порядка 200 ms. Тоже использовать таймер? :))

я вот не могу понять, чем для вас так страшен _delay? :)
Друг Кота
Аватара пользователя
Сообщения: 6331
Зарегистрирован: Вт апр 24, 2007 07:45:40
Откуда: Minsk

Сообщение Jack_A »

ozonn писал(а): вот скажите мне, пожалуйста, если мне нужна задержка в 10 мкс, что мне делать? Таймер использовать? :))
Ну зачем же крайности ? Я сам в таких случаях пустой цикл закручиваю. Я о другом: сгенерировали событие, которое откликнется миллисекунд через 10 - тупо ждем? Да за это время кучу арифметики можно обсчитать, а потом спокойно берешь готовый результат.
https://www.youtube.com/watch?v=lNa6i7rXqyQ
Изображение
Вымогатель припоя
Сообщения: 522
Зарегистрирован: Чт янв 21, 2016 15:59:10

Сообщение ozonn »

[uquote="Jack_A",url="/forum/viewtopic.php?p=3281146#p3281146"]
ozonn писал(а): вот скажите мне, пожалуйста, если мне нужна задержка в 10 мкс, что мне делать? Таймер использовать? :))
Ну зачем же крайности ? Я сам в таких случаях пустой цикл закручиваю. Я о другом: сгенерировали событие, которое откликнется миллисекунд через 10 - тупо ждем?[/uquote]
если в это время ничего делать не надо, то да, тупо ждем :)
[uquote="Jack_A",url="/forum/viewtopic.php?p=3281146#p3281146"]Да за это время кучу арифметики можно обсчитать, а потом спокойно берешь готовый результат.[/uquote]
если надо что-то считать, то, конечно надо считать :)
Друг Кота
Аватара пользователя
Сообщения: 7077
Зарегистрирован: Пт ноя 11, 2016 05:48:09
Откуда: Сердце Пармы

Сообщение Ivanoff-iv »

[uquote="ozonn",url="/forum/viewtopic.php?p=3281138#p3281138"]...вы инициализируете дисплей, там нужны задержки порядка 200 ms...[/uquote]то инициализация, она один раз проходит, ради этого таймер расходовать - большее зло :evil:
а вот если семисегментник? - тут неумелое и/или неумеренное использование задержек видно на глаз (причем в прямом смысле :))) )
Для тех, кто не учил магию мир полон физики :)
Безграмотно вопрошающим про силовую или высоковольтную электронику я не отвечаю, а то ещё посадят за участие в (само)убиении оболтуса...
Вымогатель припоя
Сообщения: 522
Зарегистрирован: Чт янв 21, 2016 15:59:10

Сообщение ozonn »

[uquote="Ivanoff-iv",url="/forum/viewtopic.php?p=3281160#p3281160"][uquote="ozonn",url="/forum/viewtopic.php?p=3281138#p3281138"]...вы инициализируете дисплей, там нужны задержки порядка 200 ms...[/uquote]то инициализация, она один раз проходит, ради этого таймер расходовать - большее зло :evil:[/uquote]
дело не в расходовании таймера, а в ненужном расходовании памяти и ненужном усложнении кода.

[uquote="Ivanoff-iv",url="/forum/viewtopic.php?p=3281160#p3281160"]а вот если семисегментник? - тут неумелое и/или неумеренное использование задержек видно на глаз (причем в прямом смысле :))) )[/uquote]
семисегментник, как раз, нужно подсвечивать при помощи прерываний от таймера и тогда ему никакие _delay не помеха :)
Прорезались зубы
Аватара пользователя
Сообщения: 225
Зарегистрирован: Сб янв 14, 2012 22:53:50

Сообщение philosoraptor »

то инициализация, она один раз проходит, ради этого таймер расходовать - большее зло
Вооот, совершенно верно, имо. Бывают эпизодические места в коде, когда городить автомат это явный оверкилл, и там задержка смотрится вполне уместно. К примеру, после записи во внешний епром нужно пожождать 10 мс перед очередным обращением к нему. В моем случае событие редкое, программа вполне может подождать. Впрочем, по образованию я не программист и вполне могу ошибаться.
ARV
Ум, честь и совесть. И скромность.
Аватара пользователя
Сообщения: 18757
Зарегистрирован: Чт дек 28, 2006 08:19:56
Откуда: Новочеркасск

Сообщение ARV »

philosoraptor писал(а):К примеру, после записи во внешний епром нужно пожождать 10 мс перед очередным обращением к нему.
вот из подобных рассуждений обычно и растут ноги того самого применения delay, которое некоторые горячие головы называют абсолютным злом.

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

в частности, завершение записи EEPROM сопровождается падением бита EEPE в регистре EECR - именно эту ситуацию и следует ждать, и, очевидно, ждать ПЕРЕД ТЕМ, КАК ПРИСТУПИТЬ К ЗАПИСИ, а никак не после! аналогично следует поступать и в остальных случаях, например, при работе с ЖКИ1602 - крайне популярный подход "тупых задержек" на время, "достаточное" для реакции контроллера ЖКИ частенько приводит к тому, что самописные "библиотеки" то работают, то не работают... а правильный подход заключается в чтении бита занятости контроллера ЖКИ перед тем, как что-либо туда писать. и тогда задержки (хоть тупые, хоть умные) становятся не нужны, библиотека работает всегда и везде, мир и спокойстве царит повсеместно :)
если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе
при взгляде на многих сверху ничего не меняется...

Мой уютный бложик... заходите!
Контактная информация:
Друг Кота
Аватара пользователя
Сообщения: 7077
Зарегистрирован: Пт ноя 11, 2016 05:48:09
Откуда: Сердце Пармы

Сообщение Ivanoff-iv »

ну вот, пока стригся, АRV про ЕЕПРОМ расписал :) , отвечу про семисегментник: бывает задержки вставляют внутри какого либо прерывания и всё, будет яркость плавать (глобальны прерывания разрешать тоже нужно умеючи - сколько там граблей по переполнению стека найдено новичками - не счесть, причём чаще какраз теми, кто делаями балуется :)) :)) :)) ).
Для тех, кто не учил магию мир полон физики :)
Безграмотно вопрошающим про силовую или высоковольтную электронику я не отвечаю, а то ещё посадят за участие в (само)убиении оболтуса...
Вымогатель припоя
Сообщения: 522
Зарегистрирован: Чт янв 21, 2016 15:59:10

Сообщение ozonn »

[uquote="Ivanoff-iv",url="/forum/viewtopic.php?p=3281240#p3281240"]отвечу про семисегментник: бывает задержки вставляют внутри какого либо прерывания[/uquote]
а бывает, что вместо 220В дают 1000. Но тут речь не о том :))
ARV
Ум, честь и совесть. И скромность.
Аватара пользователя
Сообщения: 18757
Зарегистрирован: Чт дек 28, 2006 08:19:56
Откуда: Новочеркасск

Сообщение ARV »

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

и в доказательство того, что мой подход приносит не вред, а пользу, снова приведу пример алгоритма приема кодов дистанционного управления RC5 (и даже в общем случае - любого стандарта). наверняка вам знакомы реализации с использованием режима захвата таймера, с прерываниями по сигналу с ИК-датчика... и наверняка вы согласитесь, что разобраться во всем этом порой сложно не только начинающему, но и заканчивающему... а вот мой вариант на ТУПЫХ ЗАДЕРЖКАХ - проще только два пальца обсосать! и это работает очень хорошо - в статье сказано о нюансах разработки, но по сравнению с труднопонимаемыми, но "правильными" не тупыми алгоритмами, все это мелочи. в статье есть ссылка и на другую мою статью - о том, как принимать ИК-коды любых (если честно - почти любых) стандартов НА ТУПЫХ ЗАДЕРЖКАХ. хотя можно и без них....

так что всё хорошо, что хорошо :)))
если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе
при взгляде на многих сверху ничего не меняется...

Мой уютный бложик... заходите!
Контактная информация:
Друг Кота
Аватара пользователя
Сообщения: 7077
Зарегистрирован: Пт ноя 11, 2016 05:48:09
Откуда: Сердце Пармы

Сообщение Ivanoff-iv »

я к контроллеру отношусь как к коту: если можно спать, он будет спать.
Для тех, кто не учил магию мир полон физики :)
Безграмотно вопрошающим про силовую или высоковольтную электронику я не отвечаю, а то ещё посадят за участие в (само)убиении оболтуса...
Прорезались зубы
Аватара пользователя
Сообщения: 225
Зарегистрирован: Сб янв 14, 2012 22:53:50

Сообщение philosoraptor »

Мне, к слову, как-то понадобилась либа для ик пультов, самому для написания наглости не хватило, попробовал разные варианты, в т.ч. вариант от многоуважаемого ARV выше, все это было не то, мягко говоря. И когда совсем уж отчаялся найти нужное, мне попалось действительно изящное, на мой взгляд, решение, которое почти ничего не весит, легко портируется в любой код и работает сразу "из коробки".
ARV
Ум, честь и совесть. И скромность.
Аватара пользователя
Сообщения: 18757
Зарегистрирован: Чт дек 28, 2006 08:19:56
Откуда: Новочеркасск

Сообщение ARV »

philosoraptor писал(а):действительно изящное, на мой взгляд, решение
изящное-то оно изящное, но никак не отличает основной код от кода автоповтора. конечно, к теме задержек это не имеет отношения...
кстати, принцип построения алгоритма практически тот же самый, что и у меня, просто реализация на прерываниях.
если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе
при взгляде на многих сверху ничего не меняется...

Мой уютный бложик... заходите!
Контактная информация:
Ответить

Вернуться в «AVR»