Size: a a a

2020 November 29

AC

Anton Cherkesov in Catethysis
bilka00
Ваще зависит от ситуации, иногда удобно програмно, иногда апаратно
Ага, спасибо, сделал вот так пока:

   int i;

   while (1) {
       if (HAL_GPIO_ReadPin(GPIOA, GPIO_PIN_0)) {
           i++;
       }
       if (i > 100 && !HAL_GPIO_ReadPin(GPIOA, GPIO_PIN_0)) {
           HAL_GPIO_TogglePin(GPIOE, GPIO_PIN_0);
           HAL_GPIO_TogglePin(GPIOE, GPIO_PIN_1);
           HAL_GPIO_TogglePin(GPIOE, GPIO_PIN_2);
           HAL_GPIO_TogglePin(GPIOE, GPIO_PIN_3);
           i = 0;
       }
   }

Работает как надо.
источник

🦊

🦊 in Catethysis
Anton Cherkesov
Ага, спасибо, сделал вот так пока:

   int i;

   while (1) {
       if (HAL_GPIO_ReadPin(GPIOA, GPIO_PIN_0)) {
           i++;
       }
       if (i > 100 && !HAL_GPIO_ReadPin(GPIOA, GPIO_PIN_0)) {
           HAL_GPIO_TogglePin(GPIOE, GPIO_PIN_0);
           HAL_GPIO_TogglePin(GPIOE, GPIO_PIN_1);
           HAL_GPIO_TogglePin(GPIOE, GPIO_PIN_2);
           HAL_GPIO_TogglePin(GPIOE, GPIO_PIN_3);
           i = 0;
       }
   }

Работает как надо.
Только делать так не надо
источник

AC

Anton Cherkesov in Catethysis
🦊
Только делать так не надо
😕
источник

b

bilka00 in Catethysis
не худший вариант
источник

b

bilka00 in Catethysis
хоть код неблокирующий)
источник

🦊

🦊 in Catethysis
bilka00
не худший вариант
Да так-то один из худших
источник

🦊

🦊 in Catethysis
Anton Cherkesov
Ага, спасибо, сделал вот так пока:

   int i;

   while (1) {
       if (HAL_GPIO_ReadPin(GPIOA, GPIO_PIN_0)) {
           i++;
       }
       if (i > 100 && !HAL_GPIO_ReadPin(GPIOA, GPIO_PIN_0)) {
           HAL_GPIO_TogglePin(GPIOE, GPIO_PIN_0);
           HAL_GPIO_TogglePin(GPIOE, GPIO_PIN_1);
           HAL_GPIO_TogglePin(GPIOE, GPIO_PIN_2);
           HAL_GPIO_TogglePin(GPIOE, GPIO_PIN_3);
           i = 0;
       }
   }

Работает как надо.
Кроме того, он не рабочий
источник

AC

Anton Cherkesov in Catethysis
🦊
Кроме того, он не рабочий
У меня работает.
источник

🦊

🦊 in Catethysis
Anton Cherkesov
У меня работает.
Типичная отговорка говнокодера
Уж сорян
источник

🦊

🦊 in Catethysis
У тебя буфер накопительный обнуляется только в случае i>100 и "кнопка отпущена"
Т.е. дребезг от вибраций будет накапливать буфер и рано или поздно "кнопка" сработает сама по себе
источник

🦊

🦊 in Catethysis
Возьми на тесты разъебаную кнопку или вибродатчик с пружинкой — и тупо тряси в руке
Похер с какой амплитудой, хоть час
Но когда накопится 100 — "кнопка сработает"
источник

🦊

🦊 in Catethysis
Хотя это тупо дребезг
источник

🦊

🦊 in Catethysis
Если такое костылять — то по таймауту
А конкретно колво тиков с момента старта чипа
источник

b

bilka00 in Catethysis
скользящий фильтр нужен вот и все
источник

b

bilka00 in Catethysis
имхо
источник

🦊

🦊 in Catethysis
bilka00
скользящий фильтр нужен вот и все
Ресурсы жрать будет зря
Самый лучший вариант — аппаратный фильтр
источник

🦊

🦊 in Catethysis
А если мало пинов или прерываний — PCF8575 или PCF8574 в зубы
источник

b

bilka00 in Catethysis
Ну ресурсы да, будет жрать постоянно
источник

b

bilka00 in Catethysis
+ коэфициенты прийдется коректировать в зависимости от скорости работы контроллера и тяжести кода
источник

AC

Anton Cherkesov in Catethysis
🦊
Типичная отговорка говнокодера
Уж сорян
Че за токс
Я только плату себе купил, мне нужен софтверный дебаунс, я себе его сделал.
источник