- 
	- Че, правда надо необычное? Вот выдрал, надеюсь, не убил идею и красоту   Petrovich(3912 знак., 25.06.2018 15:47,  ) )
- Спасибо всем, но красивого решения по опросу клавиатурной матрицы, я так и не увидел :( - Make_Pic(25.06.2018 05:35)
			- В таймерном прерывании читаю состояние датчиков. Если три (тут зависит от частоты прерываний) раза подряд прочитано одно и то же состояние - считаю что дребезг завершился и прочитано актуальное состояние. Взвожу флаг, в основном цикле разбираю LightElf(45 знак., 25.06.2018 10:22)
- А в чём должна быть красота?  blackprapor(695 знак., 25.06.2018 10:15)
					- Советский писатель Ефремов утверждал, что красота - это лезвие бритвывысшая целесообразность. - VLLV(27.06.2018 06:26)- почему-то в памяти "наивысшая степень целесообразности" Vit(563 знак., 27.06.2018 10:00)
- И вот что с ним стало. - blackprapor(27.06.2018 06:54)
 
- всё верно, у меня именно так всегда. - Лагунов(25.06.2018 10:40)
 
- Советский писатель Ефремов утверждал, что красота - это 
 
- Тупая машина состояний в качестве конечного автомата с таймером на systick. Просто, минималистично, реализуется на любом языке, ничего не стоит по ресурсам. Позволяет легко расширять функционал для обработки сложных действий вроде двойных/тройных evgeniy1294(356 знак., 23.06.2018 12:34 - 12:44)
- Какие то странные пошли просьбы. Стареем :) Люблю минималистические решения. Чтобы не втыкать лишних резисторов, на мегах делаю так:  Гудвин(319 знак., 23.06.2018 12:18)
			- ага, стареем ;) Это все понятно, я больше про сборку кода нажатия из разных битов портов и отработку двух - четырех одновременно нажатий, чтобы компактнее и как ты выразился - "минималистические решения" - Make_Pic(23.06.2018 13:21)
					- для опроса одновременных нажатий нескольких кнопок надо последовательно с каждой кнопкой включить диод, чтобы через контакты кнопок не замыкались между собой шины входов. - =L.A.=(23.06.2018 22:15, ссылка)
							- Знамо дело, но я не про хард, я про код - Make_Pic(24.06.2018 09:31)
- Если одновременных нажатий не более двух, то или диоды, или open-drain линии использовать. Входам, кстати, физически ничего не грозит. А вот замыкая выходы, можно их и из строя вывести. - De_User(24.06.2018 00:20 - 00:53)
 
 
- для опроса одновременных нажатий нескольких кнопок надо последовательно с каждой кнопкой включить диод, чтобы через контакты кнопок не замыкались между собой шины входов. - =L.A.=(23.06.2018 22:15, ссылка)
							
 
- ага, стареем ;) Это все понятно, я больше про сборку кода нажатия из разных битов портов и отработку двух - четырех одновременно нажатий, чтобы компактнее и как ты выразился - "минималистические решения" - Make_Pic(23.06.2018 13:21)
					
- я вот так делаю, в прерываниях от SysTick (каждую 1 мс):  Лагунов(986 знак., 23.06.2018 10:25 - 10:28)
			- А что с защитой от одновременного нажатия нескольких кнопок? - VLLV(23.06.2018 22:09)
					- можно и без диодов. Коммутатор 74НС4051 это обеспечивает - Лагунов(24.06.2018 12:06)
- ->> - =L.A.=(23.06.2018 22:16, ссылка)
 
- Это на чешском? - blackprapor(23.06.2018 11:13)
					- По-олбански. Кстати, начинаю думать, что кубический куб, вероятно, не так уж плох. Всё познаётся в сравнении :-) - SciFi(23.06.2018 12:58)
							- У всех так - сначала тянет блевать, потом втягиваешься, потом жить без этого не можешь. lloyd(78 знак., 23.06.2018 15:13)
- Куб производит двойственное впечатление. С одной стороны, много чего работает. Но уж если не заработало - разобраться трудно. Очень многословно, да и код типа if ( status == ERROR ) { status = ERROR; } меня как-то выводит из равновесия. - йцукен(23.06.2018 13:11)
- Да ты что!!! Опомнись!!! Пока не поздно. Пропадешь ведь ни за что :-) - il-2(23.06.2018 13:01)
 
 
- По-олбански. Кстати, начинаю думать, что кубический куб, вероятно, не так уж плох. Всё познаётся в сравнении :-) - SciFi(23.06.2018 12:58)
							
- ужасы нашего городка (с) )) - lexxx-lexxx(23.06.2018 10:41)
					- там есть лишнее - контроль залипания кнопок. Но я и не претендовал никогда на программиста :-) - Лагунов(23.06.2018 11:07)
							- ключи 4051 - тоже лишнее - =L.A.=(23.06.2018 11:25)
									- двух ножек не хватило - Лагунов(23.06.2018 12:47)
 
 
- ключи 4051 - тоже лишнее - =L.A.=(23.06.2018 11:25)
									
- +1 ) - Make_Pic(23.06.2018 10:48)
 
- там есть лишнее - контроль залипания кнопок. Но я и не претендовал никогда на программиста :-) - Лагунов(23.06.2018 11:07)
							
 
- А что с защитой от одновременного нажатия нескольких кнопок? - VLLV(23.06.2018 22:09)
					
- гугль бесконечно добр - =L.A.=(23.06.2018 07:31, ссылка)
			- pause(10) в прерывании таймера без разрешения вложенных прерываний... Скажите ну зачем я полез по ссылке? - Boвa(23.06.2018 09:55)
					- а ты хотел найти там чемоданчик с деньгами? Функция pause(10) сделана на пустых циклах. Хотя, конечно, прерывание лучше выполнять без лишних задержек. - =L.A.=(23.06.2018 19:13 - 22:02)
- да код там не совсем прямой, но идеи можно взять. А так я до сих пор в поиске (изобретаю "велосипед"). - Make_Pic(23.06.2018 10:01)
							- Лучше тогда так: В прерывании сканируем клавиатуру без delay! (можно в одном прерывании всю, но лучше построчно). Если хоть одна кнопка нажата выдаем код нажатой кнопки в буфер и не сканируем клавиатуру  на время дребезга равного времени  Boвa(100 знак., 23.06.2018 11:21 - 12:06)
									- вроде как дурной тон в прерывание тащить опрос и тормозить постоянно проц. - Make_Pic(23.06.2018 11:43)
											- 1 раз в 1 мсек потратить несколько мксек? - Лагунов(24.06.2018 18:43)
													- Да ничего страшного, если в обработчике прерывания есть короткие задержки. Если время задержки сопоставимо с временем возврата и нового входа в прерывание, всё равно ничего не наэкономишь. Да часто и экономить нет смысла, всё равно процессор  йцукен(37 знак., 24.06.2018 18:51)
															- пока только Вова пугается поставить в прерывании пару десятков nop(); :) - =L.A.=(25.06.2018 16:06)
- у меня опрос клавиатуры в прерывании systick исключительно для простоты. Чтобы где-то лежал, гарантировано туда заходил строго ритмично. Осциллографом специально смотрел - сколько он там топчется. Всего ничего. В принципе я так делал даже с Лагунов(42 знак., 25.06.2018 09:54)
- вы видно не писали обработчики прерываний, что делают кучу математики на 100КГц. - lloyd(24.06.2018 19:42)
 
 
- Да ничего страшного, если в обработчике прерывания есть короткие задержки. Если время задержки сопоставимо с временем возврата и нового входа в прерывание, всё равно ничего не наэкономишь. Да часто и экономить нет смысла, всё равно процессор  йцукен(37 знак., 24.06.2018 18:51)
															
- Не делать задержку, а обходить опрос клавиатуры на время дребезга. UPD А дабы не вставали волосы опрос клавы делать в прерывании по таймеру только один раз в 100 мс. - Boвa(23.06.2018 11:56 - 14:57)
- Если опрос требует минимум врмемени, а RTOS нет, почему бы и не затащить в прерывание? При опросе кнопок в прерывании более точно выдерживается период опроса, за счет этого нет пропусков в определении коротких нажатий и лучше работает антидребезг. - AlexG(23.06.2018 11:52)
 
- 1 раз в 1 мсек потратить несколько мксек? - Лагунов(24.06.2018 18:43)
													
 
- вроде как дурной тон в прерывание тащить опрос и тормозить постоянно проц. - Make_Pic(23.06.2018 11:43)
											
 
- Лучше тогда так: В прерывании сканируем клавиатуру без delay! (можно в одном прерывании всю, но лучше построчно). Если хоть одна кнопка нажата выдаем код нажатой кнопки в буфер и не сканируем клавиатуру  на время дребезга равного времени  Boвa(100 знак., 23.06.2018 11:21 - 12:06)
									
 
- Спасибо, в принципе годно. Мне выдавал гадости (гугля) - видимо зол на меня :) - Make_Pic(23.06.2018 07:43)
 
- pause(10) в прерывании таймера без разрешения вложенных прерываний... Скажите ну зачем я полез по ссылке? - Boвa(23.06.2018 09:55)
					
 
- Че, правда надо необычное? Вот выдрал, надеюсь, не убил идею и красоту   Petrovich(3912 знак., 25.06.2018 15:47,