История изменений
Исправление Zubok, (текущая версия) :
Да, не знаю, обратил ли ты внимание, в моём варианте m_position меняется на 4 за один период сигнала, а в твоём изначальном - на 1 за период.
Небольшая поправочка, если можно: не 1 за период, а 2, один на arise при B=0, другой — на afall при B=1. Это, разумеется, если раскомментировать то, что закомментировано. Изначальный же, закомментированный вариант подвержен подсчету дребезга и просто никуда не годится. Он, да, на 1 увеличивает.
UPD. В принципе, использование того или иного варианта вытекает из компромисса между требуемой точностью и временем, в котором процессор проводит в прерывании (1 vs 2 vs 4 прерывания за период). Да, и плюс к тому: я бы не дал гарантии, что смешение A и B ровно четверть периода. Исполнение может быть другим. Да и duty cycle может быть не 50%. Поэтому надежнее всего в программе с автоматом делить на счетчик на 4.
Исправление Zubok, :
Да, не знаю, обратил ли ты внимание, в моём варианте m_position меняется на 4 за один период сигнала, а в твоём изначальном - на 1 за период.
Небольшая поправочка, если можно: не 1 за период, а 2, один на arise при B=0, другой — на afall при B=1. Это, разумеется, если раскомментировать то, что закомментировано. Изначальный же, закомментированный вариант подвержен подсчету дребезга и просто никуда не годится. Он, да, на 1 увеличивает.
UPD. В принципе, использование того или иного варианта вытекает из компромисса между требуемой точностью и временем, в котором процессор проводит в прерывании (1 vs 2 vs 4 прерывания за период).
Исправление Zubok, :
Да, не знаю, обратил ли ты внимание, в моём варианте m_position меняется на 4 за один период сигнала, а в твоём изначальном - на 1 за период.
Небольшая поправочка, если можно: не 1 за период, а 2, один на arise при B=0, другой — на afall при B=1. Это, разумеется, если раскомментировать то, что закомментировано. Изначальный же, закомментированный вариант подвержен подсчету дребезга и просто никуда не годится. Он, да, на 1 увеличивает.
Исходная версия Zubok, :
Да, не знаю, обратил ли ты внимание, в моём варианте m_position меняется на 4 за один период сигнала, а в твоём изначальном - на 1 за период.
Небольшая поправочка, если можно: не 1 за период, а 2, один на arise при B=0, другой — на afall при B=1. Это, разумеется, если раскомментировать то, что закомментировано. Изначальный же, закомментированный вариант подвержен подсчету дребезга и просто никуда не годится.