TS-7680 Accelerometer: Difference between revisions
(Created accelerometer page) |
No edit summary |
||
Line 5: | Line 5: | ||
If other peripherals, such as mice, keyboards, or other HID devices are attached at boot, then this device may change. | If other peripherals, such as mice, keyboards, or other HID devices are attached at boot, then this device may change. | ||
In order to read from the accelerometer it must first be enabled: | In order to read from the accelerometer it must first be enabled: | ||
Line 25: | Line 24: | ||
apt-get update | apt-get update | ||
apt-get install evtest | apt-get install evtest | ||
evtest /dev/ | evtest /dev/input/event0 | ||
</source> | </source> | ||
Latest revision as of 15:57, 27 October 2016
This SBC contains an NXP MMA8451 3-axis accelerometer. It is connected to the kernel as an input device and can be accessed through the input event layers. The kernel driver is only polling and the accelerometer's IRQs are not supported. The accelerometer supports a ±2, ±4, and ±8 g dynamically selectable scale.
On a stock system with no other peripherals attached, the accelerometer will show up as
/dev/input/event0
If other peripherals, such as mice, keyboards, or other HID devices are attached at boot, then this device may change.
In order to read from the accelerometer it must first be enabled:
echo 1 > /sys/devices/virtual/input/input0/enable
The scale mode can be changed by writing a 0 (±2 g), 1 (±4 g), or 2 (±8 g) to the scalemode sys file:
#Set the scale mode to 8 g
echo 2 > /sys/devices/virtual/input/input0/scalemode
Note that the input0 above may change if other input devices are present in the system.
From here, a tool such as 'evtest' can be installed and run to verify output:
apt-get update
apt-get install evtest
evtest /dev/input/event0
The 'evtest' command will have output similar to the following:
Event: time 1466445467.909559, -------------- EV_SYN ------------ Event: time 1466445468.029557, type 3 (EV_ABS), code 0 (ABS_X), value -123 Event: time 1466445468.029557, type 3 (EV_ABS), code 1 (ABS_Y), value -35 Event: time 1466445468.029557, type 3 (EV_ABS), code 2 (ABS_Z), value 16294 Event: time 1466445468.029557, -------------- EV_SYN ------------ Event: time 1466445468.149557, type 3 (EV_ABS), code 1 (ABS_Y), value -17 Event: time 1466445468.149557, type 3 (EV_ABS), code 2 (ABS_Z), value 16224 Event: time 1466445468.149557, -------------- EV_SYN ------------ Event: time 1466445468.269598, type 3 (EV_ABS), code 0 (ABS_X), value -149 Event: time 1466445468.269598, -------------- EV_SYN ------------ Event: time 1466445468.389560, type 3 (EV_ABS), code 1 (ABS_Y), value -48 Event: time 1466445468.389560, type 3 (EV_ABS), code 2 (ABS_Z), value 16416
Readings from the accelerometer are read from the kernel input event interface. The linux documentation for the input system as well as event types are the best resource for creating an application to read from the device:
https://www.kernel.org/doc/Documentation/input/input.txt
https://www.kernel.org/doc/Documentation/input/event-codes.txt
Additionally, the Openmoko documentation has a great breakdown of the input event data:
http://wiki.openmoko.org/wiki/Accelerometer_data_retrieval#Data_structure