Спасибо , уже что-то по делу! Но все же, что не так с кодом и какая переменная должна быть volatile?volatile так же как register - входят в стандарт - и не надо радовать злобных троллей своей безграмотностью.
Спасибо , уже что-то по делу! Но все же, что не так с кодом и какая переменная должна быть volatile?volatile так же как register - входят в стандарт - и не надо радовать злобных троллей своей безграмотностью.
В этот момент происходит прерывание, оно снова берет Х из памяти, увеличивает ее и записывает в память, после выхода с прерывания, регистр восстанавливается но в нем хранится старое значение переменной.оператор X++; X загрузится из памяти и значение поместится в X
а в регистре X
Если совсем на пальцах, тоЧто не так ?
2)компилятор оптимизировал код и поскольку в основной программе переменная не меняется загнал ее в константу
Реакция "должна" быть на нажатие кнопки, так что FALLING здесь подходит.1)Прерывание по отпусканию кнопки это RISING, а не FALLING, как у вас
Вопрос: как вывести на HTML страницу значение переменной, которая будет накапливать количество срабатывания геркона?
можно поспоритьРеакция "должна" быть на нажатие кнопки,
Конкретно в этой задаче неважно запрещать прерывания или нет, такой дребезг как вы описали отфильтруется в любом случае, либо прерывание повторно не сработает, либо сработает, но запишет так, что никто не прочтёт, имхо.т е дребезг автоматом фильтруется.
Спасибо за подсказку попробую использовать такой фильтр.
Хорошо будет работать в сигнализации.По мне так срабатывание геркона - это его замыкание и размыкание. Полный цикл.
Я стараюсь выставить флаг, обработка в основном цикле.вообще-то в колбеке я всегда в начале запрещаю прерывание а в конце разрешаю. А ВЫ?
Не нравиться мне такая идея.В случае указанном вами это даже хорошо
так как означает что был дребезг и переменная изменится лишь на 1
т е дребезг автоматом фильтруется.
Жесть какая! Как можно в ISR добавлять задержки???3) добавить внутрь прерывания небольшую задержку delay(DELAY), где DELAY подобрать экспериментально от 2 до 20.
Зато можно потом сказать, что ничего такого и не писал. Шулерство чистой воды.[off]П.с.а за чем вы свои посты удаляете? Трудно потом слдедить за дискуссией.[/off]
Вы ему дали грабли, на которые он тут же и наступил. И получил ожидаемый результат (дребезг). И так ничего и не понял.Я дал человеку конкретные варианты решения его проблемы. А вы лишь рассказы про что?
я же пометил что это простейший не оптимальный вариант. Так делать в прерывании нельзя, но сначала разговор шёл о цикле. Там можно.Жесть какая! Как можно в ISR добавлять задержки???
вряд ли ТС понял, что вы написали, имхо.Нормально задержка от дребезга делается:
1) В прерывании нажатия или отжатия запрещаем это самое прерывание, и взводим таймер на прерывание через время > максимальной длительности дребезга;
2) В прерывании таймера запрещаем это самое прерывание, и заново разрешаем прерывание от нажатия или отжатия.
Пожалуй соглашусьвряд ли ТС понял, что вы написали, имхо.
В колбеке, не запрещая прерывания, устанавливаете переменную флаг в true.(типа knopka_nazata=trueсодержательно.
А в чём тут защита от дребезга?В колбеке, не запрещая прерывания, устанавливаете переменную флаг в true.(типа knopka_nazata=true
(дребезг контактов кнопки сбросить ее не может)
А в чём тут защита от дребезга?
Дребезг нажатия сбросить её не сможет, но дребезг отжатия установить - сможет. Итого: knopka_nazata=true будет при нажатиях, а иногда и при отжатиях.
См: https://esp8266.ru/forum/threads/es...mennoj-na-web-stranice.3774/page-3#post-55719
Обоснуйте.Ваш совет очевидно для дуринщиков, но и для них использование задержек при работе WiFi - плохой совет.