diff options
author | Lars-Dominik Braun <lars@6xq.net> | 2014-03-08 17:22:49 +0100 |
---|---|---|
committer | Lars-Dominik Braun <lars@6xq.net> | 2014-03-08 17:22:49 +0100 |
commit | 778e4889e1897c022906c56d0764fe163e24355b (patch) | |
tree | 0076e5e0a5a0674507bb7673bf4f3cb1fdd1060d /gyroscope.c | |
parent | 03dbe661312e9d2e3e379bcd455ddfabc48f95b6 (diff) | |
download | hourglass-778e4889e1897c022906c56d0764fe163e24355b.tar.gz hourglass-778e4889e1897c022906c56d0764fe163e24355b.tar.bz2 hourglass-778e4889e1897c022906c56d0764fe163e24355b.zip |
gyroscope: Rename to gyro
Diffstat (limited to 'gyroscope.c')
-rw-r--r-- | gyroscope.c | 77 |
1 files changed, 0 insertions, 77 deletions
diff --git a/gyroscope.c b/gyroscope.c deleted file mode 100644 index 23fa197..0000000 --- a/gyroscope.c +++ /dev/null @@ -1,77 +0,0 @@ -#include <stdio.h> -#include <avr/io.h> -#include <avr/interrupt.h> -#include <avr/sleep.h> - -#include "i2c.h" -#include "gyroscope.h" - -/* device address */ -#define L3GD20 0b11010100 -/* registers */ -#define L3GD20_WHOAMI 0xf -#define L3GD20_CTRLREG1 0x20 -#define L3GD20_CTRLREG3 0x22 -#define L3GD20_CTRLREG4 0x23 - -#define sleepwhile(cond) \ - sleep_enable (); \ - while (cond) { sleep_cpu (); } \ - sleep_disable (); - -/* the first interrupt is lost */ -volatile bool drdy = true; -volatile int16_t val[3] = {0, 0, 0}; - -/* data ready interrupt - */ -ISR(PCINT0_vect) { - drdy = true; -} - -void gyroscopeInit () { - /* set PB1 to input, with pull-up */ - DDRB = (DDRB & ~((1 << PB1))); - PORTB = (PORTB | (1 << PB1)); - /* enable interrupt PCI0 */ - PCICR = (1 << PCIE0); - /* enable interrupts on PB1/PCINT1 */ - PCMSK0 = (1 << 1); -} - -/* XXX: make nonblocking */ -void gyroscopeStart () { - /* configuration: - * disable power-down-mode - * defaults - * enable drdy interrupt - * select 500dps - */ - uint8_t data[] = {0b00001111, 0b0, 0b00001000, 0b00010000}; - - if (!twRequest (TWM_WRITE, L3GD20, L3GD20_CTRLREG1, data, - sizeof (data)/sizeof (*data))) { - printf ("cannot start write\n"); - } - sleepwhile (twr.status == TWST_WAIT); - printf ("final twi status was %i\n", twr.status); -} - -bool gyroscopeRead () { - if (drdy) { - drdy = false; - - if (!twRequest (TWM_READ, L3GD20, 0x28, (uint8_t *) val, 6)) { - printf ("cannot start read\n"); - } - - return true; - } else { - return false; - } -} - -volatile const int16_t *gyroscopeGet () { - return val; -} - |