Цитата Сообщение от SBorovkov Посмотреть сообщение
Итого - логика такая - таймер считает время, пока нога в верхнем положении. Для этого использует переменную - счетчик WaveLength.
Когда таймер обнаруживает, что нога в нижнем положении, она копирует WaveLength в CalcedWaveLength, а WaveLength очищает.

А почему считаем, пока нога в верхнем положении? Мне кажется более правильным считать пока не будет перепада с единицы на ноль. Ведь бит кодируется так: сначала низкий уровень, потом высокий. Обе половинки одинаковые по продолжительности (в теории). Но это половинки одного бита.

Короткий по продолжительности - значит единица. Длинный - ноль.