LINUX.ORG.RU

История изменений

Исправление 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. Это, разумеется, если раскомментировать то, что закомментировано. Изначальный же, закомментированный вариант подвержен подсчету дребезга и просто никуда не годится.