Subversion Repositories Code-Repo

Rev

Details | Last modification | View Log | RSS feed

Rev Author Line No. Line
223 Kevin 1
#include <xc.h>
2
#include "main.h"
3
#include "L3G.h"
4
#include "I2C.h"
5
 
6
void L3G_Init(void) {
7
    char c[2] = {L3G_CTRL_REG1, 0x0F};
8
    I2C_Master_Send(ADDRESS_GYRO, &c, 2);
9
    while (!I2C_Get_Status());
10
}
11
 
12
void L3G_Read_Gyro(char *x_L, char *x_H,
13
                   char *y_L, char *y_H,
14
                   char *z_L, char *z_H) {
15
    char result, length, buffer[10];
16
 
17
    // Assert the MSB to autoincrement address
18
    char c = L3G_OUT_X_L | (1 << 7);
19
 
20
    I2C_Master_Restart(ADDRESS_GYRO, c, 6);
21
    do {
22
        result = I2C_Get_Status();
23
    } while (!result);
24
 
25
    // Read received data
26
    length = I2C_Read_Buffer(buffer);
27
 
28
    // Data is received in low-high byte order
29
    *x_L = buffer[0];
30
    *x_H = buffer[1];
31
    *y_L = buffer[2];
32
    *y_H = buffer[3];
33
    *z_L = buffer[4];
34
    *z_H = buffer[5];
35
}