LINUX.ORG.RU

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

Исправление Zubok, (текущая версия) :

// не понимаю зачем rize и fall смотреть одновременно,
// отрубил rise

А вот это как раз и есть обработка дребезга. Представь себе модель дребезга, когда у тебя дребезг заднего фронта идет. Вопрос: сколько у тебя срабатываний? Три! А если ты оба фронта обрабатываешь, то у тебя будет m_position +1-1+1-1+1 - итого +1. Но это слишком наивная обработка, так как счетчик принимает неправильные значения в процессе обработки и есть вероятность считать неправильное значение.

                        здесь дребезг

                  --------+ ++ ++
 pinA (interrupt)         | || ||
                          +-++-++----------------
                      +--------------------+     
 pinB                 |                    |     
                  ----+                    +-----

Исправление Zubok, :

// не понимаю зачем rize и fall смотреть одновременно,
// отрубил rise

А вот это как раз и есть обработка дребезга. Представь мебе модель дребезга, когда у тебя дребезг заднего фронта идет. Вопрос: сколько у тебя срабатываний? Три! А если ты оба фронта обрабатываешь, то у тебя будет m_position +1-1+1-1+1 - итого +1. Но это слишком наивная обработка, так как счетчик принимает неправильные значения в процессе обработки и есть вероятность считать неправильное значение.

                        здесь дребезг

                  --------+ ++ ++
 pinA (interrupt)         | || ||
                          +-++-++----------------
                      +--------------------+     
 pinB                 |                    |     
                  ----+                    +-----

Исправление Zubok, :

// не понимаю зачем rize и fall смотреть одновременно,
// отрубил rise

А вот это как раз и есть обработка дребезга. Представь мебе модель дребезга, когда у тебя дребезг заднего фронта идет. Вопрос, сколько у тебя срабатываний? Три! А если ты оба фронта обрабатываешь, то у тебя будет m_position +1-1+1-1+1 - итого +1. Но это слишком наивная обработка, так как счетчик принимает неправильные значения в процессе обработки и есть вероятность считать неправильное значение.

                        здесь дребезг

                  --------+ ++ ++
 pinA (interrupt)         | || ||
                          +-++-++----------------
                      +--------------------+     
 pinB                 |                    |     
                  ----+                    +-----

Исправление Zubok, :

// не понимаю зачем rize и fall смотреть одновременно,
// отрубил rise

А вот это как раз и есть обработка дребезга. Представь мебе модель дребезга, когда у тебя дребезг заднего фронта идет. Вопрос, сколько у тебя срабатываний? Три! А если ты оба фронта обрабатываешь, то у тебя будет m_position +1-1+1-1+1 - итого +1.

                        здесь дребезг

                  --------+ ++ ++
 pinA (interrupt)         | || ||
                          +-++-++----------------
                      +--------------------+     
 pinB                 |                    |     
                  ----+                    +-----

Исходная версия Zubok, :

// не понимаю зачем rize и fall смотреть одновременно,
// отрубил rise

А вот это как раз и есть обработка дребезга. Представь мебе модель дребезга, когда у тебя дребезг заднего фронта идет. Вопрос, сколько у тебя срабатываний? Три! А если ты оба фронта обрабатываешь, то у тебя будет m+position +1-1+1-1+1 - итого +1.

                        здесь дребезг

                  --------+ ++ ++
 pinA (interrupt)         | || ||
                          +-++-++----------------
                      +--------------------+     
 pinB                 |                    |     
                  ----+                    +-----