Buenas soy nuevo en el foro y estoy trabajando con el sensor de MPU6050 Controlado ONU de la estafa pic con el compilador PicBasicPro y agradeceria Mucho Alguna ayuda Que pudieran ofrecerme, El problema Es Que CUANDO carga El Programa una foto millas y Mando a imprimir los Datos del MPU6050 una millas en solitario LCD Pantalla mí Muestra el valor "257" es de Todos los ejes (X, Y y Z) no se que tendra mi Problema programacion, aqui se las dejo... Gracias...
'****************************************************************
'* Name : UNTITLED.BAS *
'* Author : [select VIEW...EDITOR OPTIONS] *
'* Notice : Copyright (c) 2017 [select VIEW...EDITOR OPTIONS] *
'* : All Rights Reserved *
'* Date : 24/01/2017 *
'* Version : 1.0 *
'* Notes : *
'* : *
'****************************************************************
''''''''''''''''''''''CONFIGURACION DEL OSCILADOR'''''''''''''''''''''''''''''
DEFINE I2C_SLOW 1 'Cuando en la transferencia es utilizado un
'oscilador menor a 8 Mhz
define osc 4
'''''''''''''''''''''SYMBOL A LOS PUERTOS''''''''''''''''''''' ''''''''''''''''
symbol SDA = PORTB.0 'Le damos un alias a los puertos
symbol SCL = PORTB.1
Symbol T1200 = 1 'Velocidad de transmision bps
''''''''''''''''''''''PUERTOS I/O'''''''''''''''''''''''''''''''''''''''''''''''
TRISB = %00000000
PORTC = %01000000
PORTD = %00000000
''''''''''''''''''''''CONFIGURACION DE LA LCD'''''''''''''''''''''''''''''''''''
DEFINE LCD_DREG PORTD ' Indica que el Bus estará conectado en el Puerto D
DEFINE LCD_BITS 4 ' El bus será de cuatro bits.
DEFINE LCD_DBIT 4 ' Selección del Bit de inicio del puerto en el uC para el
' bus de datos de la LCD
DEFINE LCD_RSREG PORTD ' Indica al uC que el pin "RS" estará en el Puerto D
DEFINE LCD_RSBIT 2 ' "RS" estará conectado en RD2
DEFINE LCD_EREG PORTD ' Indica al uC que el pin "E" estará en el Puerto D
DEFINE LCD_EBIT 3 ' "E" estará conectado en RD3
Lcdout $fe, 1 ' Limpia la pantalla
'''''''''''''''''''''''''''DECLARACION DE VARIABLES'''''''''''''''''''''''''''''
READ_ACX VAR WORD
READ_ACY VAR WORD
READ_ACZ VAR WORD
READ_GYX VAR Word
READ_GYY VAR Word
READ_GYZ VAR Word
''''''''''''''''''''''''Declaracion de direcciones a usar'''''''''''''''''''''''
I2C_ADDRESS con $68 'Establecer conexion con el MPU6050 mandando a (AD0 = 0)
PWR_MGMT_1 con $6B 'Registro para el reset del MPU6050
CONFIG_ con $1A 'Configuracion de la velocidad de muestreo del ADC
GYRO_CONFIG con $1B 'Configuracion para establecer conexion con el giroscopio
ACCEL_CONFIG con $1C 'Configuracion para establecer conexion con el acelerometro
'I2C_SLV0_ADDR con $25
''''''''''''''''''''''''''''H/L DEL ACELEROMETRO''''''''''''''''''''''''''''''''
ACCEL_XOUT_H con $3B 'Habilitar lectura del Ac. en el eje X
ACCEL_XOUT_L con $3C 'Desabilitar lectura del Ac. en el eje X
ACCEL_YOUT_H con $3D 'Habilitar lectura del Ac. en el eje Y
ACCEL_YOUT_L con $3E 'Desabilitar lectura del Ac. en el eje Y
ACCEL_ZOUT_H con $3F 'Habilitar lectura del Ac. en el eje Z
ACCEL_ZOUT_L con $40 'Desabilitar lectura del Ac. en el eje Z
'''''''''''''''''''''''''''H/L DEL GIROSCOPIO'''''''''''''''''''''''''''''''''''
GYRO_XOUT_H con $43 'Habilitar lectura del Gy. en el eje X
GYRO_XOUT_L con $44 'Desabilitar lectura del Gy. en el eje X
GYRO_YOUT_H con $45 'Habilitar lectura del Gy. en el eje Y
GYRO_YOUT_L con $46 'Desabilitar lectura del Gy. en el eje Y
GYRO_ZOUT_H con $47 'Habilitar lectura del Gy. en el eje Z
GYRO_ZOUT_L con $48 'Desabilitar lectura del Gy. en el eje Z
Inicio:
'''''''''''''CONFIGURACION PARA LA ESTABLECER CONEXION CON LA IMU'''''''''''''''
I2CWrite SDA, SCL, I2C_ADDRESS, PWR_MGMT_1, [%10000000] 'Reset del dispositivo
pause 100
I2CWrite SDA, SCL, I2C_ADDRESS, PWR_MGMT_1, [%00000000] 'Inicialiazacion
pause 100
I2CWrite SDA, SCL, I2C_ADDRESS, CONFIG_, [%00000100] 'Config. vel. de muestreo
pause 100
I2CWrite SDA, SCL, I2C_ADDRESS, GYRO_CONFIG, [%000000001] 'Config del Gy.
pause 100
I2CWrite SDA, SCL, I2C_ADDRESS, ACCEL_CONFIG, [%11100000] 'Config del Ac.
pause 100
'''''''''''''''''LECTURA DE LOS DATOS OBTENIDOS DE LA AC''''''''''''''''''''''''
I2Cread SDA, SCL, I2C_ADDRESS, ACCEL_XOUT_H, [READ_ACX.HighByte] 'High lectura del AcX
pause 100
I2Cread SDA, SCL, I2C_ADDRESS, ACCEL_XOUT_L, [READ_ACX.lowByte] 'Low lectura del AcX
pause 100
I2Cread SDA, SCL, I2C_ADDRESS, ACCEL_YOUT_H, [READ_ACY.HighByte] 'High lectura del AcY
pause 100
I2Cread SDA, SCL, I2C_ADDRESS, ACCEL_YOUT_L, [READ_ACY.lowByte] 'Low lectura del AcY
pause 100
I2Cread SDA, SCL, I2C_ADDRESS, ACCEL_ZOUT_H, [READ_ACZ.HighByte] 'High lectura del AcZ
pause 100
I2Cread SDA, SCL, I2C_ADDRESS, ACCEL_ZOUT_L, [READ_ACZ.lowByte] 'Low lectura del AcZ
pause 100
'''''''''''''''''LECTURA DE LOS DATOS OBTENIDOS DEL GY''''''''''''''''''''''''''
I2Cread SDA, SCL, I2C_ADDRESS, GYRO_XOUT_H, [READ_GYX.HighByte] 'High lectura del GyX
pause 100
I2Cread SDA, SCL, I2C_ADDRESS, GYRO_XOUT_L, [READ_GYX.lowByte] 'Low lectura del GyX
pause 100
I2Cread SDA, SCL, I2C_ADDRESS, GYRO_YOUT_H, [READ_GYY.HighByte] 'High lectura del GyY
pause 100
I2Cread SDA, SCL, I2C_ADDRESS, GYRO_YOUT_L, [READ_GYY.lowByte] 'Low lectura del GyY
pause 100
I2Cread SDA, SCL, I2C_ADDRESS, GYRO_ZOUT_H, [READ_GYZ.HighByte] 'High lectura del GyY
pause 100
I2Cread SDA, SCL, I2C_ADDRESS, GYRO_ZOUT_L, [READ_GYZ.lowByte] 'Low lectura del GyY
pause 100
Lcdout $fe, 1 ' Limpia la pantalla
Lcdout $fe,2 ' Inicio de la primera línea.
LCDOUT "X=",SDec READ_GYX,$FE,2,$FE,$14,$FE,$14,$FE,$14,$FE,$14,$FE,$14,$FE,$14,$FE,$14,$FE,$14, "Y=",SDec READ_GYY," "
LCDOUT $FE,$C0,"Z=",SDec READ_GYZ,$FE,$C0+7,$FE,$C0+8
goto inicio
end