lkml.org 
[lkml]   [2013]   [Oct]   [4]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
/
From
Subject[PATCH v2 0/2] rotary-encoder: Add new interruption handler
Date
Some rotary-encoder devices (such as those with detents) are capable
of producing a stable event on each step. This simple patch adds support
for this case, by implementing a new interruption handler.

The handler needs only detect the direction of the turn and generate
an event according to this detection.

We encode the previous and the current state, and then use the sum of them
to decide on the direction of the turn, according to the following simple
table:

Previous state + currrent state | Movement
==========================================
0b1101 | clockwise
0b0100 | ..
0b0010 | ..
0b1011 | ..
==========================================
0b1110 | counter-clockwise
0b0111 | ..
0b0001 | ..
0b1000 | ..

(The other sumed values are considered illegal)

This calculation is based on some previous work found at this blog:

http://bildr.org/2012/08/rotary-encoder-arduino/

The result is a seemingly very robust behavior, with a truly simple
implementation, that produces an event on each turn of the device.

Thanks!

Ezequiel Garcia (2):
Input: rotary-encoder: Add 'stepped' irq handler
input: rotary-encoder: Add 'on-each-step' to binding documentation

.../devicetree/bindings/input/rotary-encoder.txt | 1 +
drivers/input/misc/rotary_encoder.c | 41 ++++++++++++++++++++++
include/linux/rotary_encoder.h | 1 +
3 files changed, 43 insertions(+)

--
1.8.1.5



\
 
 \ /
  Last update: 2013-10-04 15:01    [W:0.065 / U:3.004 seconds]
©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site