Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- VOID LEER_EJE (INT n){ //lee los 3 ejes del acelerómetro
- i2c_start(); //inicio transmicion I2C
- i2c_write(I2C_ESCRIBIR); //envío la dirección de esclavo con el bit de escritura W
- i2c_write(EJEX); //envío el eje a leer
- i2c_start(); //condición repetida de start
- i2c_write(I2C_LEER); //envío la dirección del esclavo con el bit de lectura R
- // Leemos el byte de cada eje
- EJE_X = i2c_read(1); //leo primer eje, devuelvo ACK
- EJE_Y = i2c_read(1); //leo segundo eje, devuelvo ACK
- EJE_Z = i2c_read(0); //leo tercer eje, no devuelvo ACK (NAK) para indicar que es el ultimo eje que leo
- //Nota: no envio a cada rato el nuevo eje que quiero leer porque el acelerómetro
- //autoincrementa la dirección cada vez que se lee
- i2c_stop(); //finalizo transmición
- }
- // Como configurar el MMA7660
- //Configuración del acelerómetro
- mma7660_mode(0b00000000); //acelerometro en stand-by para la escritura de los registros
- mma7660_spcnt(0b00000000); //sin sleep-count
- mma7660_intsu(0b00000000); //sin interrupciones de ningún tipo
- mma7660_pdet(0b11100000); //sin tap-detection
- mma7660_sr(0b00010100); //32 muestras por segundo, sin TILT debounce filter
- mma7660_pd(0b00000000); //No tap detection debounce count enabled
- mma7660_srst(0b00000001); //sample rate especificado en AMSRS
- mma7660_mode(0b11000001); //acelerometro activo, interrupcion activa = 0
- delay_ms(30); //tiempo que demora el acelerometro para pasar de modo sleep a activo
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement